Start at the corners
Puzzling out Java’s modular future: Project Jigsaw in phase two
For many, the absence of Project Jigsaw in Java 8 was the one chink in an otherwise warmly received release. Although the inclusion of the Compact Profiles feature did go some way to meeting more immediate platform footprint scalability needs, for many, modularization is still a sticking point. Fortunately, things are looking up for Jigsaw.
Mark Reinhold’s latest blog post has revealed that the project is now stepping up a gear from its research phase in which the Oracle crew have “designed and prototyped one particular approach to meeting a draft set of requirements.” According to Reinhold, the Jigsaw team has now reached phase two of their work: creating a living, breathing production-quality design and implementation for JDK 9 and Java SE 9.
To this end, Reinhold reveals that he has penned a new document to collect goals and requirements. Spurred on by some well-publicized security mishaps, the onus will be on taking into account lessons learnt from past misadventures, and creating truly watertight software. This will be written “at a broader and more abstract level than the previous document so as not to over-constrain the solution space.” He adds that the document will be one of the jumping points for the upcoming Java Platform Module System JSR.
Emphasising the enormity of the impact Jigsaw will have on the JDK, wisely, the team are proceeding in large steps, each one with a corresponding JEP, rather than crash landing a fully formed monster feature onto the platform. The initial three JEPs will propose a specific modular structure for the JDK, re-sort the JDK source code, excluding binaries, and then modularize the binary images at a later stage.
The fourth JEP will serve as an intro to the module system itself, which will be aligned with the module-system JSP. Whilst this might seem a backward way of going about things, Reinhold explains that because the primary JEPs only need to make minimal assumptions about the module system’s capabilities, “work on them can proceed in parallel with work on the module-system JEP and JSR.”
If you’d like to learn more about this long-anticipated initiative, you might find the following video useful. In this talk, filmed at JAX Mainz, 2013, Paul Sandoz explains Jigsaw’s key goals and design principles, shows its application to the Java platform, and demonstrates how you can use it to create your own modular libraries and applications.