Monday at Java One
A bit of a light year for announcements. IBM have licensed Java for another 11 years and will support all their products on all the Solaris platforms. That's really IBM's announcement than being a Java one ISTM. Jonathan Schwartz did illustrate Sun's business model with respect to Java clearly (for once) though: "go where the volume is". With 3 billion Java-enabled devices sold last year they seem to be succeeding. (And all blu-ray DVD players will be Java driven too.) He also announced the next thing to be open-sourced, Sun's next generation enterprise app container. Should be very interesting, but not due until later this year. And promised more open sourcing to come: "there's one price that works for everyone: free".
Graham Hamilton revealed more of what's to come in the next two versions of Java. (Lots more usability, mostly through annotations, and tool support.) Sun have finally realised that version names like "J2SE 5.0" are inherently confusing (is it 2 or 5?) so the next version of J2EE will be called Java EE 5 and the next version of the standard edition Java SE 6.
Mark Hapner revealed that first versions of Java EE 5 should be out next year. Main focuses: POJOs (hallelujah), dependency/resource injection using annotations, JDO-like persistence mechanism, lots more support for web services.
There was also a session on Service Oriented Architectures (SOA), but it wasn't technical, just waffle. The vibe outside afterwards was that other people thought so too.
Java Business Integration
The new JBI spec, just released, is an architecture for enterprise service bus type systems based on WSDL 2.0 to abstract away messaging details. Looks useful for integration projects. Convinced me that there may actually be something useful in SOA. There's a lot of froth around it at the moment (even though it's not a new term – been known to computing science since at least the 70s). But I begin to see what it may be useful for and JBI has a nice API to do it.
EJB3 has changed a lot since last year, having undergone a massive reduction in the number of annotations it uses – down to 2, essentially the container will be made to do most of the work. Deployment descriptors will not be eliminated after all, but will be completely optional. An upgrade path from EJB2.1 has been defined and looks convincing. The persistence engine will be pluggable (I see the hand of the 6 JDO vendors on the expert group in this) and will support JDO2-style attach/detach.
Experiences with the 1.5 language features
Some useful snippets. I think I now understand what covariant return types are for. Why the conditional operator is dangerous with generics and why wildcards are essential for API designers.