Migrating from earlier releases of the IBM SDK, Java Technology Edition
Considerations when migrating from earlier releases of the IBM® SDK, Java™ Technology Edition.
This release contains many new features and functions compared with earlier releases, which might require careful planning. For an overview, read the What's new section.
- For z/OS®, the JRIO component was deprecated in IBM SDK, Java Technology Edition Version 7 and is removed from this release. Instead, use the record I/O facilities that are provided in the JZOS component. For more information about JZOS, see: Java Batch Launcher and Toolkit for z/OS.
- The system property jdk.map.althashing.threshold is no longer available with this release because the alternative hashing algorithm for hashed maps is no longer used. The alternative hashing algorithm was introduced in earlier releases of Java to improve the performance of java.util.HashMap under certain conditions. This implementation is improved in this release by using balanced trees rather than linked lists to store map entries. Classes WeakHashMap and Hashtable revert to the behavior before the alternative hashing algorithm. However, changes to the classes HashMap and HashSet can change the iteration order of items that are returned from hashed maps.
- The Annotation Processing Tool is no longer supplied with this release. The tool was deprecated in Version 7, and is superseded by the Pluggable Annotation Processing API (JSR269). If you use annotation processing, you must migrate to this new facility, which was introduced in Version 6. For more information, see https://docs.oracle.com/javase/7/docs/technotes/guides/apt/index.html.
- The IBM accessibility feature, JawBridge, is no longer supported in this release. If you want to use a screen reader, such as JAWS for Windows, configure your runtime environment to use the Oracle Java Access Bridge. For more information, see Enabling Java accessibility support.
- The jdkconv tool is not included in this release.
- On AIX®, the Common Desktop Environment (CDE) color palette now supports high color settings. As a result, the default SystemColor settings for the Abstract Windows Toolkit (AWT) are now the same as Motif Toolkit on earlier releases. To revert to the earlier AWT color palette settings, set the ibm.awt.mediumColor system property to true. For more information, see -Dibm.awt.mediumColor option in Miscellaneous system property command-line options.
- The system property com.ibm.IgnoreMalformedInput is removed in this release because it is applicable only to IO converters, which are no longer available in Java SE 8.
- The system property ibm.stream.nio is removed in this release. The function of this property was to enable the use of NIO converters by default instead of IO converters. However, IO converters are no longer available in Java SE 8 and therefore the property is redundant.
- From this release, the ORB automatically manages the number of concurrent connections to the server endpoint. This change in behavior can cause some issues, which are detailed in Autonomic connection management issues.
- AIX, Linux®, and z/OS: The ALT-key no longer highlights the first menu in the active window of the user interface unless your application uses a Windows Look and Feel (com.sun.java.swing.plaf.windows.WindowsLookAndFeel).
- The character set name
IBM1047_LFis changed to
- From service refresh 5 on z/OS, there is a new minimum hardware requirement of IBM System z9® or newer. The older z800 and z900 systems are no longer supported.
- Linux: To satisfy a dynamic linking dependency, the standard C++ library, libstdc++.so.6, must be installed.
- In order to support compact Strings
(-XX:+CompactStrings), java.lang.String no longer contains an
offset field, which is used to indicate the start of the String in the underlying
char data. Performance might be affected when using the following methods in
your code for values of beginIndex other than zero:
- String.substring(int beginIndex)
- String.substring(int beginIndex, int endIndex)
In earlier releases, a new String is created but the underlying char is shared with the original String so that no char data is copied. If performance is significantly degraded because char data is now being copied, try re-implementing the code to avoid copying the String data.Note: Applications that are written to run on Java implementations that use the HotSpot VM are unaffected, because String data is copied, even when using a beginIndex of zero.
- In service refresh 5, the following changes apply to the IBM J9 virtual machine:
- The default value for the -Xloaminimum option is changed from 0 to 0.01. This setting allocates a minimum tenure space of 1% to the large object area (LOA) instead of 0%.
- Enhancements are made to the IBM Garbage Collector and Memory Pool MXBeans to provide more detailed information about Garbage collection activity and associated memory pools. If your monitoring application is written to expect only one heap memory pool, or relies on the memory pool name
Java heap, you can revert to the earlier implementation by using the -XX:+HeapManagementMXBeanCompatibility option. For more information about this option and the new MemoryPool and GarbageCollector names that are provided, see -XX:[+|-]HeapManagementMXBeanCompatibility.
- The OperatingSystemMXBean.getProcessCpuTime() method is changed to return values in nanoseconds instead of hundreds of nanoseconds. If your application uses this method, either modify the application or revert to the previous behavior by using the -Dcom.ibm.lang.management.OperatingSystemMXBean.isCpuTime100ns system property.
- The Runtime Instrumentation facility, available in Power® 8, zEC12, and later processors is disabled by default. This facility can be enabled with the -XX:+RuntimeInstrumentation option.
- The minimum supported maintenance level for AIX V6.1 is now TL9.
- The default size of a shared class cache is now 300 MB, with exceptions for persistent caches with less than 6 GB of free disk space, and non-persistent caches on Linux. For more information, see -Xshareclasses.
- Default shared classes cache directory permissions are stricter on operating systems other than Windows. For more information, see -Xshareclasses:cacheDirPerm.
- The default stack size for operating system threads on 64-bit z/OS is changed from 384 KB to the operating system minimum of 1 MB. For more information about this setting, see -Xmso.
- The JDWP implementation is replaced with the OpenJDK equivalent, so some of
the command options are changed. For more information, see the command-line
- Changes to the Attach API internal interfaces affect the SDK's internal class
library and the tools.jar and healthcenter.jar files:
- If an application uses a private copy of the tools.jar file from an earlier release, the application might be unable to use the attach API in this release because the Java classes do not match. Use the tools.jar file from this release instead.
- Similarly, the healthcenter.jar file from this release is not compatible with earlier releases.
- From fix pack 41, the appropriate heap size for an application is automatically determined and applied. For more information, see -XX:[+|-]UseGCStartupHints.
- From fix pack 41, Transparent Huge Pages (THP) are enabled by default when you use the
/sys/kernel/mm/transparent_hugepage/enabled) setting on Linux on x86 systems. For more information, see -XX:[+|-]TransparentHugePage.
-XX:[+|-]ExitOnOutOfMemoryErroroption is updated to exit only on VM
OutOfMemoryErrorsinstead of both VM and Java thrown errors, to match the Hotspot option. For more information, see
- The IBM signal handling implementation
is replaced in this release with the OpenJDK implementation. As a result, the
-Dcom.ibm.signalhandling.ignoreLogoffsystem property command-line option is now ignored. For more information, see Miscellaneous system property command-line options.
- TLS server certificates that are anchored by Symantec root certificate authorities are now distrusted. For more information, see What's New: service refresh 6 fix pack 25.
- Security protocols TLS 1.0 and 1.1 are disabled by default. For more information, see What's New: service refresh 6 fix pack 30.
- IBMJCEPlus is the default security provider. You can revert this update by changing the order of the providers in the jre/lib/security/java.security file in your SDK installation directory. For more information, see Enabling the IBMJCEPlus and IBMJCEPlusFIPS providers.
Deprecations and removals
- The IBM XML implementation is deprecated and will be replaced by the Oracle XML implementation in a future release.
- The -Xgc:splitheap option is deprecated and will be removed from a future release of the Eclipse OpenJ9 VM.
- The -Xfastresolve option is deprecated and will be removed from a future release of the Eclipse OpenJ9 VM.
- The -Xlp option is deprecated and will be removed from a future release of the Eclipse OpenJ9 VM. Instead, use the -Xlp:objectheap option to allocate the Java object heap by using large page sizes and the -Xlp:codecache option to allocate the JIT code cache by using large page sizes.
- The com.ibm.lang.management.MemoryMXBean.getGCMasterThreadCpuUsed() and com.ibm.lang.management.MemoryMXBean.getGCSlaveThreadsCpuUsed() methods are deprecated and will be removed from a future release of the Eclipse OpenJ9 VM. Use the com.ibm.lang.management.MemoryMXBean.getGCMainThreadCpuUsed() and com.ibm.lang.management.MemoryMXBean.getGCWorkerThreadsCpuUsed() methods instead.
- The following JSSE cipher suites are removed:
- The TLS renegotiation properties
com.ibm.jsse2.extended.renegotiation.indicatorare replaced by new properties
com.ibm.jsse2.allowLegacyHelloMessages. Use of the earlier properties has no effect, and no warning message is produced. For more information about the new properties, see Transport Layer Security (TLS) Renegotiation Issue in the security guide.
- The default operating system stack size on AIX and Linux on 64-bit IBM Power Systems is increased from 256 KB to 512 KB.
Migrating from earlier releases
If you are migrating from a release before Version 7, read the topic entitled Migrating from earlier releases in the appropriate platform user guide for Version 7. These user guides can be found at the following page: IBM SDK, Java Technology Edition, Version 7.