Sunday, April 10, 2005

Since Java 1.0

I like Java and J2EE. I work with these often and enjoy the tools and environments. I've been through a number of generations of the hot technology, and I like to play the game of trying to see around the next corner. That means looking hard at the current state of the art. That's what I'll do now ...

The Java language entered mainstream production usage in parallel with the raise of some other increasingly important technologies. One of course was Web development, and Sun was very quick to adapt Java to help address the needs of the web. The web and Java go together very powerfully.

Some other technologies while successful, have been bumpier to integrate. Meta-level programming was added to Java in the form of Reflection with a useful but clumsy API.

Aspect Oriented Programming (AOP) is being added both at runtime with libraries, and at compile time with AspectJ byte modifications. And in a similar way as the Meta-level API, AOP in Java is useful, yet just a bit convoluted.

The most important after-market addition to Java, in my estimation, has been jUnit. And the whole idea of unit testing. The practice of automated programmer testing, is still struggling to become standard operating practice by the typical Java programmers.
  • Meta-Level programming
  • Aspect Oriented Programming
  • Unit Testing
My point is that these three new technologies are available for Java, but not integrated into the programming approach of the typical Java programmer. But that's ok since there are plenty of production Java programs written without these three making money for companies.