The changes in this update are:
- Ensure non-upgradeable modules cannot be upgraded even with --patch-module (originally tracked as JDK-8177844)
- Split `java --list-modules` option into `--list-modules` and `--describe-module`.
- Update `jar` and `jmod` tool so that their `--describe-module` output is the same as the java launcher output. For the `jar` tool then this now works in conjunction with `--release` to describe modules in multi-release JARs.
- Rename `-Xdiag:resolver` to `--show-module-resolution` and change output to make it easier to read and search.
- New option `--validate-modules` to catch conflicts/errors on the module path.
- Rename -Xlog `modules` tag to `module` and add module+load and module+unload. In addition `-verbose:module` as a simple way to enable logging of module load + unload.
- Revised proposal for the "Disallowing the dynamic loading of agents by default" issue, specifically -XX:-EnableDynamicAgentLoading, change the hotspot provider for the Attach API to not attach to the current VM, and support for executable JAR containing a java agent.
- Support dynamically loading of JMX and java agents into modular applications.
- Allow default file system provider to be overridden when patching system modules or running with a module path.
- Clarify Instrumentation::isModifableModule and equivalent JVM TI function to make it clear that it always returns true for unnamed modules.
- Change Lookup.defineClass to not require PRIVATE access to be dropped.
- Update ModuleFinder.of to ignore the Main-Class manifest attribute then it doesn't name a class in the JAR file.
- Simplify support for target platforms, specifically ModuleTarget is now one value for the target platform, the jmod tool has a new --target-platform option to replace --os-name and --os-arch, and the top level release file created by the build+jlink now have a TARGET_PLATFORM property rather than OS_NAME and OS_ARCH.
- Fix validation of module/package/class name to catch cases where a Java identifier in a name is a keyword, null or boolean literal, or underscore.
- Fix ModuleFinder.of(Path...) to handle paths on custom file systems containing JAR files.