Channels ▼

Eric Bruno

Dr. Dobb's Bloggers

Project Jigsaw: Java Plan B^2

July 23, 2012

When Java Chief Architect Mark Reinhold proposed the infamous "Plan B" for new Java 7 features in 2010, it was an acceptable compromise in order to get Java 7 out the door. Java 7 had, up to that point, been delayed for years leaving developers and enterprises with only point updates to the aging Java 6 platform.

In summary, Plan B meant deferring the implementation of Lambda expressions, Project Jigsaw, and the remaining portions of Project Coin until JDK 8, then slated for late 2012. As mentioned above, most of the Java community accepted Plan B as the right thing to do in order to get Java 7 on track again. In the end, this proved to be a good move, as JavaOne 2011 was a success in most developers' opinions regarding the release of Java 7, JavaFX, and other related software. Oracle had set a direction, and for the most part delivered on the first big step in its plan.

Plan B Redux

Last week, however, Reinhold once again proposed a Plan B, but this time it was for the previous Plan B. Plan B^2 if you will. According to Reinhold, JDK 8 is itself late, and won't make the original Plan B release date of late 2012. Instead, the revised release date is May 2013, and even that's not enough time to see Jigsaw completed.

What Is Project Jigsaw?

Sun and now Oracle have had a vision to break the JDK down into smaller, more manageable, and easier to download components to control the size of the platform, aka Jigsaw. While this seems like a straightforward goal (just break down large JAR files into many smaller ones), this entails the monumental task of uniting the Java SE platform with the Java ME (embedded) platform. The goal is provide a basic JVM building block upon which other modular pieces can be layered, tailored to the environment/server/device that host the Java application. This grand unification of the Java platform, with the right modularization, is a fantastic plan and will help Java developers more easily adapt their applications to a wider range of computing devices. This is the 21st century vision of write-once-run-anywhere, where anywhere means in a data center, your desktop, or in your pocket, all without changing your code.

If you're interested, a prototype implementation of Jigsaw is available now on multiple platforms. Feel free to download the latest and give it a try (within a virtual OS or secondary development environment to be safe). Or, read up on the requirements and design, or the "Big Picture" overview at minimum, to get a basic understanding.

Bus Stop (Train Station) Release

However, as the goal above is a deep and far-reaching change to the fundamentals of the Java SDK and runtime platform itself, it's not something that can be rushed. As such, the JDK 8 train is in danger of leaving the station without Jigsaw on board. Moreover, Reinhold proposes that this mirrors the need for a new release pattern for Java itself: every two years no matter what's ready to be included. In groups I've worked in, this was called the "bus stop" release cycle; releases were planned on certain dates, and only the new features and bug fixes that were ready to ship would make the bus (the current release). Others would have to wait for the next bus (release). Reinhold proposes this for Java, with a two-year release cycle, likening it to a train schedule instead of a bus schedule. I think I agree with this, as well as the release time frame of two years.

With the revised plan (Plan B for Plan B), which I like to think of as Plan B^2, JDK 8 will be released in September of 2013 with Lambda, the new Date/Time API, new Type Annotations, and the rest of Project Coin, while Project Jigsaw and other features will be part of JDK 9 in 2015. Some view this as necessary considering the scope of Jigsaw, whiles others view it as the death of Jigsaw (as it appears to have an ever-slipping ship date). How do you feel about it? If you're passionate about any of this (i.e. the bus-stop release cycle for Java, the slipping Jigsaw release date), make your feelings known to the Java 8 Expert Group.

Happy Coding!

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.