Considerations for using IBM Technology for Java Virtual Machine

Be aware of these considerations when using IBM® Technology for Java™ Virtual Machine.

Java Native Interface considerations

If you have integrated language environment (ILE) programs that use Java Native Interface (JNI) functions, you must compile these programs with teraspace storage enabled. Because teraspace storage is not enabled by default, it is likely that you need to recompile. This is necessary because the Java object is in PASE for i storage, which is mapped on top of teraspace storage, and a teraspace storage pointer is returned. Also, the JNI functions, such as GetxxxArrayRegion, have a parameter to a buffer where the data is placed. This pointer must point to teraspace storage to enable the JNI function in PASE for i to copy the data into this storage. If you have not compiled your program with teraspace storage enabled, you will receive the escape message MCH4443 (Invalid storage model for target program LOADLIB).

Adopted authority

Adopted authority for Java programs is not supported by IBM Technology for Java Virtual Machine.

Diagnostic messages and files

When ILE native methods encounter problems, you will see messages in the job log. When IBM Technology for Java Virtual Machine or PASE for i native methods encounter problems, they will dump diagnostic files into the IFS. There are several types of these "core files," including core.*.dmp, javacore.*.txt, Snap*.trc, and heapdump.*.phd. The files range in size from tens of KB up to hundreds of MB. In most cases, more severe problems produce larger files. The larger files can quickly and quietly consume large amounts of IFS space. Despite the space these files consume, they are useful for debugging purposes. When possible, you should preserve these files until the underlying problem has been resolved.

For more information, see Advanced control of dump agentsLink outside Information Center in the Java Diagnostics Guide.

Migration considerations

When migrating from the Classic JVM, which was the default 64-bit virtual machine that existed in IBM i 6.1, to the 32-bit version of IBM Technology for Java, consider that there may be limitations when using the 32-bit environment. For example, the amount of addressable memory is much smaller. In 32-bit mode, the Java object heap cannot grow much larger than 3 gigabytes. You will also be limited to running approximately 1000 threads. If your application requires more than 1000 threads or a Java object heap larger than 3 gigabytes use the 64-bit version of IBM Technology for Java. See Support for multiple Java Development Kits (JDKs) for more information.

Table 1 shows the levels of Java Developer Kit, which is also referred to as Classic Java, and the suggested IBM Technology for Java replacement.
Note: IBM recommends Java SE 71 when migrating from Java Developer Kit 1.4 or 5.0.
Table 1. Classic Java levels and the suggested IBM Technology for Java replacement.
If you are using classic Java version: Then possible IBM Technology for Java replacements include:
Java Developer Kit 1.4 (5761-JV1 option 6)
  • Java SE 71 32 bit (5770-JV1 option 14)
  • Java SE 71 64 bit (5770-JV1 option 15)
  • Java SE 7 32 bit (5770-JV1 option 14)
  • Java SE 7 64 bit (5770-JV1 option 15)
  • Java SE 6 32 bit (5770-JV1 option 11)
  • Java SE 6 64 bit (5770-JV1 option 12)
  • Java SE 8 32 bit (5770-JV1 option 16)
  • Java SE 8 64 bit (5770-JV1 option 17)
Java Developer Kit 5.0 (5761-JV1option 7)
  • Java SE 71 32 bit (5770-JV1 option 14)
  • Java SE 71 64 bit (5770-JV1 option 15)
  • Java SE 7 32 bit (5770-JV1 option 14)
  • Java SE 7 64 bit (5770-JV1 option 15)
  • Java SE 6 32 bit (5770-JV1 option 11)
  • Java SE 6 64 bit (5770-JV1 option 12)
  • Java SE 8 32 bit (5770-JV1 option 16)
  • Java SE 8 64 bit (5770-JV1 option 17)
Java Developer Kit 6 (5761-JV1option 10)
  • Java SE 71 32 bit (5770-JV1 option 14)
  • Java SE 71 64 bit (5770-JV1 option 15)
  • Java SE 7 32 bit (5770-JV1 option 14)
  • Java SE 7 64 bit (5770-JV1 option 15)
  • Java SE 6 32 bit (5770-JV1 option 11)
  • Java SE 6 64 bit (5770-JV1 option 12)
  • Java SE 8 32 bit (5770-JV1 option 16)
  • Java SE 8 64 bit (5770-JV1 option 17)