Java is popular throughout the IT industry and, for many organizations, is now their programming language of choice. CICS Transaction Server (TS) has steadily extended its support for Java-based workloads as part of the drive toward modernizing business applications and using them in a Service-Oriented Architecture (SOA).
CICS TS Version 3.2 adds further support for Java, making this version essential for anyone already running Java workloads in CICS environments. It includes enhancements, based on real use cases, for better manageability, serviceability, and usability when running Java technology-based workloads in CICS TS.
The expectations of CICS customers for Java have matured over time. When IBM first introduced Java support in CICS TS, Java was expected to behave much like COBOL; today, the expectation is that Java in CICS TS should be much like Java everywhere else.
Before CICS TS V3, the preferred Java implementation in CICS was the IBM persistent reusable Java Virtual Machine (JVM) to distribute the cost of starting the JVM over multiple runs. Providing applications were appropriately coded, the JVM was able to reset itself to a clean state after each application run. This usage model made it more difficult to write Java programs for CICS. Because of this and performance-related issues, many users of Java in a CICS TS environment elected to exclusively use the continuous JVM.
Recent versions of the JVM don’t include the persistent reusable JVM extensions. To make CICS TS consistent with this change, CICS TS V3.2 now supports only the continuous JVM, first introduced in Version 2.3. To enhance performance, it offers the ability to omit resetting the JVM between CICS tasks, and to cache states between transactions. The CICSPlex system manager Web User Interface (WUI) also has been made consistent with the changes by removing options related to the persistent reusable JVM.
As a Java application-execution environment, the continuous JVM is more consistent with Java in other environments and on other platforms. It ensures complete isolation between concurrently running tasks in different JVMs, though consideration must to be applied to tasks running serially in the same JVM and their use of static variables.
Adapting to a Continuous JVM
IBM provides the CICS JVM application isolation utility for checking the suitability of Java applications so they can be used in the continuous JVM environment. It details the use of a static state in an application (the main cause of isolation issues between serial users of a JVM) to help identify dependencies on the initialization of static variables.
The tool also is useful in general deployment scenarios for determining whether Java applications are suitable candidates for deployment in CICS TS. The tool helps the system administrator audit compiled Java programs to see whether they’re likely to experience problems when deployed to a continuous JVM environment.
In practice, most CICS Java workloads now use the continuous JVM to benefit from its considerable performance advantages.