What's new in version 0.16.0
The following new features and notable changes since version 0.15.1 are included in this release:
- New binaries and changes to supported environments
- Some class data sharing is enabled by default
- Automatic setting of initial heap size is enabled by default
- Option to share VM anonymous classes
- Performance improvements for JVMTI watched fields on Power Systems
- Linux on x86: Support for Transparent Huge Pages (THP)
- New Java™ diagnostic command (
- Changes to the shared classes cache generation number
-noverifyoptions are deprecated
- New JDK 13 features
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 Introduction to 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
/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
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
-noverify options are deprecated
-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.
New JDK 13 features
The following features are implemented in OpenJDK and available in any builds of OpenJDK 13 with OpenJ9:
- JEP 353: Reimplement the Legacy Socket API
- JEP 354: Switch Expressions (Preview)
- JEP 355: Text Blocks (Preview)
You can find the full list of features for JDK 13 at the OpenJDK project. Any remaining features that are listed do not apply to OpenJ9.
Full release information
To see a complete list of changes between Eclipse OpenJ9 version 0.15.1 and version 0.16.0 releases, see the Release notes.