Status report Jigsaw num. 4 for GSoC 2011
We now have all dependencies in Debian to build Jigsaw and running its
tests. So it is time to think about what we can do to package all the
modules. During these weeks I have done some progress about
understanding how Jigsaw works and that is really important to know
how we are going to package it.
First I tried to build Jigsaw with the current OpenJDK 7 packaging.
These packages are based on IcedTea and several tarballs from the
OpenJDK mercurial forest. So basically, I tried to make the same things
but with Jigsaw tarballs instead. Sadly, it didn't work but this was
expected not to work. IcedTea is a really great project which gives us
the tools to build OpenJDK with autotools and stuffs. It also ships
some patches to replace some part of the JDK such as the web plugin
for example. Jigsaw being synchronized with OpenJDK 7 we will probably
reuse the patches from IcedTea and the ones from the Debian packaging
to build Jigsaw.
After that I have spent a lot of time reading documentation and blog
entries about modularizing Java. Mark Reinolds the chief architect
of Java wrote several interesting articles about what people want Jigsaw
to be. I also had to plan my trip to got to DebConf 11 which has just
We now know that we can create several modules and that gives us the
idea to separate JVM modules from applications specific modules. In
this way, the JDK system directory will contains only JDK modules and
we could put applications specific modules in a directory like
'/usr/share/java/modules'. We also thought about packaging Jigsaw like
a classic JDK so we will be able to mimic the current installation of
JDK6 or JDK7 and install all JDK modules in the same modules library
which will be the base for all other.
Modules libraries can be created with 'jmod create -L modules_library'.
Each modules library, except the top-level one from the JDK, has a
parent. The default is the JDK modules library but we can totally do
With this we will have 2 libraries, the first one is linked to the JDK
library, and the second one is linked to the previoulsy created library.
This is good because we can install modules in a lot of different places
on a file system. But it can also complexify things and that's why I
would like to see only 2 modules libraries in Debian which could be in:
- /usr/lib/jvm/java-8-openjdk/modules ; for the JDK one
- /usr/share/java/modules ; for third party applications modules
Another idea that we mentionned is to automatically generate the
dependencies list of Jigsaw modules in the 'debian/control' file. We
know it is possible because Oracle did that with their own .deb creator.
We coudl also use this kind of things to generate the dependencies list
of a modular Java application. I guess that we should contribute to
javahelper to do such a thing.
Sylvestre Ledru has created a Git repository on Alioth so we can work
together on getting Jigsaw packaged. I have already applied the patch of
Alan Bateman implementing exploded modules. We are still looking for a
new version of this patch which *may* be available soon. The Git
repository contains also a 'debian/' directory which is for now a copy
of the 'debian/' directory of the OpenJDK 7 package.
DebConf 11 was a great opportunity to meet my mentors Tom Marble and
Sylvestre Ledru. We spoke about Jigsaw, its packaging and we found some
ideas which will be followed during the next steps of the project. At
DebConf 11, my mentors and I also gave a talk about our project and
what we have done so far. The slides of this talk are available
online as well as the video.
These last weeks were full of brainstorming.
The next steps are to go ahead with the packaging of Jigsaw and try to
obtain .deb as soon as possible. Maybe we are going to use the patches
from IcedTea and OpenJDK 7 package too. We will also need to interact
with upstream to push changes. I also would like to cooperate with people