What's new in version 0.21.0

The following new features and notable changes since v 0.20.0 are included in this release:

Features and changes

Binaries and supported environments

OpenJ9 release 0.21.0 supports OpenJDK 8, 11, and 14. Binaries are available from the AdoptOpenJDK community at the following links:

To learn more about support for OpenJ9 releases, including OpenJDK levels and platform support, see Supported environments.

Application Programming Interface (API) documentation

API documentation that applies to OpenJ9 can now be found in this user documentation for both JDK 8 and JDK 11. The documentation includes links to Oracle API documentation for information that is not specific to OpenJ9. See API overview.

Performance improvements

  • If the -Xtune:virtualized command line option is used, the default JIT scratch memory limit is now reduced from 256 MB to 16 MB. This reduces the peak from JIT compilation activity, allowing you to size containers more easily, based on the particular application's memory usage.

  • If the JIT is running in a container and no swap space is defined, the JIT dynamically adjusts its scratch memory consumption based on the amount of free physical memory available, to avoid out-of-memory (OOM) occurrences.

  • Several performance features were added to the AArch64 JIT compiler implementation that led to a throughput improvement on multiple applications of at least 20%. The most notable improvements were seen in global register allocation, recompilation (without profiling), CUDA support, concurrent scavenge GC policy, and the inlined code sequence for object allocations.

New -XX:[+|-]HandleSIGABRT option added

This option affects the handling of the operating system signal SIGABRT. For compatibility with the reference implementation, set -XX:-HandleSIGABRT. For more information, see -XX:[+|-]HandleSIGABRT.

New -XX:[+|-]PrintFlagsFinal option added

This release provides an initial implementation of the -XX:[+|-]PrintFlagsFinal option. It is currently incomplete and outputs only a subset of parameters. Over time, we expect more options to be added to the output. See -XX:[+|-]PrintFlagsFinal for more details about this option.

Update to NoClassDefFoundError exception message

The order in which class names are printed in a NoClassDefFoundError exception message now matches the output reported by HotSpot.

For example, in the following exception message:

java.lang.NoClassDefFoundError: mypackage/Main (wrong name: Main)

mypackage/Main is the class name encountered by the VM in the .class file, but "wrong name" Main was the provided class name. Prior to this update to the exception message, the encountered class name and the provided class name were swapped in the NoClassDefFoundError exception message.

macOS shared libraries version updated

The version information for shared libraries on macOS has been updated from 0.0.0 to 1.0.0. If an application has linked against a shared library from a previous OpenJ9 release, it needs to be re-linked against the new release. Failure to re-link causes an error Incompatible library version, requires version 0.0.0.

Full release information

To see a complete list of changes between Eclipse OpenJ9 v 0.20.0 and v 0.21.0 releases, see the Release notes.