Evidence of incompatibility (was Some suggested patches and improvements)

Alan Bateman Alan.Bateman at oracle.com
Wed May 17 18:50:07 UTC 2017

On 17/05/2017 18:26, Eric Johnson wrote:

> :
> Here's a challenge back to the Jigsaw team. Can I still do java -jar ...
> every existing Java application (without recompile!) that currently
> launches that way? I'm even willing to cut some slack and ignore
> applications that use com.sun APIs that have been "private" for years. Will
> that still work? The Jigsaw community should be able to provide evidence
> that's still possible, not that we should be required to provide evidence
> that it isn't.
FWIW, the JDK has never been able to guarantee this at major releases. A 
typical JDK major release will have ~20000 changes that translate into a 
lot of code so there is a lot of potential for breakage or subtle 
behavior or performance changes. Even mundane things like rev'ing the 
class file version at every major release can be disruptive. Nothing to 
do with Project Jigsaw but there are many one-off changes in JDK 9 that 
will make it more disruptive than previous releases, e.g. moving to G1 
as the default collector, switching to use CDLR locale data by default, 
the new version-string scheme, changes to the layout of the run-time 
image, .... it's a long list that will eventually show up as extensive 
release and compatibility notes.

As regards executable JARs then please bring up any specific issues if 
you run into them. The reason that there are weekly EA builds to get as 
much testing and feedback as possible. If you search around then you'll 
see that all the IDEs have been working with the JDK 9 builds, same 
thing for many other important tools and libraries in the eco system. We 
know of course that only a small percentage of developers will have the 
time or interest but having at least some people trying out builds and 
reporting issues (to the right place) is really important and has been 
part of how major releases have been developed for a long time.

As regards your command on cutting slack then be aware that the issue of 
existing applications run with `java -jar` but relying on direct access 
to the JDK internals has been discussed many times. There are JAR file 
attributes that can be added to the main manifest that are equivalent to 
the encapsulation busting command line options.


More information about the jigsaw-dev mailing list