Home About Courses Schedule Services Webinars Contact Search

Developing Java Applications for z/OS Batch Execution


Duration: 2 Days

Method: Instructor led, Hands-on workshops

Price: $1125.00

Course Code: JA1080

View Related Video


Java developers who need to execute Java applications in a z/OS environment.


Developing Java Batch applications is becoming an increasingly popular application delivery method. Understanding how to code and execute Java programs that access z/OS files via JCL is the focus of this course. Java has been around for over 20 years, but IBM now provides tools and techniques for developing Java applications that are designed to run in a z/OS environment. We will examine various alternatives for batch execution. We will discuss access to z/OS flat files and VSAM file structures, including different alternatives for achieving file I/O. We will use RAD/Eclipse for Java development and target a mainframe runtime environment by using ANT scripts to FTP files to the host environment. We will also look at local and remote debugging capabilities.


Upon successful completion of this course, the student will be able to:

  • Develop Java applications that will run in a z/OS environment
  • Migrate their code and related artifacts to the host environment
  • Execute their applications in a z/OS environment triggered by JCL
  • Access flat files and VSAM files from Java applications
  • Use RAD/Eclipse as a development environment and exploit its capabilities to build and debug applications and ftp files to the host environment
  • Use JNI to provide additional capabilities to z/OS-based Java applications


Java application development experience and familiarity with the z/OS environment.


  • I. Java Stand-alone Applications
    • Reasons to use Java for stand-alone applications
    • Scenarios for Java stand-alone applications
    • Java batch applications
    • Why write Java batch on z/OS?
    • Legacy system modernization
    • Java on z/OS - The basics
  • II. Java Batch Programs
    • Running a Java program as a batch job
    • Writing JCL for a Java batch job
    • Limitations of BPXBATCH
    • Using BPXBATSL to address the limitations of BPXBATCH
    • The z/OS UNIX environment
    • Job management using JZOS
      • Advantages of using JZOS
      • JZOS launcher settings and return codes
    • Best practice considerations:
      • Managing return codes from Java job steps
      • Using shared classes for performance improvement
      • Using log4J in the z/OS environment
    • Considerations when using Java on z/OS
      • Garbage collection
    • Developing multi-step jobs
    • Design considerations for multi-step jobs
  • III. Accessing z/OS Data Sets
    • The JRIO Java Record I/O library
    • Java 6 structures and file I/O support
    • Working with VSAM data sets
    • Accessing records in a VSAM data set using the JRIO library
    • I/O using the JZOS toolkit API
      • JZOS toolkit library
      • JZOS classes
      • Working with VSAM files
      • JZOS versus JRIO versus Java 6 structures)
    • Working with COBOL packed decimal numbers
      • Converting from COBOL packed decimals to Java integers
      • Converting from Java integers to COBOL packed decimals
    • JRecord bean generator and supporting APIs
      • JRecord runtime library and plug-in installation
  • IV. Java Development and Job Management with RAD/Eclipse
    • Setting up Eclipse for host interaction
    • Setting up Ant FTP support in RAD/Eclipse
    • Configuring the project
    • Developing Java batch applications
      • Submitting jobs and controlling output
      • Customizing the Java application
      • Application build and deployment - ANT Support
      • Packaging compiled classes as jar files
      • Deploy to USS on z/OS using ftp tools
      • Code page conversion during ftp
      • Creating a shell script and JCL on z/OS
      • Launching a Java program as a USS process using a shell script
    • Launching a Java program as a USS process using a batch job via JCL/Proc
  • V. Debugging and Tuning
    • Local debugging - when and how to use
    • Remote debugging - when and how to use
    • Java problem determination
      • OutOfMemory problems
      • Hang or deadlock problems
      • Crash problems
      • High CPU or performance problems
    • Overview of Diagnostic Tooling and tuning options
    • Overview of profiling and application monitoring
    • Exploiting zIIP eligibility
  • VI. Java Native Interface (JNI)
    • What is JNI?
    • Basic elements of JNI
    • z/OS 64-bit considerations
    • JNI and the Garbage Collector
    • Developing code that uses JNI
    • Advanced JNI Usage
      • Calling system services from a Java application
      • Calling a COBOL program from a Java application