Chapter 1. Introduction
1.4 CICS Transaction Server for z/OS 3.2 enhancements for Java
from Java source files.
C Header and Stub File Generator (javah) enables you to associate native methods with code written in the Java programming language.
Java Archive Tool (jar) combines multiple files into a single Java Archive (JAR) file.
JAR Signing and Verification Tool (jarsigner) generates signatures for JAR files and verifies the signatures of signed JAR files.
Native-To-ASCII Converter (native2ascii) converts a native encoding file to an ASCII file that contains characters that are encoded in either Latin-1, Unicode, or both.
Java Remote Method Invocation (RMI) Stub Converter (rmic) generates stubs, skeletons, and ties for remote objects, which includes RMI over Internet Inter-ORB Protocol
(RMI-IIOP) support.
IDL to Java Compiler (idlj) generates Java bindings from a given IDL file.
Serial Version Command (serialver) returns the serialVersionUID for one or more classes in a format that is suitable for copying into an evolving class.
Extcheck utility (extcheck) detects version conflicts between a target jar file and currently installed extension jar files.
Cross-platform dump formatter (jdmpview) is a dump analysis tool that allows you to analyze dumps. For more information, see the relevant chapter in the IBM JVM Diagnostics Guide located at:
http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html
INCLUDE FILES: C headers for JNI programs.
DEMOS: The demo directory contains a number of subdirectories that contain sample source code, demos, applications, and applets, that you can use.
COPYRIGHT: Copyright notice for the SDK for z/OS software. The user guides and the accompanying copyright files and demo directory are the only documentation that are included in this SDK for z/OS. You can view Sun’s software documentation by visiting the Sun Web site, or you can download Sun’s software documentation package from the Sun Web site:
http://java.sun.com
The following tools are not included in the IBM SDK:
MIF doclet
orbd
servertool
1.4 CICS Transaction Server for z/OS 3.2 enhancements for
Java
CICS Transaction Server for z/OS, Version 3 Release 2 can support the JVM that is provided by the 31-bit version of IBM SDK for z/OS, Java 2 Technology Edition, Version 5.
1.4.1 Usability enhancements
You can now specify any JVM option or system property
You can specify system properties in JVM properties or profile
Improved error messages and trace output:
Validation checks to address common user errors
CICS formats JVM trace output
New Garbage collection in CICS TS 3.2
Garbage Collection scheduling algorithm in CICS changed:
Occurs at a target heap utilization:
– GC_HEAP_THRESHOLD parameter in the JVM profile (default 85%) – 100% implies no CICS-scheduled GC
Performed asynchronously in a CICS system task:
– The application does not suffer bad response times simply because a scheduled GC happened to take place
New transaction CJGC:
Unscheduled GC within the JVM can still occur at any time:
– But with a little tuning you can minimize the likelihood of this happening
1.4.2 Java Virtual Machines management enhancements
Specify a JVM timeout value: IDLE_TIMEOUT=30
After timeout JVMs become eligible for termination
Pre-initialize JVMs by profile:
PERFORM JVMPOOL START JVMCOUNT() JVMPROFILE()
Performed asynchronously using CJPI transaction
Selectively phase out JVMs by profile:
Chapter 1. Introduction 15
1.4.3 Continuous Java Virtual Machines versus resettable Java Virtual
Machines
Continuous JVMs perform better than resettable and more consistent with other versions of Java:
Lower CPU cost per transaction
Simpler to set up and tune (fewer different storage heaps)
Compatible with future versions of Java
Resettable mode was deprecated in CICS TS 3.2:
IBM JVM CICS Application Isolation Utility (support pac CH1B)
1.4.4 CICS Java applications using JCICS
You can write Java application programs that use CICS services and execute under CICS control.
You can write Java programs on a workstation or in the z/OS UNIX System Services shell. You can use any editor of your choice or a visual composition environment, such as Rational Application Developer.
CICS provides a Java class library, known as JCICS, supplied in the dfjcics.jar JAR file. JCICS is the Java equivalent of the EXEC CICS application programming interface that you use with other CICS supported languages, such as COBOL. It allows you to access CICS resources and integrate your Java programs with programs that are written in other languages. Most of the functions of the EXEC CICS API are supported. We discuss the JCICS API extensively in Chapter 6, “The Java CICS API” on page 89.
The Java language is designed to be portable and architecture-neutral. The bytecode that is generated by compilation is portable, but it requires a machine-specific interpreter for execution on different platforms. CICS provides this execution environment by means of a Java Virtual Machine that executes under CICS control.
1.4.5 CICS support for the Java Virtual Machine
Java has rapidly grown in popularity throughout the IT industry, and for many organizations, it is now their programming language of choice. CICS Transaction Server extended the support for Java technology-based workloads over a number of releases in response to the uptake of the Java programming model. CICS Transaction Server, Version 3.2 adds further support for Java, making this version essential for anyone who is already running Java workloads in earlier-version CICS environments.
From a historical perspective, the expectations that users had for CICS Transaction Server and Java matured over time. When IBM first introduced Java support in CICS Transaction Server, it was expected that Java might behave as similar to COBOL as possible from within the CICS runtime environment. Today, the expectation is that Java in CICS Transaction Server is much like Java on other platforms.
The unique characteristics of the persistent reusable Java Virtual Machine (JVM) that were traditionally supported in earlier versions of CICS Transaction Server make it more difficult to write Java programs that run as intended in CICS Transaction Server. As a result of this and other performance-related issues, many users of Java in a CICS Transaction Server, Version 2.3 environment elected to use the continuous JVM exclusively and abandoned the persistent reusable JVM altogether.
Recent versions of the JVM do not include the persistent reusable JVM extensions. To make CICS Transaction Server consistent with this Java change, CICS Transaction Server, Version 3.2 also does not support the persistent reusable JVM (support is for the continuous JVM only). Support for the class cache remains unaffected.
The persistent reusable JVM was first made available for use in CICS Transaction Server, Version 2.1. It offers the ability to reset the state of a JVM between tasks to help ensure that subsequent users of the same JVM are fully isolated from states left behind by previous users of the JVM. The time taken to reset a JVM depends on there being no cross-heap references between the middleware and the application heaps within the JVM. If these references exist, the JVM scans the heap to determine if the references are in live objects. The scan process is rather slow. If the attempt to reset the JVM fails, CICS Transaction Server discards the JVM and creates a new one. These unresettable events (UREs) are a major performance problem for some users of CICS Transaction Server and Java.
The continuous JVM was introduced in CICS Transaction Server, Version 2.3. It offers the ability to omit resetting the JVM between CICS tasks, helping to ensure that there are no performance problems due to cross-heap references.
It also offers the ability to cache states between transactions to help improve performance. As a Java application-execution environment, it is more consistent with Java in other
environments and on other platforms (for example, the class loading, threading, just-in-time [JIT] and garbage-collection components are the standard ones). CICS Transaction Server is still designed to ensure complete isolation between concurrently running tasks that run in different JVMs in both JVM modes, but isolation issues might exist between serial tasks that are running in the same JVM. In practice, most CICS Java workloads now use the continuous JVM to benefit from the considerable performance advantages. With the new release of CICS Transaction Server, Version 3.2, the focus is now firmly on continuous JVM and the
© Copyright IBM Corp. 2015. All rights reserved. 17