New EA builds, contains initial implementation of current proposals

Alan Bateman Alan.Bateman at oracle.com
Wed Jul 6 18:36:41 UTC 2016


The jigsaw/jake forest has been updated with an initial implementation 
of the proposals that Mark brought to the jpms-spec-experts mailing list 
last week. For those that don't build from source then the EA 
build/downloads [1] has also been refreshed.

The changes in this build are initial/early implementations of:

#CompileTimeDependences
#ReflectiveAccessToNonExportedTypes
#ModuleAnnotations and #ModuleDeprecation
#ResourceEncapsulation and #ClassFilesAsResources
#ReflectiveAccessByInstrumentationAgents
#CustomizableAutomaticModuleNameMapping

The updates involve changes to the binary form of a module declaration 
so if you have been playing with previous builds then you will need to 
re-compile your modules.

One point on #ReflectiveAccessByInstrumentationAgents is that it is just 
java.lang.instrument for now. The underlying support for the JVM TI 
equivalent is in place, it's just not exposed as a JVM TI function just yet.

The discussion on some of these issues is ongoing so don't treat 
anything as final yet. We'll refresh the builds as needed over the 
coming weeks.


One other significant change in this build is that it has the new forms 
for the command line options. As has been mentioned in a number of 
threads here, we are proposing that the new command line options for 
modules use the GNU style. Jon Gibbons will be posting an informational 
JEP on this topic soon. JEP 261 and JEP 282 will be updated soon to 
reflect the updated proposal. For now, the old => new mapping is:

`-modulepath` (or `-mp`) => `--module-path` (or `-p`)
`-upgrademodulepath` => `--upgrade-module-path`
`-addmods` => `--add-modules`
`-limitmods` => `--limit-modules`
`-listmods` => `--list-modules`
`-XaddReads` => `--add-reads`
`-XaddExports` => `--add-exports`
`-Xpatch` => `--patch-module`

The `java` and `javac` launchers have been updated, as have the 
`javadoc`, `jlink`, `jar` and `jmod` tools. For now, the old form of the 
module options (except `-listmods`) still work as before as it will take 
time to transition. The jtreg test harness will need to be updated too.

The JEPs will detail the option syntax but briefly: the format of the 
values to these options has not changed, the separator between the 
option and value can be space or `=` in the case of `java` or `javac`, 
the separator must be `=` when using the JNI invocation API or 
_JAVA_OPTIONS or a VM options file.

Two other things to mention are `--class-path` (`-classpath` and `-cp` 
work as before of course), and `javac --inherit-runtime-environment` to 
inherit the module configuration from the runtime environment into the 
compilation environment.


So please try it out. As always, the most valuable feedback is from 
those trying out the builds to migrate or modularize existing libraries 
and applications.

-Alan

[1] https://jdk9.java.net/jigsaw/





More information about the jigsaw-dev mailing list