Release-to-release compatibility

This topic describes considerations when you are moving Java™ applications from an earlier release to the most current release.

You should take into account the following compatibility issues when running Java applications in the current release:
  • IBM® Technology for Java only supports JVMTI interfaces from PASE for i. As a result, JVMTI agents will need to be ported to PASE for i.
  • When using PASE for i native methods, the architecture of the native code needs to match the architecture of the JVM. That is, object binaries need to be compiled as 32-bit binaries for a 32-bit JVM, or as 64-bit binaries for a 64-bit JVM. This also applies to agents, such as user-provided JVMTI agents.
  • The Java system property, java.version, is not recognized as an input property for the IBM Technology for Java JVM. In prior releases, the Classic JVM was available which honored the java.version Java system property as input for determining which JDK to use. Beginning in IBM i 7.1, the IBM Technology for Java is the only available JVM and it requires the environment variable JAVA_HOME to be specified to determine which JDK to use.
  • In the Classic JVM, the Java method System.getenv() would return the value of the appropriate ILE environment variable. In IBM Technology for Java, this will instead return the PASE for i environment variable. This may cause issues where the user sets an environment variable in an ILE native method and expects a later call to System.getenv() to retrieve it. In general, the user needs to be aware that ILE and PASE for i have their own disjoint sets of environment variables.
  • Support for direct processing stopped in IBM i 6.1. In IBM i 7.1, the Java program commands will continue to be supported, but only when using them to target a previous release. See the Release-to-release compatibility section for IBM i 6.1 for additional information. From i 7.2, all java program commands are no longer supported.