Java’s Project Jigsaw (modularity): delayed

Project Jigsaw is about adding modularity to Java and about breaking up the currently monolithic runtime library. It was originally slated to be included in Java 8 (September 2013) and has now been postponed until Java 9 (September 2015).

Plans for Project Jigsaw

The following excerpts are from the blog post “Project Jigsaw: Late for the train” by Mark Reinhold (Chief Architect of the Java Platform Group at Oracle).

Not ready yet, but progress has been made:

Despite this progress, some significant technical challenges lay ahead. Modularizing the Java SE Platform and the JDK while maintaining compatibility for existing code is an incredibly delicate task which requires careful changes throughout both the specification and the implementation. We have, moreover, yet to design and prototype an approach to supporting containers such as IDEs, Java EE application servers, and applet containers, all of which require some amount of reflective dynamism. We’re reasonably confident that we can work through these issues, but doing so will most likely take us past May 2013.
Postponing Jigsaw, sticking to a two-year release cycle.
In all the years I’ve worked on Java I’ve heard repeatedly that developers, partners, and customers strongly prefer a regular and predictable release cycle. Developers want rapid innovation while enterprises want stability, and a cadence of about two years seems to strike the right balance. [...] Keep the beat In this light I think the best choice is to defer Project Jigsaw to Java 9, and to aim for a two-year release cycle going forward.
What will be in Java 8 (September 2013):
[...] it will include the widely-anticipated Project Lambda (JSR 335), the new Date/Time API (JSR 310), Type Annotations (JSR 308), and a selection of the smaller features already in progress.

Java versus JavaScript

JavaScript faces less obstacles to progress in this area. There are standardized patterns for writing modules, but no built-in support (compared to Java’s namespacing support via packages). And JavaScript’s runtime library is much smaller than Java’s. The next version of JavaScript, code-named ECMAScript.next (final name probably ECMAScript 6), will most likely have full support for modules. ECMAScript.next will be standardized by the end of 2013. JavaScript engines will implement parts of the standard before that and be fully compliant in the months after that.