What's new in version 0.42.0
The following new features and notable changes since version 0.41.0 are included in this release:
- New binaries and changes to supported environments
- OpenJ9
jextract
removed - Change in the
System.gc()
call behavior - New
-XX:[+|-]IProfileDuringStartupPhase
option added - New
-XX:[+|-]CRIUSecProvider
option added - New JDK 21 features
Features and changes
Binaries and supported environments
Eclipse OpenJ9™ release 0.42.0 supports OpenJDK 21.
OpenJDK 21 with Eclipse OpenJ9 is a long term support (LTS) release and supersedes OpenJDK 20 with Eclipse OpenJ9.
To learn more about support for OpenJ9 releases, including OpenJDK levels and platform support, see Supported environments.
OpenJ9 jextract
removed
The dump extractor tool, OpenJ9 jextract
, that was deprecated since the 0.26.0 release is now removed from Java 21 and later. The jpackcore
tool replaced the OpenJ9 jextract
tool after its deprecation.
Change in the System.gc()
call behavior
The System.gc
call triggers a global garbage collection (GC) cycle, which is a stop-the-world GC. If the System.gc()
call was made during an active GC cycle where the concurrent operation was in progress, the status of objects might not be updated. An object that was reachable when the concurrent operation started might be considered as reachable even if the object is no longer in use later. The System.gc()
call had to be called twice explicitly to ensure that all unreachable objects are identified and cleared.
Now, the System.gc()
call triggers the GC cycle twice internally to clear the unreachable objects that were not identified during the first GC cycle. The call also triggers finalization of the objects in the Finalization queues.
For more information, see Garbage collection.
New -XX:[+|-]IProfileDuringStartupPhase
option added
The VM uses heuristics to decide whether to collect interpreter profiling information during the VM startup. You can overrule the heuristics and control the collection of the profiling information during the startup phase by using the -XX:[+|-]IProfileDuringStartupPhase
option.
New -XX:[+|-]CRIUSecProvider
option added
When you enable CRIU support, all the existing security providers are removed from the security provider list during the checkpoint phase and CRIUSECProvider
is added by default.
You can now control the use of CRIUSECProvider
during the checkpoint phase with the -XX:[+|-]CRIUSecProvider
option. You can use all the existing security providers instead of the CRIUSECProvider
by specifying the -XX:-CRIUSecProvider
option.
For more information, see -XX:[+|-]CRIUSecProvider
.
New JDK 21 features
The following features are supported by OpenJ9:
- JEP 440: Record Patterns
- JEP 442: Foreign Function & Memory API (Third Preview)
- JEP 444: Virtual Threads
- JEP 446: Scoped Values (Preview)
- JEP 448: Vector API (Sixth Incubator)
- JEP 451: Prepare to Disallow the Dynamic Loading of Agents
- JEP 453: Structured Concurrency (Preview)
The following features are implemented in OpenJDK and available in any build of OpenJDK 21 with OpenJ9:
- JEP 430: String Templates (Preview)
- JEP 431: Sequenced Collections
- JEP 441: Pattern Matching for switch
- JEP 443: Unnamed Patterns and Variables (Preview)
- JEP 445: Unnamed Classes and Instance Main Methods (Preview)
- JEP 452: Key Encapsulation Mechanism API
You can find the full list of features for JDK 21 at the OpenJDK project. Any remaining features that are listed either do not apply to OpenJ9 or are not implemented and hence not applicable to OpenJ9 in this release.
Known problems and full release information
To see known problems and a complete list of changes between Eclipse OpenJ9 v0.41.0 and v0.42.0 releases, see the Release notes.