What's new in version 0.16

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

Features and changes

Binaries and supported environments

OpenJ9 release 0.16.0 supports OpenJDK 13, which is available from the AdoptOpenJDK community at the following link:

OpenJDK 13 with Eclipse OpenJ9 is not a long term support (LTS) release.

The latest builds of OpenJDK with OpenJ9 for Java 8 and 11 at the AdoptOpenJDK community are for Eclipse OpenJ9 release 0.15.2. Features mentioned in these release notes are not available in these builds. Although it might be possible to build an OpenJDK 8 or OpenJDK 11 with OpenJ9 0.16.0, testing at the project is not complete and therefore support for any of these features is not available.

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

Some class data sharing is enabled by default

Class data sharing is enabled by default for bootstrap classes, unless your application is running in a container. You can use the -Xshareclasses option to change the default behavior, including using -Xshareclasses:none to disable all class data sharing. For more information, see Class data sharing.

Automatic setting of initial heap size is enabled by default

OpenJ9 version 0.15.1 introduced the -XX:[+|-]UseGCStartupHints option, which, when enabled, turned on the automatic learning and setting of an appropriate heap size for an application. This option is now enabled by default.

Option to share VM anonymous classes

Prior to version 0.16.0, anonymous classes, those created by Unsafe.defineAnonymousClass, were not stored in the shared classes cache. They are now stored there by default, which means they are available for ahead-of-time (AOT) compilation, potentially improving startup performance. A new command, -XX:[+|-]ShareAnonymousClasses, is introduced that enables you to stop anonymous classes being stored in the shared classes cache.

Performance improvements for JVMTI watched fields on Power Systems

OpenJ9 version 0.14.0 introduced the -XX:[+|-]JITInlineWatches option, which turns on JIT operations to improve the performance of JVMTI watched fields. This option, which was enabled by default in version 0.15.1, is now also supported on AIX® and Linux on Power Systems™.

Linux® on x86: Support for Transparent Huge Pages (THP)

When you use the madvise (/sys/kernel/mm/transparent_hugepage/enabled) setting on Linux on x86 systems, THP is now enabled by default. To disable this feature, set -XX:-TransparentHugePage on the command line when you start your application. The THP setting on other systems remains disabled by default when you use madvise, but can be enabled by setting -XX:+TransparentHugePage.

New jcmd tool

For compatibility with the reference implementation, OpenJ9 now includes an independent implementation of the jcmd tool for running diagnostic commands on a VM. For more information, see Java diagnostic command tool.

Changes to the shared classes cache generation number

The format of classes that are stored in the shared classes cache is changed, which causes the JVM to create a new shared classes cache rather than re-creating or reusing an existing cache. To save space, you can remove all existing shared caches unless they are in use by an earlier release. As a result of the format change, a layer column now appears in the output of the -Xshareclasses:listAllCaches option. This change is to support a future enhancement.

For more information about the -Xshareclasses option, including the destroy options that you can use to remove caches, see -Xshareclasses.

Start of content that applies to Java 13 and later The -Xverify:none and -noverify options are deprecated

The option -Xverify:none (and its equivalent -noverify) is deprecated in Java 13. Both options might be removed in a future release. OpenJ9 issues a warning if these options are used in Java 13 and later versions. End of content that applies only to Java 13

Full release information

To see a complete list of changes between Eclipse OpenJ9 V0.15.1 and V0.16.0 releases, see the Release notes.