These release notes support the Eclipse OpenJ9 0.9.0 release plan.
The following additional OpenJDK binaries that contain the OpenJ9 VM are now available from the AdoptOpenJDK community:
- OpenJDK version 10
- OpenJDK version 8 32-bit Windows
- OpenJDK version 8 x86-64 Linux (non-compressed references VM for large heaps)
Builds are tested against the OpenJ9 functional verification (FV) test suite, the OpenJDK test suites, and additional tests at AdoptOpenJDK. Not all tests are complete for AIX and Windows platforms.
For a full OpenJ9 support statement, see Supported environments.
The following table covers notable changes in v0.9.0. Further information about these changes can be found in the user documentation.
Issue number | Description | Platform | Impact |
---|---|---|---|
#1288 | SharedClassCacheInfo no longer contains a JVMLEVEL constant |
OpenJDK10 and later: All platforms | SharedClassCacheInfo.getCacheJVMLevel() used to return the JVMLEVEL constant that maps to a Java version number, for example JVMLEVEL_JAVA8 . This call now returns only the Java version number, for example 10 for Java 10. |
#1370 | New nogc GC policy |
All platforms | Under this policy, no memory is reclaimed through garbage collection. The Java object heap is expanded until an OutOfMemory error is generated and the VM shuts down.Enable this policy with the -Xgcpolicy:nogc or -XX:+UseNoGC options. You might use this mode for testing or for short-lived applications. |
#378 | DDR support is now available | Linux, Windows | Ability to diagnose problems with the VM, garbage collector, or JIT. |
#1699 | Specify heap limits as a percentage of total memory | All platforms | Ability to easily set heap limits with the -XX:MaxRAMPercentage and -XX:InitialRAMPercentage options instead of statically setting them with the -Xmx and -Xms options. |
#1668 | Idle tuning feature enabled | Linux on Z, Linux on Power systems | In addition to the support already available, there is the ability to maintain a minimal memory footprint during the life time of an application. See: -XX:[+|-]IdleTuningCompactOnIdle, -XX:[+|-]IdleTuningGcOnIdle, -XX:IdleTuningMinIdleWaitTime, and -XX:IdleTuningMinFreeHeapOnIdle |
#1517 | Changes to the default Java heap size for applications that run inside a container | Linux | By default, 75% of the physical memory is allocated for the maximum Java heap setting when the -XX:+UseContainerSupport option is set. |
#1500 | Support for nested jar files | All platforms | Improvements to the com.ibm.oti.shared API for manipulating nested jar files, such as used by Spring. |
#1786 | Changes to OpenJ9 java.lang.String class and use of OpenJDK StringBuffer and StringBuilder |
OpenJDK 9+, all platforms | To match the behavior of OpenJDK, java.lang.String no longer has a count field, which changes the way that String.subString() works compared to Java 8. Similarly StringBuffer and StringBuilder do not share the value array with any String created by toString() . |
#1603, #1642, eclipse/omr#2494, eclipse/omr#2524 | Full support for shutdown signals | All Linux variants, AIX | For shutdown signals (SIGINT , SIGTERM and SIGHUP ), a Java signal handler can be registered. The default Java shutdown handler is properly registered for shutdown signals. Similarly, a Java signal handler can be registered for SIGCONT . |
#1816 | Temporary solution to support shutdown signal handlers on Windows | Windows | A native shutdown handler is registered for shutdown signals (Ctrl+C , SIGINT and SIGTERM ). A shutdown handler is responsible for invoking java.lang.Shutdown.exit . |
The v0.9.0 release contains the following known issues and limitations:
Issue number | Description | Platform | Impact | Workaround |
---|---|---|---|---|
#378 | DDR support | AIX | Inability to diagnose problems with the VM, garbage collector, or JIT. | None |
#54 | Signal handling | All platforms | Currently, shutdown signals (SIGINT , SIGHUP and SIGTERM ) and SIGCONT are fully supported on Unix platforms (pLinux, zLinux, xLinux, AIX and zOS). Full support for shutdown signals is pending on Windows; signal handlers cannot be registered by using sun.misc.Signal or dk.internal.misc.Signal . Also, support for other POSIX signals is pending. See SunMiscSignalTest.java for the list of signals that need to be supported. |
None |
#479 | Non-compressed references VM builds not available | AIX, Windows, Linux on Z, Linux on Power | Heaps larger than 57GB are not supported. | Manual builds are possible by following our detailed build instructions. |
#1938 | Default shared classes cache size (16MB) is too small on Java 8 64-bit binaries. | All platforms | Poorer performance for applications that could benefit from a larger cache size. | Manually set the shared cache size to at least 60 MB when you start your application (-Xscmx60m ). |
#897 | Javadoc not building some OpenJ9 extensions. | All platforms | Some API documentation is missing in the build/<platform>/docs directory. |
None |
#898 | Javadoc building some unsupported OpenJ9 extensions. | All platforms | Some API documentation in build/<platform>/docs is not supported with OpenJ9. |
None |
#17 | Builds contain extra shared libraries. | All platforms | Shared libraries must not be used in production. | None |
The following issues (in numerical order) relate to test failures:
#244 testCrNocr in VmArgumentTests failed - java.lang.AssertionError: Target process failed
#366 cmdLineTest: cmdLineTester_jep178_staticLinking_SE90 failed due to cannot find /lib/amd64/compressedrefs/testjep178_static
#480 j9vm.test.softmx.SoftmxRemoteTest.setUp server is not ready after 120 seconds
#1127 jdk_io test error
#1128 jdk_lang test failures
#1129 jdk_net test failure
#1130 jdk_nio test failures
#1131 jdk_util test failures
#1144 jdk_rmi test failures
#1151 ARM Hang while compiling test/Jsr292
#1203 TestUTF8 fails with assertion Unsafe_copySwapMemory0 is unimplemented
#1205 ARM sigbus from initialiseAOTRelocationHeader
#1209 ARM Assertion in J9TransformUtil.cpp
#1212 ARM JVM_GetVmArguments not implemented
#1430 openjdk9-openj9 jdk_lang test failures
#1431 openjdk9-openj9 jdk_io test failures
#1432 openjdk9-openj9 jdk_net test failures
#1433 openjdk9-openj9 jdk_nio test failures
#1434 openjdk9-openj9 jdk_util test failures
#1435 openjdk9-openj9 jdk_rmi test failures
#1566 java.lang.IllegalArgumentException: argument type mismatch received in JMX Bean test in Hotspot, but none in OpenJ9
#1626 JDK10 JLM_Tests_interface FAILED
#1765 Annotation testing failures
#1796 ARM: Hang in SharedClassesSysVTesting_0
#1814 SCCommandLineOptionTests/SCURLClassLoaderNPTest failed on JDK10-win_x86-64_cmprssptrs
#2019 Test-Extended-JDK8-linux_ppc-64_cmprssptrs_le TestAttachErrorHandling OOM in attach API
#2047 Intermittent NullPointerException in TestAttachErrorHandling.deleteIpcDirectories
#2114 cmdLineTester_jvmtitests_hcr_3 functional sanity rc010 gpf
#2129 Windows JDK8 jvmti tests failed with "NPT ERROR: Cannot open library"
#2141 Test-Extended-JDK8-aix_ppc-64_cmprssptrs startupShutdownRobustness IOException: Error deleting
#2213 Test-Extended-JDK8-win_x86 testOpenJ9DiagnosticsMXBean_0 hangs
#2227 Test-sanity.system-JDK10-linux_ppc-64_cmprssptrs_le Jlink directory count not be found
#2363 systemtest failed to build Test-sanity.system-JDK8-linux_390-64_cmprssptrs
#2385 DaaLoadTest_daa1_0 Test-sanity.system-JDK10-linux_x86-64 Segmentation error vmState=0x000507ff
#2472 cmdLineTester_jvmtitests_hcr_OSRG_nongold_1 Test-extended.functional-JDK10-linux_x86-64 rc004 gpf
Because some tests are not yet enabled, functional problems might not be exposed. In addition, some IBM authored functional verification testing is not yet contributed to Eclipse, such as issue #724.
The issues addressed in this release are listed at Eclipse OpenJ9 v0.9.0.