CICS® provides
the support you need to run a Java™ program in a z/OS Java Virtual Machine
(JVM) executing under the control of a CICS region. CICS support for JVMs
allows you to run CICS application programs written in the Java language and
compiled to bytecode by any standard Java compiler. You can find information
about Java on the z/OS platform at http://www.ibm.com/servers/eserver/zseries/software/java/
CICS TS 3.1 supports
the JVM provided by the
IBM® Software Developer Kit for z/OS®, Java 2 Technology Edition, Version 1.4.2 .
Note: There are two versions of the IBM Software Developer
Kit for z/OS, Java 2 Technology Edition Version 1.4, a 31-bit and a 64-bit
version. CICS TS 3.1 supports
only the 31-bit version, which must be at the 1.4.2 level.
This
JVM features persistent reusable JVM technology and includes several optimizations
designed for the execution of CICS transactions. These optimizations are:
- The ability for JVMs to share a cache of commonly-used class files that
are already loaded, enabling faster JVM startup and reducing the cost of class
loading. When a new JVM that shares the class cache is initialized, it can
use these pre-loaded classes instead of reading them from the file system.
Also, if the JVM performs just-in-time (JIT) compilation for any of the classes,
it can write the results back to the shared class cache, and other JVMs can
then use the compiled classes. All the heap data (objects and static variables)
are owned by the individual JVMs; this maintains the isolation between the
applications being processed in the JVMs.
- The serial reuse of a JVM for multiple Java programs, avoiding most of
the initialization costs. Serial reuse might or might not involve resetting
the state of the JVM between uses.
- An optimized garbage-collection scheme, enabled by the clean separation
of short-lived application objects from long-lived classes, objects, and native
state (that is, non-Java or C language state), which are reset.
The structure of a JVM tells you what you need to know
about the structure of a JVM in order to use JVMs with CICS.
CICS performs the following management tasks relating to JVMs:
- CICS creates JVMs. This process is described in How CICS creates JVMs.
- CICS manages the pool of JVMs that it has created. This process is described
in How CICS manages JVMs in the JVM pool.
- CICS allocates JVMs to applications that need to run a Java program. This
process is described in How CICS allocates JVMs to applications.
- Most JVMs can be reused once an application has finished using them to
run a Java program. There are three levels of reusability. JVMs might be reset
and reused (resettable JVMs), or they might be reused without being reset
(continuous JVMs), or they might be thrown away after use (single-use JVMs). How JVMs are reused explains the difference between these
types of JVM.
- CICS creates a shared class cache so that some of the JVMs in the CICS
region can share commonly-used class files and compiled classes. CICS also
provides an interface so that you can manage the shared class cache. The shared class cache describes this.
Setting up Java support tells you how to set up and use
JVMs in your CICS system.
Java
programs that ran under CICS Transaction Server for z/OS, Version 2 Release 2 or CICS Transaction Server for z/OS, Version 2 Release 3 can also
run under CICS Transaction Server for z/OS, Version 3 Release 1. CICS Transaction Server for z/OS, Version 2 supported
the JVM created by the IBM Developer Kit for OS/390 Java 2 Technology Edition
Version 1.3.1s, which also featured the persistent reusable JVM technology.
However, the older type of JVM that was introduced in CICS Transaction Server for OS/390®, Version 1 Release 3,
which was not reusable, is no longer supported. Any Java programs that ran
under CICS Transaction Server for OS/390, Version 1 Release 3 must
be migrated to Java 2 to run under the JVM provided by the IBM Software Developer Kit for z/OS, Java 2 Technology Edition, Version 1.4.2. Removal of support for CICS Transaction Server for OS/390, Version 1 Release 3 JVMs has more information about this.