CINXE.COM

Project Jigsaw

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /><title>Project Jigsaw</title><link rel="shortcut icon" href="../../images/nanoduke.ico" /><link rel="stylesheet" type="text/css" href="../../page.css" /><script type="text/javascript" src="../../page.js"><noscript></noscript></script><script src="https://cdn.usefathom.com/script.js" data-site="KCYJJPZX" defer="yes"></script><style type="text/css"> /**/ SPAN.highlight { color: #e76f00; font-weight: bold; } LI.sep { margin-top: 1ex; } /**/ </style></head><body><div id="main"> <h1>Project Jigsaw</h1> <p>The primary goals of this Project were to:</p> <ul> <li> <p>Make it easier for developers to construct and maintain libraries<br /> and large applications;</p> </li> <li> <p>Improve the security and maintainability of Java&#160;SE Platform Implementations in general, and the JDK in particular;</p> </li> <li> <p>Enable improved application performance; and</p> </li> <li> <p>Enable the Java SE Platform, and the JDK, to scale down for use in small computing devices and dense cloud deployments.</p> </li> </ul> <p>To achieve these goals we designed and implemented a standard module system for the Java&#160;SE&#160;9 Platform and applied that system to the Platform itself and to its Reference Implementation, <a href="../jdk9">JDK&#160;9</a>. The module system is powerful enough to modularize the JDK and other large legacy code bases, yet is still approachable by all developers.</p> <p>Now that we've <a href="https://mreinhold.org/blog/jigsaw-complete">delivered on these goals</a> this Project will, going forward, host additional work to improve the module system and the modular platform as motivated by feedback from actual use.</p> <p>This Project is sponsored by the <a href="/groups/compiler/">Compiler Group</a>.</p> <h2 id="docs">Key documents, presentations, &amp; other resources</h2> <ul> <li><a href="https://openjdk.org/projects/jigsaw/spec/sotms"><em>The State of the Module System</em></a> (written overview, Mark Reinhold)</li> <li><a href="https://www.youtube.com/watch?v=l1s7R85GF1A"><em>Make Way for Modules!</em></a> (30m video overview, Mark Reinhold)</li> <li><a href="https://www.youtube.com/watch?v=eU8hCCjGSbE"><em>Prepare for JDK&#160;9</em></a> (50m video, Alan Bateman)</li> <li><a href="https://www.youtube.com/watch?v=rfOjch4p0Po"><em>Modular Development with JDK&#160;9</em></a> (60m video, Alex Buckley)</li> <li><a href="https://www.youtube.com/watch?v=QnMDsI2GbOc"><em>Project Jigsaw: Under the Hood</em></a> (50m video, Alex Buckley)</li> <li><a href="https://www.youtube.com/watch?v=C5yX-elG4w0"><em>Modules in One Lesson</em></a> &amp; <a href="https://www.youtube.com/watch?v=p7jCvbzqnS0"><em>Migrating to Modules</em></a> (50m live-coding videos, Mark Reinhold)</li> <li><a href="quick-start">Quick-Start Guide</a></li> <li id="jeps" class="sep">JEPs <ul> <li><a href="/jeps/200">200: The Modular JDK</a> <ul> <li><a href="https://cr.openjdk.org/~mr/jigsaw/jdk9-module-summary.html">Module summary</a></li> </ul> </li> <li><a href="/jeps/201">201: Modular Source Code</a></li> <li><a href="/jeps/220">220: Modular Run-Time Images</a></li> <li><a href="/jeps/260">260: Encapsulate Most Internal APIs</a></li> <li><a href="/jeps/261">261: Module System</a></li> <li><a href="/jeps/282">282: jlink: The Java Linker</a></li> </ul> </li> <li class="sep"><a href="spec">JSR 376: Java Platform Module System</a> <ul> <li><a href="spec/reqs/">Requirements</a></li> <li><a href="https://cr.openjdk.org/~mr/jigsaw/spec/">Specification</a>, including: <ul> <li>Java Language Specification [<a href="https://cr.openjdk.org/~mr/jigsaw/spec/java-se-9-jls-diffs.pdf">pdf diffs</a>]</li> <li>Java Virtual Machine Specification [<a href="https://cr.openjdk.org/~mr/jigsaw/spec/java-se-9-jvms-diffs.pdf">pdf diffs</a>]</li> <li>API specification [<a href="https://cr.openjdk.org/~mr/jigsaw/spec/api/index.html">javadoc</a>; <a href="https://cr.openjdk.org/~mr/jigsaw/spec/diff/index.html">diffs</a>]</li> <li><a href="https://cr.openjdk.org/~mr/jigsaw/spec/jar.html">JAR</a>, <a href="https://cr.openjdk.org/~mr/jigsaw/spec/jni.html">JNI</a>, <a href="https://cr.openjdk.org/~mr/jigsaw/spec/jvmti.html">JVM TI</a>, and <a href="https://cr.openjdk.org/~mr/jigsaw/spec/jni.html">JDWP</a> changes</li> </ul> </li> <li><a href="spec/issues/">Issue summary</a></li> </ul> </li> <li class="sep"><a href="talks">Additional presentations</a></li> <li>Mailing list: <a href="https://mail.openjdk.org/mailman/listinfo/jigsaw-dev">jigsaw-dev</a> (you must subscribe to the list in order to post to it)</li> <li><a href="https://hg.openjdk.org/jigsaw/jake">Source code</a></li> </ul> <h2>Development history</h2> <p>Work on Project Jigsaw <a href="history">began in August 2008</a> with an initial <a href="exploratory-phase">exploratory phase</a>. Work on the design and implementation for Java&#160;9 <a href="https://mreinhold.org/blog/jigsaw-phase-two">began in 2014</a>.</p> <p>The reorganization of the source code (<a href="/jeps/201">JEP 201</a>) was merged into JDK&#160;9 build&#160;27, in August 2014.</p> <p>The restructuring of run-time images to support modules (<a href="/jeps/220">JEP 220</a>) was merged into JDK&#160;9 build&#160;41, in December 2014.</p> <p>JSR 376, for the <a href="spec">Java Platform Module System</a>, was approved by the JCP Executive Committee in December 2014.</p> <p>The plan for encapsulating most internal APIs (<a href="/jeps/260">JEP 260</a>) was posted in August 2015.</p> <p>The initial version of <a href="spec/sotms/2015-09-08">The State of the Module System</a>, together with <a href="/jeps/261">JEP 261</a> and the first <a href="ea">early-access builds containing the prototype module system</a>, were published in September 2015.</p> <p>An initial list of <a href="spec/issues/">open issues</a> in the proposed specification was published in March 2016.</p> <p>An updated version of <a href="spec/sotms/">The State of the Module System</a>, with new material on compatibility and migration, was also published in March 2016.</p> <p>The module system itself, specified by <a href="spec">JSR 376</a> and implemented by <a href="/jeps/261">JEP 261</a>, was <a href="https://mreinhold.org/blog/jigsaw-module-system">merged into JDK&#160;9 build&#160;111</a> in March 2016.</p> <p>Work on Project Jigsaw <a href="https://mreinhold.org/blog/jigsaw-complete">completed</a> in July 2017 and was delivered for general use as part of <a href="../jdk9">JDK&#160;9</a> on 21&#160;September 2017.</p> <div class="last-update">Last update: 2017/9/22 20:25 UTC</div> </div><div id="sidebar"><div id="openjdk-sidebar-logo"><a href="/"><img alt="OpenJDK logo" width="91" height="25" src="../../images/openjdk2.svg" /></a></div><div class="links"><div class="link"><a href="/install/">Installing</a></div><div class="link"><a href="/guide/#contributing-to-an-openjdk-project">Contributing</a></div><div class="link"><a href="/guide/#reviewing-and-sponsoring-a-change">Sponsoring</a></div><div class="link"><a href="/guide/">Developers' Guide</a></div><div class="link"><a href="/groups/vulnerability/report">Vulnerabilities</a></div><div class="link"><a href="https://jdk.java.net">JDK GA/EA Builds</a></div></div><div class="links"><div class="links"><a href="https://mail.openjdk.org">Mailing lists</a></div><div class="link"><a href="https://wiki.openjdk.org">Wiki</a> &#183; <a href="/irc">IRC</a></div><div class="link"><a href="https://mastodon.social/@openjdk" rel="me">Mastodon</a></div><div class="link"><a href="https://bsky.app/profile/openjdk.org">Bluesky</a></div></div><div class="links"><div class="links"><a href="/bylaws">Bylaws</a> &#183; <a href="/census">Census</a></div><div class="link"><a href="/legal/">Legal</a></div></div><div class="links"><div class="links"><a href="/workshop"><b>Workshop</b></a></div></div><div class="links"><div class="links"><a href="/jeps/0"><b>JEP Process</b></a></div></div><div class="links"><div class="about">Source code</div><div class="link"><a href="https://github.com/openjdk/">GitHub</a></div><div class="link"><a href="https://hg.openjdk.org">Mercurial</a></div></div><div class="links"><div class="about">Tools</div><div class="link"><a href="http://git-scm.org/">Git</a></div><div class="link"><a href="/jtreg/">jtreg harness</a></div></div><div class="links"><div class="about">Groups</div><div class="link"><a href="/groups/">(overview)</a></div><div class="link"><a href="/groups/adoption">Adoption</a></div><div class="link"><a href="/groups/build">Build</a></div><div class="link"><a href="/groups/client-libs">Client Libraries</a></div><div class="link"><a href="/groups/csr">Compatibility &amp; Specification Review</a></div><div class="link"><a href="/groups/compiler">Compiler</a></div><div class="link"><a href="/groups/conformance">Conformance</a></div><div class="link"><a href="/groups/core-libs">Core Libraries</a></div><div class="link"><a href="/groups/gb">Governing Board</a></div><div class="link"><a href="/groups/hotspot">HotSpot</a></div><div class="link"><a href="/groups/ide-support">IDE Tooling &amp; Support</a></div><div class="link"><a href="/groups/i18n">Internationalization</a></div><div class="link"><a href="/groups/jmx">JMX</a></div><div class="link"><a href="/groups/members">Members</a></div><div class="link"><a href="/groups/net">Networking</a></div><div class="link"><a href="/groups/porters">Porters</a></div><div class="link"><a href="/groups/quality">Quality</a></div><div class="link"><a href="/groups/security">Security</a></div><div class="link"><a href="/groups/serviceability">Serviceability</a></div><div class="link"><a href="/groups/vulnerability">Vulnerability</a></div><div class="link"><a href="/groups/web">Web</a></div></div><div class="links"><div class="about">Projects</div><div class="link">(<a href="/projects/">overview</a>, <a href="/projects/archive">archive</a>)</div><div class="link"><a href="/projects/amber">Amber</a></div><div class="link"><a href="/projects/babylon">Babylon</a></div><div class="link"><a href="/projects/crac">CRaC</a></div><div class="link"><a href="/projects/code-tools">Code Tools</a></div><div class="link"><a href="/projects/coin">Coin</a></div><div class="link"><a href="/projects/cvmi">Common VM Interface</a></div><div class="link"><a href="/projects/guide">Developers' Guide</a></div><div class="link"><a href="/projects/dio">Device I/O</a></div><div class="link"><a href="/projects/duke">Duke</a></div><div class="link"><a href="/projects/galahad">Galahad</a></div><div class="link"><a href="/projects/graal">Graal</a></div><div class="link"><a href="/projects/icedtea">IcedTea</a></div><div class="link"><a href="/projects/jdk7">JDK 7</a></div><div class="link"><a href="/projects/jdk8">JDK 8</a></div><div class="link"><a href="/projects/jdk8u">JDK 8 Updates</a></div><div class="link"><a href="/projects/jdk9">JDK 9</a></div><div class="link"><a href="/projects/jdk">JDK</a> (&#8230;, <a href="/projects/jdk/23">23</a>, <a href="/projects/jdk/24">24</a>, <a href="/projects/jdk/25">25</a>)</div><div class="link"><a href="/projects/jdk-updates">JDK Updates</a></div><div class="link"><a href="/projects/jmc">JMC</a></div><div class="link"><a href="/projects/jigsaw">Jigsaw</a></div><div class="link"><a href="/projects/kona">Kona</a></div><div class="link"><a href="/projects/kulla">Kulla</a></div><div class="link"><a href="/projects/lanai">Lanai</a></div><div class="link"><a href="/projects/leyden">Leyden</a></div><div class="link"><a href="/projects/lilliput">Lilliput</a></div><div class="link"><a href="/projects/locale-enhancement">Locale Enhancement</a></div><div class="link"><a href="/projects/loom">Loom</a></div><div class="link"><a href="/projects/jmm">Memory Model Update</a></div><div class="link"><a href="/projects/metropolis">Metropolis</a></div><div class="link"><a href="/projects/mlvm">Multi-Language VM</a></div><div class="link"><a href="/projects/nashorn">Nashorn</a></div><div class="link"><a href="/projects/nio">New I/O</a></div><div class="link"><a href="/projects/openjfx">OpenJFX</a></div><div class="link"><a href="/projects/panama">Panama</a></div><div class="link"><a href="/projects/penrose">Penrose</a></div><div class="link"><a href="/projects/aarch32-port">Port: AArch32</a></div><div class="link"><a href="/projects/aarch64-port">Port: AArch64</a></div><div class="link"><a href="/projects/bsd-port">Port: BSD</a></div><div class="link"><a href="/projects/haiku-port">Port: Haiku</a></div><div class="link"><a href="/projects/macosx-port">Port: Mac OS X</a></div><div class="link"><a href="/projects/mips-port">Port: MIPS</a></div><div class="link"><a href="/projects/mobile">Port: Mobile</a></div><div class="link"><a href="/projects/ppc-aix-port">Port: PowerPC/AIX</a></div><div class="link"><a href="/projects/riscv-port">Port: RISC-V</a></div><div class="link"><a href="/projects/s390x-port">Port: s390x</a></div><div class="link"><a href="/projects/sctp">SCTP</a></div><div class="link"><a href="/projects/shenandoah">Shenandoah</a></div><div class="link"><a href="/projects/skara">Skara</a></div><div class="link"><a href="/projects/sumatra">Sumatra</a></div><div class="link"><a href="/projects/tsan">Tsan</a></div><div class="link"><a href="/projects/valhalla">Valhalla</a></div><div class="link"><a href="/projects/verona">Verona</a></div><div class="link"><a href="/projects/visualvm">VisualVM</a></div><div class="link"><a href="/projects/wakefield">Wakefield</a></div><div class="link"><a href="/projects/zero">Zero</a></div><div class="link"><a href="/projects/zgc">ZGC</a></div></div><div class="buttons"><a href="https://oracle.com"><img alt="Oracle logo" width="100" height="13" src="../../images/oracle.svg" /></a></div></div><div id="footer"> &#169; 2025 Oracle Corporation and/or its affiliates <br /><a href="/legal/tou/">Terms of Use</a> &#183; License: <a href="/legal/gplv2+ce.html">GPLv2</a> &#183; <a href="https://www.oracle.com/us/legal/privacy/">Privacy</a> &#183; <a href="https://openjdk.org/legal/openjdk-trademark-notice.html">Trademarks</a></div><script type="text/javascript" src="/E8HJA402nnuXYDgIJQ/J1iDXVbVf1bkaOaL/C2ABPgcD/ZiU/bYHkqBXcB"></script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10