What's new in version 0.17.0
The following new features and notable changes since version 0.16.0 are included in this release:
- New binaries and changes to supported environments
- New shared classes cache suboptions for layered caches
- New shared classes cache suboption to skip disk space check
- Option to share 'Unsafe' classes
- Option to record class relationships in the verifier
- Support for the IBM z15® processor
- Digest algorithm is re-enabled
- Direct Dump Reader (DDR) VM restriction removed
- The format of the HOOKS section of a Java dump has changed
- LUDCL caching disabled by default
Features and changes
Binaries and supported environments
OpenJ9 release 0.17.0 supports OpenJDK 8, 11, and 13. Binaries are available from the AdoptOpenJDK community at the following links:
Note: The Windows® and macOS® binaries from the AdoptOpenJDK community for OpenJDK 8, 11, and 13 have been updated to OpenSSL v1.1.1d. Look for the following release names to identify these packages:
- OpenJDK 8:
- OpenJDK 11:
- OpenjDK 13:
Note: The last release of OpenJDK 8 and 11 from AdoptOpenJDK is Eclipse OpenJ9 0.15.1. To read about other features and changes in the VM since 0.15.1, check the Version 0.16.0 release notes too.
To learn more about support for OpenJ9 releases, including OpenJDK levels and platform support, see Supported environments.
New shared classes cache suboptions for layered caches
(Experimental, 64-bit only)
New suboptions are available for creating layered caches, where a cache builds on another cache with the same name. You can use these suboptions to save space when building a Docker container, for example.
Note: Because these suboptions are experimental, do not use them in a production environment.
The new options are:
layer=<number>(see this section for more information about layered caches)
New shared classes cache suboption to skip disk space check
When creating a persistent shared classes cache, the OpenJ9 VM checks that there is sufficient disk space available on the file
system. For file systems that do not support the checking of free space, you can set the
-Xshareclasses:noPersistentDiskSpaceCheck option, which causes the VM to skip the space checking operation. If there isn't enough disk space available when the cache is written, a SIGBUS or SIGSEGV signal occurs and the VM ends. For more information, see the -Xshareclasses:noPersistentDiskSpaceCheck option.
Option to share 'Unsafe' classes
Classes created through
Unsafe.defineClass are now stored by default in the shared classes cache. You can use the
-XX:-ShareUnsafeClasses option to change the default behavior. For more information, see -XX:[+|-]ShareUnsafeClasses.
Option to record class relationships in the verifier
A new command line option
-XX:+ClassRelationshipVerifier allows you to record class relationships in the verifier, which avoids unnecessary class loading and reduces VM startup time. This is a new approach to bytecode verification that delays validating the relationships between classes until the classes are required to be loaded for a program's execution thus loading only those classes that are needed. For more information, see -XX:[+|-]ClassRelationshipVerifier.
Support for the IBM z15 processor
This release adds JIT compiler support for exploiting z15 instructions.
Digest algorithm is re-enabled
Direct Dump Reader (DDR) VM restriction removed
Prior to this version, you had to use a 32-bit VM to look at a 32-bit core, and a 64-bit VM to look at a 64-bit core when using DDR. This restriction has now been removed.
The format of the HOOKS section of a Java dump has changed
The format of the
HOOKS section of a Java dump, which shows internal VM event callbacks, has changed:
- Recorded times have been changed from milliseconds to microseconds to provide increased precision.
- A new field,
3HKTOTALTIME, is included, which gives the total duration of previous events.
- The hook data is now reset after each Java dump.
For more information and an example of the new format, see Java dump: HOOKS
LUDCL caching disabled by default
By caching the Latest User Defined Class Loader (LUDCL), Java applications that use deserialization extensively can see a performance improvement. This capability is controlled by the -Dcom.ibm.enableClassCaching system property and is now disabled by default due to issue #7332.
Note: Versions of the documentation before 0.17.0 incorrectly identified this property as disabled by default when it was actually enabled by default in the VM.
Full release information
To see a complete list of changes between Eclipse OpenJ9 version 0.16 and version 0.17.0 releases, see the Release notes.