Java Web 2.0 Niftiness

I must sound like someone who just discovered America, but… Since I got to experiment with Spring, TestNG, serialization, Java6’s support for annotations and ExtJS, I’m enjoying developing web applications. I’m sure the novelty will wear off soon enough. I’ll meet that perfect bug that will drive me crazy and I’ll learn to hate all this Web 2.0 stuff. But in the meantime, I’m happy. Why?

Spring

Spring by itself intrigues me, and looks like an elegantly designed web framework. I’m still learning to use and understand it. Its forcing me to learn about design patterns and different forms of programming that I’m not used to. I know about Visitors, Factories, and other basic patterns from university. I’ve worked with Model-View-Controller (MVC) on previous professional projects. But Dependency Injection and Inversion of Control are totally new beasts for me. That and I need overcome my aversion to trusting a complex system to configure itself.

TestNG

I have not seriously worked in test driven development since university. I’ve done the occasional unit test suite with JUnit. TestNG feels more refined than JUnit and cleaner. What excites me the most is the prospect of working systematically with unit tests. Passing a battery of tests, reassures me that my code works according to my desires and mathematical theory and not to the whims of the rest of the universe.

Annotations

I’m infected with the urge to annotate all my code. The code looks cleaner, even if annotations potentially can introduce phenomenal cross-cutting problems. I don’t know why but there is a satisfying feeling to adding a list of @ annotations to a class. Yes, I know I’m crazy. Whoever introduced annotations to Java, you are awesome!

Ok, I’m doing with my lavish praises. I wish I knew about all these things earlier. Thanks to Nik, my project’s lead dev for introducing me to this new world of web development.