These release notes support the Eclipse OpenJ9™ 0.44.0 release plan.
OpenJ9 release 0.44.0 supports OpenJDK 8, 11, 17, and 21.
All releases are tested against the OpenJ9 functional verification (FV) test suite, the OpenJDK test suites, and additional tests provided by Adoptium.
To learn more about support for OpenJ9 releases, including OpenJDK levels and platform support, see Supported environments.
The following table covers notable changes in v0.44.0. Further information about these changes can be found in the user documentation.
Issue number | Description | Version / Platform | Impact |
---|---|---|---|
#18900 | Change in behavior of the -Djava.security.manager system property for OpenJDK version 8. | OpenJDK 8 |
In OpenJDK versions before version 18, attempts to load a SecurityManager with the class name allow or disallow resulted in an error and the application was not starting. To resolve this issue, OpenJDK version 17 ignores these options and from 0.41.0 release onwards, OpenJDK version 11 also ignores these options. With this release, OpenJDK version 8 too ignores the allow and disallow keywords, if specified. |
#17990, #18845 | Display of multiple warnings on loading the same agent is now restricted on AIX systems. | OpenJDK 21 and later (AIX) | Earlier, on AIX systems, warnings were issued each time the agents were loaded dynamically into a running VM after startup without specifying the `-XX:+EnableDynamicAgentLoading` option. These multiple warnings were issued even if the same agents were loaded before.
Now, from the 0.44.0 release onwards, AIX systems, like other OpenJ9 supported operating systems, can detect whether an agent was previously loaded or not. Therefore, like other platforms, on AIX systems also, the warnings are issued only once for the same agent when the |
#18342 | XL C++ Runtime 16.1.0.7 or later is required for AIX OpenJ9 builds on OpenJDK 8. | OpenJDK 8 (AIX) | Earlier, XL C++ Runtime 16.1.0.7 or later was required for AIX OpenJ9 builds on OpenJDK 11 and later. Now, AIX OpenJ9 builds require version 16.1.0.7 or later of the XL C++ Runtime on OpenJDK 8 as well. |
#18218 | The -XX:[+|-]ShowUnmountedThreadStacksoption is added to control the inclusion of the unmounted virtual threads in a Java™ core file. | OpenJDK 21 and later | Java core file lists stacks of only those threads that are mapped to platform threads. An unmounted virtual thread is not mapped to any platform thread. Therefore, the stack of any unmounted virtual thread is not included in the Java core file and thus, the virtual thread information remains incomplete.
You can use the -XX:+ShowUnmountedThreadStacks option to include all the thread data that a VM is aware of, both regular Java threads and the unmounted virtual threads, in a Java core file. |
#19173 | Flag names that refer to the fields of J9BuildFlags are changed in the Direct Dump Reader (DDR) code | All versions | User plug-ins in the DDR code might contain code that has J9BuildFlags references to read the build flags in the system dump data. The names of J9BuildFlags fields changed over time and therefore, supporting system dumps with different build flags became a challenge.
Earlier, field names in J9BuildFlags were based on names defined in j9.flags. Now, when the J9BuildFlags is generated for each build, the flag names are those names that are specified in j9cfg.h (derived from j9cfg.h.ftl or j9cfg.h.in) instead of the names that are defined in j9.flags. If the plug-in code contains references to fields of J9BuildFlags to read the build flags in the system dump data, you must change references to use the names as specified in j9cfg.h. |
#19045, #19069, | VMID query in the jcmd tool enhanced | All versions | Earlier in OpenJ9, when sending a jcmd command to a VM, you had to run jcmd -l to retrieve the pids for all the VMs found on the machine. Then, you had to use jcmd [vmid] [command] to send the command to the specific VM.
For OpenJDK compatibility, OpenJ9 now supports direct use of the Java process name, full or partial, as the ID to send the jcmd command. The jcmd tool also now supports specifying 0 as a VMID to target all VMs. |
#18720, #18996 | A new system property, -Dcom.ibm.tools.attach.fileAccessUpdateTime, is added to prevent automatic deletion of the Attach API control files in the /tmp folder. | All versions (Linux®) | In Linux environments, by default systemd-tmpfiles automatically deletes all files and directories that are stored in the /tmp/ folder that have not been changed or read within a specific time period. This deletion of files creates a problem for long running VM processes, such as Attach API, that need the control files in the /tmp/ folder to operate.
You can prevent the automatic deletion of the Attach API control files in the /tmp folder by setting the -Dcom.ibm.tools.attach.fileAccessUpdateTime system property. By default, this system property is set to 8 days. |
N/A | CentOS Stream 8 is out of support. | All versions (CentOS Stream 8) | CentOS Stream 8 is EOL from May 31, 2024 onwards and is removed from the list of supported platforms. |
The v0.44.0 release contains the following known issues and limitations:
Issue number | Description | Version / Platform | Impact | Workaround |
---|---|---|---|---|
#15011 | The default stack size for the main thread is a smaller platform-dependent value. | All | The main thread stack size was 1 MB in releases before 0.32. In the 0.32 release and later it was modified to a smaller platform-dependent value, the same value as the -Xmso setting. The 0.33 release increased the default -Xmso stack size on x64 platforms, but builds with OpenJDK 17 and later also require more stack space to run. These changes might result in a java.lang.StackOverflowError: operating system stack overflow. | Use -Xmso to set the default stack size. See the default value by using -verbose:sizes. |
#13767 | Compressed references mode is not available. | Apple silicon macOS | You can use only the large heap (non-compressed references) mode. | None |
#14803 | Using the -XX:+ShowHiddenFrames option in an OpenJ9 release that is built with OpenJDK 18 and later causes errors. | All platforms | Wrong exception might be thrown when using the Reflection API. | Avoid using the -XX:+ShowHiddenFrames option with OpenJDK 18 and later. |
#60 | The -XX:+CompactStrings option is having an adverse impact on the OpenJDK 11 indexOf() method results. | OpenJDK 11 | String compression is enabled by default for OpenJDK 11 and later. If you use the split(), substring(), replace(char, char), replaceAll() methods to create a String containing only Latin-1 characters from a String that contains non-Latin-1 characters and use that new String with the indexOf() or lastIndexOf() methods, the results might be wrong. | Disable String compression with the -XX:-CompactStrings option or use OpenJDK 17 or later. |
A full commit history for 0.44.0 release is available at Eclipse OpenJ9 v0.44.0.