What's new in version 0.25.0

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

Features and changes

Binaries and supported environments

OpenJ9 release 0.25.0 supports OpenJDK 16. OpenJDK 16 with Eclipse OpenJ9 is not a long term support (LTS) release.

Although it might be possible to build an OpenJDK 8 or OpenJDK 11 with OpenJ9 release 0.25.0, testing at the project is not complete and therefore support for new features that apply to these Java versions is not available.

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

Start of content that applies to Java 16 plus New JDK 16 features

The following features are supported by OpenJ9:

The following features will be supported by OpenJ9 in a future release:

  • JEP 389: Foreign linker API (incubator)
  • JEP 393: Foreign-memory access API (third incubator)

The following features are implemented in OpenJDK and available in any builds of OpenJDK 16 with OpenJ9:

  • JEP 347: Enable C++ 14 language features
  • JEP 380: Unix-domain socket channels
  • JEP 394: Pattern matching for instanceof
  • JEP 396: Strongly encapsulate JDK internals by default
  • JEP 392: Packaging tool
    • (Linux®, macOS®, and Windows™ only) Promoted from incubation to a production-ready feature in this release. See Using jpackage for details.

You can find the full list of features for JDK 16 at the OpenJDK project. Any remaining features that are listed do not apply to OpenJ9.

Note: Applications might be adversely affected by JEP 396 if they make use of internal APIs. You should update your application to use standard APIs. To temporarily work around this problem, set --illegal-access=permit on the command line, which prints a warning that is similar to the following example when an illegal access call is made:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.openj9.test.com.ibm.jit.Test_JITHelpers (file:/home/jenkins/workspace/Test_openjdk11_j9_sanity.functional_ppc64_aix_Nightly_testList_1/jvmtest/functional/Java8andUp/GeneralTest.jar) to field java.lang.String.value
WARNING: Please consider reporting this to the maintainers of org.openj9.test.com.ibm.jit.Test_JITHelpers
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

Start of content that applies to Java 11 (LTS) and later Support for the -verbose:module option

The -verbose:module option is now supported for Java 11 and later releases. This option writes information to stderr for each module that is loaded and unloaded.

Enabling zlibNX hardware-accelerated data compression and decompression on AIX

By default, AIX® uses the system zlib library for data compression and decompression.

On systems that contain the Nest accelerator (NX) co-processor, OpenJ9 now uses the zlibNX library instead, if it is installed. To learn more about hardware acceleration and the zlibNX library, see Hardware acceleration.

z/OS support for the %sysname dump token

The %sysname dump token is added on z/OS, which equates to the SYSNAME sysparm. See Dump agent tokens.

Single build for compressed references and non-compressed references

A single build now supports both compressed references and non-compressed references. The object reference mode is selected at run time based on the specified heap size (-Xmx) or by using command-line options that control the selection of compressed references.

If you used a large heap build for an earlier release of OpenJ9 because you did not require compressed references, you might need to turn it off if compressed references mode is being selected automatically at run time. Use the -Xnocompressedrefs option when you start your application.

The compressedrefs directory is no longer present in the single build.

To learn about the benefits of using compressed references, see Compressed references.

Full release information

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