What's new in version 0.18.1

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

Features and changes

Binaries and supported environments

OpenJ9 releases 0.18.0 and 0.18.1 support OpenJDK 8, 11, and 13. Binaries are available from the AdoptOpenJDK community at the following links:

Note: Binaries at AdoptOpenJDK that are labeled 0.18.1 include additional bug fixes. For more information, see the release notes.

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

Technical preview of JITServer technology

A technical preview of JITServer technology is included in this release. It's currently available for OpenJDK 8 and OpenJDK 11 running on Linux on x86-64.

JITServer technology decouples the JIT compiler from the VM and lets the JIT compiler run remotely in its own process. This mechanism prevents your Java application suffering possible negative effects due to CPU and memory consumption caused by JIT compilation. This technology can improve quality of service, robustness, and even performance of Java applications. For more information, see JITServer technology.

jextract now available on macOS for OpenJDK version 8

The jextract tool is now available on macOS platforms (as well as AIX® and Linux) for all current versions of OpenJDK: 8, 11, and 13.

New shared-classes cache suboption to turn off timestamp checking

You can set the -Xshareclasses:noTimestampChecks option to turn off timestamp checking in shared classes. For more information, see the -Xshareclasses:noTimestampChecks option.

Removal of restriction on layered shared cache

In the previous release, there is a restriction that the jvmtiSharedCacheInfo.isCorrupt field and the SharedClassCacheInfo.isCacheCorrupt() method cannot detect a corrupted cache that has a layer number other than 0. This restriction is now removed. See the Shared classes API documentation.

-Xmso 1 MB minimum value on z/OS 64-bit

On z/OS 64-bit, -Xmso has a 1 MB minimum value, to match the minimum stack space provided by the operating system. If you set a value smaller than 1 MB, the value is ignored.

jstat: new Java statistics monitoring tool

For compatibility with the HotSpot implementation, OpenJ9 now includes an independent implementation of the jstat tool for retrieving statistics on a VM. For more information, see Java statistics monitoring tool.

-XX:+TransparentHugePage is enabled by default on more Linux systems

-XX:+TransparentHugePage is enabled by default on Linux systems for POWER® and IBM Z® as well as x86 systems. This option takes affect only when Transparent Huge Pages (THP) is set to madvise on your system. When Transparent Huge Pages are used, your application footprint might increase.

New exit dump agent and ExitOnOutOfMemoryError option

The new exit dump agent shuts down the VM when the specified event occurs. The exit agent is at priority level 0 and the tool agent has been moved to priority level 1 to aid in mimicking the behavior of HotSpot options. For more information about dump agents, see -Xdump.

OpenJ9 now supports the HotSpot option -XX:[+|-]ExitOnOutOfMemoryError. You can set this option to have the VM shut down when a java.lang.OutOfMemory error is thrown by the VM or in Java code. The exit dump agent is used in the implementation of -XX:[+|-]ExitOnOutOfMemoryError.

LUDCL caching enabled 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 enabled by default. This feature was disabled for the 0.17.0 release due to issue #7332 which has now been resolved.

Terabytes suffix support for -X and -XX options that take a size

OpenJ9 now supports 't' and 'T' suffixes (indicating terabytes) for -X and -XX options that take a <size> parameter.

Improved support for pause-less garbage collection

Support for Concurrent scavenge mode is now extended to macOS. For more information, see -Xgc:concurrentScavenge.

-Xgc:noConcurrentScavenge option

The previously undocumented option -Xgc:noConcurrentScavenge disables pause-less garbage collection.

Support for OpenJDK HotSpot options

For compatibility, the following OpenJDK HotSpot options are now supported by OpenJ9:

Shared classes cache suboptions for layered caches no longer experimental

The suboptions for creating layered caches are no longer marked experimental.

The new options are:

-Djava.lang.string.substring.nocopy option

The previously undocumented Java 8 option -Djava.lang.string.substring.nocopy=true avoids String sharing by String.substring(), which is the same behavior as the Oracle HotSpot VM.

Full release information

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