OpenJ9 Logo

What's new in the OpenJ9 project

Find out what's happening at the project. Read about the highlights of our latest release. Catch the latest blog posts from our blog site; get top tips or deep dives about key features of OpenJ9 or simply read about experiences of working in the community.

Latest release

Eclipse OpenJ9 version 0.21.0 released

20 July 2020

OpenJ9 version 0.21.0 supports OpenJDK version 8, 11, and 14. OpenJDK builds that contain version 0.21.0 are now available from the AdoptOpenJDK community project:

This release of OpenJ9 sees several performance enhancements:

  • 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.

In this release, we've introduced two new options:

  • -XX:[+|-]HandleSIGABRT affects the handling of the operating system signal SIGABRT. For compatibility with the reference implementation, set -XX:-HandleSIGABRT.
  • -XX:[+|-]PrintFlagsFinal outputs the values of a subset of configuration parameters in a format compatible with that produced by HotSpot. This is an initial implementation, and over time, we expect more options to be added to the output.

And for your convenience, the Application Programming Interface (API) documentation that applies to OpenJ9 can now be found in the 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.

On macOSĀ® systems: You should note that in this release, 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.

For all the details of changes and improvements in 0.21.0, read the Version 0.21.0 "What's New" page and see also the OpenJ9 Release notes.

New release info

Recent blogs

Arraylets: What are They?

02 June 2020

Garbage Collectors (GCs) are responsible for allocating and deallocating objects making sure the running application run as smoothly as possible. There are many types of GC configurations out there, mark sweep, generational, region based, concurrent, parallel, reference counting [1] and a combination of these. The way we represent objects in each of these configurations, also…

Manipulating the Class File with AsmTools

27 May 2020

A Java class file is represented with a hardware & OS independent binary format to be loaded & interpreted at runtime. Except the magic number (the first 4 bytes such as CAFEBABE) and the version number (the 8th byte) which are visible or can be manually edited in a hexadecimal way, modifying the majority of…

See all blogs