JFX build and deployment - squeaking wheel

Bob Vandette bob.vandette at oracle.com
Thu Nov 8 13:11:31 PST 2012


There have been some questions on this list about Jigsaw, compact profiles, embedded, minimal VMs 
and the JRE customization tool called jrecreate.   Richard asked me to jump in to try to clear up any confusion.  

Here goes ....

The Java Modularity Project (project Jigsaw) that was originally planned for JDK8 was deferred to JDK9.   
The Java Embedded team (I'm the lead) was expecting to use Jigsaw in order to provide smaller
customizable Java runtimes for embedded devices.  Lacking this new functionality, we decided to
propose a simpler alternate plan that would enhance the JDK8 specification to allow the distribution
of a small set of profiles that are subsets of the full Java runtime.   These are called Compact Profiles.
We have proposed three compact profiles.  A talk and presentation that I gave at JavaOne describes these
profiles.

https://oracleus.activeevents.com/connect/fileDownload/session/CDC887FAEAD8ABE54064406AC304AD59/CON4538_Vandette.pdf

The Java Enhancement Proposal (JEP) for this work is here:

http://openjdk.java.net/jeps/161

The openjdk repository that implements our current prototype is located here:
 
http://hg.openjdk.java.net/jdk8/profiles

The mailing list that discusses the profiles is build-infra-dev at openjdk.java.net since the creation of the
new profiles is done using the new configure based JDK build system.

This repository allows you to do a build that generates the full JRE, JDK but in addition produces
three additional image targets (compact1, compact2, and compact3).

In order to achieve the smallest Java runtime for embedded (our goal is around 10MB), we have applied changes to Hotspot
that allow us to build a small VM (2-3MB) with reduced functionality.  The small VM (minimal) + compact1 profile
goal we've set is around 10MB.  We're at 11MB today.

In addition to the profile bundles and the small VM, we have a reduced Embedded FX stack that we'll run on 
embedded devices such as the RaspberryPi.  This FX Embedded stack is a compatible FX implementation without
media and webkit support.   The goal for this added stack is 6MB.

The jrecreate tool that some of you have asked about is not a java stripping tool.  It's main purpose is to 
assist the embedded developer in customizing Java runtimes.  It allows the developer to select which profile, 
VM, debugging options, compression, security and FX options.  It does not strip the full JRE to produce the 
compact profile. The jrecreate will be packaged with the three compact profile binaries.  It simply copies these 
profiles and applies some additional massaging based on the selected options.  

We have already pushed the minimal VM changes to JDK8 hotspot and will be open sourcing the compact profile changes
since they will be a standard feature of JDK8 (independent of embedded).  The current profile changes in our project repository
are only functional for Linux x86.  

We certainly recognize the value that small Java runtimes + reduced FX could have on Java applications published on
Web App stores, but the current immediate plan is that the jrecreate tool is only going to be available with our 
embedded binary downloads since that's where it's needed most.   I've had some discussions with our Netbeans team to
see what it will take to make Netbeans profile aware.  This might be a good way of taking advantage of profiles, reduced FX
for producing smaller applications for distribution. 

I hope this help,
Bob.




More information about the openjfx-dev mailing list