Project Jigsaw goals and requirements

mark.reinhold at oracle.com mark.reinhold at oracle.com
Wed May 25 08:55:51 PDT 2011


The original goal of this Project was to design and implement a simple,
low-level module system focused narrowly upon the task of modularizing
the JDK, and to apply that system to the JDK itself [1].

We expected the module system to be useful to developers for their own
code, and to support it for that purpose, but we did not intend at the
outset to propose it for inclusion in the official Java SE Platform
specification.  It would have been available in the JDK, that is, but
other Java SE implementations would not have been required to include it.

We've made a fair amount of progress toward that original goal, having
produced the initial working prototype demonstrated at JavaOne in 2009.
Work since then has been somewhat sporadic, unfortunately, due to various
post-acquisition integration activities and then the intense focus needed
to finish and ship JDK 7 according to "Plan B" [2], which deferred Jigsaw
to JDK 8.

Now that work on JDK 7 is winding down, we're starting to move Jigsaw
forward again.  As we do so, it's time to re-evaluate our goal.

The need for a truly standard module system for the Java Platform has
long been recognized.  If anything that demand has grown in the years
since Project Jigsaw was launched.  This was clearly evident at the JCP
Executive Committee meeting last October in Bonn, where the long-term
convergence of the Java ME and Java SE platforms -- and a module system
that could support that goal -- was a major topic of discussion [3].

One outcome of those discussions was an informal "modularity summit"
organized by IBM and hosted by Oracle this past January in Ottawa.  That
meeting included key members of the OSGi, Eclipse, Java SE, and Java EE
communities.  Its primary goal was to reach a clear understanding of the
requirements of a standard Java module system, and to do so without
reference to any particular existing module system.

To that end I drafted an abstract module-system requirements document,
presented it at the meeting, and then revised it in response to comments
and suggestions made at that time and in subsequent discussions.  This
was by no means an easy process, but I think it's fair to say that the
end result represents the consensus view of all those involved even
though a handful of requirements remain open.

I've posted the latest draft of the requirements document for wider
review [4].  Comments are most welcome.

This is still a draft -- I expect it to evolve in response to further
comments, and also to expand to include a few more requirements from the
Java ME and Java EE communities.  This document will ultimately be one of
the starting points for the eventual "Java Platform Module System" JSR
that's mentioned in the Java SE 8 Umbrella JSR [5].

The requirements document will, in parallel, guide a renewed effort on
Project Jigsaw.  We've already prototyped some of the new requirements
(e.g., modular JAR files [6]), and work is well underway on some of the
others.  The overall Jigsaw design will, once it takes shape, be another
of the starting points for the Module System JSR.

- Mark


[1] http://mreinhold.org/blog/jigsaw
[2] http://mreinhold.org/blog/plan-b-details
[3] http://jcp.org/aboutJava/communityprocess/summaries/2010/October2010-public-minutes.html
[4] http://openjdk.java.net/projects/jigsaw/doc/draft-java-module-system-requirements-12
[5] http://www.jcp.org/en/jsr/detail?id=337
[6] http://openjdk.java.net/projects/jigsaw/doc/draft-java-module-system-requirements-12#modular-jar-files



More information about the jigsaw-dev mailing list