Graal now requires jdk-9-ea+152
doug.simon at oracle.com
Fri Jan 13 18:43:17 UTC 2017
The recent jigsaw refreshes to JDK 9 introduced backwards incompatible changes that impacted Graal. The major changes include:
1. The keyword for re-exporting dependencies changed from `public` to `transitive`.
2. The signature for ModuleDescriptor.provides() changed.
3. Reflection on non-public fields and methods requires the declaring package to be open to the caller's module.
4. Trailing digits are dropped from the names of automatic modules.
Furthermore, a version of Graal has now been integrated into JDK9 as the module named `jdk.vm.compiler`. This complicates developing and deploying github Graal on JDK9 since we need to replace this module at compile and run time with the Graal sources under development. As detailed in JDK-8171448, achieving the latter is possible via use of --patch-module and --upgrade-module-path. The only way I've found to compile Graal sources (and Graal test sources) on JDK9 without the builtin jdk.vm.compiler getting in the way is to emulate --strict-compliance mode. As such, I've added support to mx for projects to force this mode by appending `=` to the end of their javaCompliance attribute value (e.g., "javaCompliance" : "1.8=") in suite.py.
The Graal changes to address the above issues are now in https://github.com/graalvm/graal-core. After pulling them, you’ll need to download jdk9-ea+152 if you plan to develop Graal on JDK 9.
Let’s hope this is the last major jigsaw update ;-)
If you run into problems caused by these changes, please file issues at https://github.com/graalvm/graal-core
 https://bugs.openjdk.java.net/browse/JDK-8169069, https://bugs.openjdk.java.net/browse/JDK-8170987
More information about the graal-dev