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.
-Alan.