
In addition to traditional JCL batch management, Jakarta Batch (Java Batch) processing has opened new possibilities for IBM Z batch modernization. It addresses several key challenges, including:
- JCL skills shortages: Traditional z/OS batch processing relies on Job Control Language (JCL), developed by IBM in the 1960s and refined over many decades. While still robust and capable, JCL development is increasingly impacted by an ongoing IT skills gap crisis. Finding staff with strong z/OS and JCL expertise is becoming more difficult. In contrast, Java is a widely adopted language, and organizations can leverage their existing Java skill sets to meet modern batch processing needs. There is a large pool of Java resources and developers available in the market.
- Cost efficiency: Reducing IT costs remains a top priority for most businesses. Executing batch workloads using Java Batch allows processing to be offloaded to lower-cost specialty processors, such as zIIPs (IBM z Integrated Information Processors).
- Licensing cost savings: Workloads running on zIIPs are generally not subject to IBM or independent software vendor (ISV) licensing charges. Java Batch workloads that execute on zIIPs may therefore help reduce overall software licensing costs, further lowering the total cost of running batch jobs.
JSR-352: The Java Batch Processing Standard
Jakarta Batch (also known as Java Batch) processing is defined by the open standard JSR-352: Batch Applications for the Java Platform. It provides a framework for building and executing long-running batch jobs using the Java programming language, outlining both a programming model and a runtime environment specifically designed for batch processing.
Batch applications developed in accordance with the JSR-352 specification are collectively referred to as Java Batch. On IBM Z systems, these Java-based batch jobs are fully supported, offering an effective alternative—and complement—to traditional Job Control Language (JCL)-based processing.
IBM enables Java Batch execution through its WebSphere Liberty runtime, delivering both foundational and advanced capabilities for managing Java-based batch workloads.
Related reading: Why Use Java Batch for IBM Z Batch Processing? (Part 1 and Part 2)
Java Batch Architecture and Key Functions
The following diagram, found in the JSR-352 documentation, illustrates the Java Batch architecture and its key functions:
- A Job comprises all the work related to a specific batch requirement. It is the logical representation of work to be performed.
- A Step represents a portion of a Job’s work.
- A Job Specification Language (JSL) defines batch jobs. The JSR-352 Job Specification Language is implemented in XML and is referred to as Job XML.
- A set of interfaces describes the artifacts that make up the batch programming model used to implement business logic. Standard Java Batch interfaces include ItemReader, ItemProcessor, and ItemWriter.
- The JobOperator interface is used for job submission and control.
- A JobRepository stores information used to track Jobs.
- A batch runtime environment for running batch jobs
The majority of these functions are provided by a JSR-352 runtime and by vendor implementations of the JSR-352 framework, such as JSLplus+ from SEA. The Java developer writes the XML code to define the ItemReader, ItemProcessor, and ItemWriter components, creating a Job Specification Language (JSL) file.
The submission function is part of the JobOperator interface and is typically supplied by standard vendor offerings, including IBM’s Workload Scheduler (IWS) and the batchManager and batchManagerzOS utilities.
Related reading: Advanced Tooling for Better IBM Z Batch Processing
Java Batch Job Steps
The JSR-352 specification defines two types of job steps for creating and segmenting pieces of Java Batch work that can be used by different applications:
- Chunk: Traditional batch processing performed by iterating through a set of data, following a common Read/Process/Write pattern.
- Batchlet: Pieces of code executed as part of a batch job. Batchlets are not item-oriented and can be reused across different batch applications (e.g., a file transfer process).
IBM Z-Specific Java Batch Capabilities
Java Batch extends IBM Z batch programming by providing modern DevOps tools and supporting programming languages that are not available with JCL-based batch development. As such, Java Batch tools—such as JSLplus+—must offer capabilities comparable to existing JCL batch management solutions that have long been used in IBM Z environments.
Java Batch tools are typically delivered as plug-ins for Eclipse-based Integrated Development Environments (IDEs). When evaluating Java Batch tooling, look for packages that offer strong JSL validation and runtime simulation capabilities, similar to those provided by advanced JCL batch management solutions, including:
- JSL syntax validation and error detection: Ensures the validity of JSL XML files and effectively identifies JSL-specific errors.
- Semantic validation: Verifies that defined objects, variables, properties, etc., are consistently and clearly coded with correct data types, locations, and other relevant attributes.
- Artifact verification: Confirms the integrity and accuracy of JSL artifacts. Typically delivered as Java Archive (JAR) files, artifacts contain compiled Java code and metadata used to distribute libraries, frameworks, and components for Java Batch projects.
- Reporting and cross-reference windows: Provide robust reporting and cross-referencing for Java Batch projects. These reports highlight warnings, errors, and standards violations discovered during validation. They can also include searchable index references for JSL tags, properties, Java artifacts, and more.
Related Reading: Using Strong JSL Validation for Java Batch Jobs
Summary
Java Batch for z/OS servers extends IBM Z batch functionality, addresses JCL skills shortages, improves cost efficiency, and helps reduce licensing costs. With JSR-352, batch developers can write portable applications that run across diverse platforms. Java Batch enables developers to focus on core business logic by using Job Specification Language (JSL) as a standard for executing batch artifacts and programming within a job.
The introduction of Java on z/OS has expanded its capabilities while meeting modern IT demands and lowering processing costs. The development of the JSR-352 standard by the Java community supports this evolution, offering a portable, scalable approach to batch development across platforms—while keeping developers focused on business logic rather than platform-specific details.
Please feel free to contact SEA for more information on using Java Batch for IBM Z batch processing.