Goals
– Help fix problems with the classpath
– Allow modularization of JDK/JRE
– Enable using JSE subsets
– Improve performance (startup time, download time, etc.)
OSGi was considered too complex and not well-suited for JDK modularization
But: Project Penrose tries to make sure that OSGi can be implemented on top of Jigsaw.
Project is in Phase 1 (exploration, prototyping)
Phase 2 (reference implementation) in very early stages
Project website
Big picture of the Design
A lot of work to do
Was recently deferred from Java 8 to Java 9
Challenges:
– Dynamic modularization
– JEE containers
– Needs a reflective API
– Fundamental changes, require a lot of QA (testing, etc.)
But Java 8 might already introduce a simplified way of using JSE subset:
“JSE Profiles”
Module descriptor: module-info.java
http://openjdk.java.net/projects/jigsaw/doc/lang-vm.html#jigsaw-1.1
Modules are versioned
Only one version of a module can exist
Repositories: HTTP server or local files
Packager to generate deb, rpm packages etc. from Java modules
translate the module metadata to package metadata
JDK modularization
http://openjdk.java.net/projects/jigsaw/doc/jdk-modularization.html
Backwards compat:
Classpath-mode (legacy), Module mode
But: No more dependecies on internal classes (e.g. sun.misc.*) will be possible
No more rt.jar, tools.jar