Thursday, 25 February 2010

My thoughts on "Alex Buckley on Jigsaw: Modularity for the JDK"

These are the key points I took away from this talk at JAX London:
- Jigsaw is a modularity solution for breaking up the JDK to improve start up times, memory usage, etc
- It is totally backward compatible, e.g. your Java 6 apps should work on it
- if you don't choose a subset of the JDK, you get it all
- The classpath, as it works now, will live forever, i.e. to support those that don't want to use modules
- People can use Jigsaw if they want
- Jigsaw is nothing to do with JSR 294
- There's a bunch of additional optimisations that could be done in addition to modularisation
- Packages will be split across modules, but that's not as important as in a dynamic module system and is basically impossible anyway because of the way the JDK hangs together
- Class loading will work as it does now and all classes from the JDK modules get loaded in to the same class loader
- There was an implication that it would be possible to distribute a cut down version of the JDK which included just the modules you wanted, but that requires clarification.

I don't see Jigsaw having any negative affect on OSGi. In fact the smaller Java runtime that would be the result of this work only enhances the OSGi value proposition. Creating enterprise applications with OSGi is already lightweight compared to using J2EE and [insert any bloated app server here], so having less stuff to bootstrap can only improve that further.

The most significant impression I took away, was that most of Alex's points (e.g. multi-dimensional versioning??) were motivated his grappling with modularising the JDK. This seems to be reflected in his previous responses on the JSR-294 experts mailing list and is disappointing because the JDK we love so dearly has some fundamental flaws so modularity solutions driven by these flaws are potentially inherently flawed also.

I also found it funny that he blamed the poor architecture of the JDK on the fact it was started in 1995 ... so only 23 years after the term modularity was first coined. But I suppose the crazy number of bidirectional dependancies is understandable and as Neil Bartlett says is also a bi-product of it getting so big; a warning to other up-coming languages, e.g. Scala

No comments: