Sunday, August 12, 2007

(Still) Waiting For Java 5

After the recent release of the public review of JSR-283, discussions have mainly been focused on the demise of XPath support and the installment of a new query language model. One thing that shocked me, when I browsed through the API, was the complete lack of any Java 5 language constructs, like generics or enumerations.

Or take a look at a the parent POM of a project like Mule ESB: the target JVM is 1.4.

Hence "enterprise" Java is still a 1.4 world. Even if it is possible to run 1.4-compiled applications on recent JVMs, mainly to reap their performance benefits or management features, the Java community is dragged behind by this state of affair.

And this means, we have to carry on with pre-1.5 compatibility features, like erasure, until the corporate world leaves the 1.4 platform for something less retarded. The good thing is that this will inevitably happen.

1 comment:

Perrine said...

It is due to some sort of industrialization process I guess.

Actually, I've a big interest in the openjdk project and the classpath team's implementation : icedtea.

The reference is 1.7 ( java 7 ? ), so long is the road before the real production state, but it is the first complete java suite for open source distribution, and all linux distro will certainly implement it : Debian, Gentoo, RedHat, Suse and Ubuntu will do.
So I start to work with it to be ready when java 7 will be the standard.
About the Java version, I was very surprise to see that a specific product is certified with a specific jvm release on a specific system, and if you try with a more recent version jvm, you may experiment some unexpected errors.
And I don't talk about libraries.

Who is the reponsible : the java language, the application servers code, the developpers code or a bit for each others.

I think that the weakness of Java is the lack of system implementation rules. Each system have it proper implementation, when it have one, and none is fully compatible with the others.

How can we have any good and universal policies to implement a java solution in this case ?