BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Jigsaw Deferred until Java SE 9

Jigsaw Deferred until Java SE 9

This item in japanese

Bookmarks

Mark Reinhold, chief architect of the Java Platform Group, announced on his blog that proposal of adding a module system, and modularizing the JDK, is deferred to Java SE 9.

Despite being a difficult decision to make, doing so allows more focus to be given on the module system in order to get it right, without having to delay the release of Java SE 8, scheduled for just over a year's time in August 2013.

The decision is reminiscent of the well executed plan laid in 2010 for Plan B, which deferred the addition of Lambdas (aka JSR 335) until after JDK7 was released. This allowed JDK7 to be released around a year ago (July 2011), some four and a half years after the prior JDK6 released.

To gain stability and a future roadmap, the JDK will be released every two years in what is being referred to as the biannual release train, similar to Eclipse's annual release train – though, as Reinhold notes, at the end of the Summer rather than before, and at half the tempo.

This allows large organisations to plan when to upgrade to a newer version of the JDK, and using agile planning techniques, releasing on a regular schedule with contents that are ready rather than trying to rush or delay releases.

Unfortunately this means that JDK8 will not have a module system based on Jigsaw when it is released next year. The delay in introducing modularity does not affect general developers; but as the code-base of software grows, modularity becomes a necessary tool in software architecture. Module systems such as OSGi and PojoSR already provide a runtime support for modules; modularity forms a key part in many build and runtime systems, as well as enterprise application servers.

Although adding modularity can be done after the fact, with code bases that have a long history (and typically haven't been designed with modularity in place) retro-fitting modules can be a challenging task. Few would expect that the JavaBeans API would need a dependency on a GUI; yet the java.beans.Beans#instantiate() method contains a reference to java.applet.AppletInitializer which directly depends on the java.awt packages. As a result, retro-fitting modularity to the JDK remains a significant challenge; and as the number of packages increase, the accidental dependencies between them can increase. The java.lang, java.io and java.net packages all have circular references with each other which makes splitting them into different modules difficult.

Finally, the delay to the introduction of Jigsaw will give more time for Oracle and other modularity experts to refine the proposals in place and to apply the thoughts and development plans already created. As Mark identifies on his blog, the delay to Jigsaw is not through lack of work, effort or implementation achieved so far; but rather as a means to avoid delaying the planned JDK8 release and to ensure that the modularity implementation for the JDK platform is the best it can be.

Rate this Article

Adoption
Style

BT