Angelika Langer and Klaus Kreft held a session about the new features of the upcoming JDK 7. The presented roadmap shows JDK 7 (codename Dolphin) being released somewhere in the end of 2008.
First huge topic was the closures controversy. There is BGGA pushed by Neal Gafter, and there is Josh Bloch oposing with very good arguments. Both now Google. Interesting.
Closures is coming, there is no JSR yet, time will tell.
Another very interesting topic in the session was the superpackage features planned:
JSR 294: Improved Modularity Support in the JavaTM Programming Language
With superpackages it will be possible to define group of java packages, telling which ones are private to the superpackage and which ones are public. This allows us to create coarse grained modules and efficiently hide internal implementation. This is IMHO the most interesting Java extension in the jsr horizon.
While the JSR 294 introduces static modularization, there is still the need for runtime (and therefore deployment) modularization.
JSR 277: JavaTM Module System
The JSR 277 introduces modules and is similar to what we know from OSGi. Quite interesting to see all the module configuration elements as Annotations in the Java code. There is a nice blog posting about the modularization works from Glyn Normington (expert group members in the related JSRs, works for SpringSource).
The modularization planned for JDK7 is going to change the way we create components, as it provides the missing language features needed to create coarse grained components:
- side-by-side deployment,
- module bootstrap and
- module lifecycle
I am curious to see how deployment will change in the future, and the future of Java EE in general. For example, Spring architectures lack deployment standards, now the standards are being provided by the Java SE.
And finally, but least interesting, some JSRs that probably will find their way into Dolphin:
JSR 310: Date and Time API
JSR 275: Units Specification
JSR 203: More New I/O APIs for the JavaTM Platform (”NIO.2?)
JSR 107: JCACHE – Java Temporary Caching API
JSR 296: Swing Application Framework
JSR 255: JavaTM Management Extensions (JMXTM) Specification, version 2.0
JSR 284: Resource Consumption Management API