JSR-352 isn't really what I think of as batch. To me, batch on z/OS is generally a JOB running from JCL submitted automatically or manually, or perhaps a scheduled unix task. If it's running under Liberty I don't think of it as batch, in the same way as CICS isn't batch.
Original Message:
Sent: Tue October 28, 2025 02:51 AM
From: Diego Cardalliaguet
Subject: Creating a new mainframe batch process - What toolset do I use? Traditional or Modern
Hi Andrew.
I have done Java on a mainframe since 2001. Starting with WebSphere v3.0.1. I've lived the transition from S/390 to Z, from less than 800MHz to 4GHz processors in z10. The introduction and disappearance of zAAP processors and the coexistence with zIIP that were intended just for Db2. The introduction of Java in CICS, the transition of tWAS to Liberty and the introduction of CICS Liberty…
There's no one as enthusiast of Java on IBM Z as I am. But I wouldn't state that it is faster than COBOL. You can make a Java transaction for less than 5MIPS that, in addition, runs on zIIP; but it won't outperform Cobol.
It is true that there are some instructions in zIIPs to accelerate Java and that zIIPs are always at full capacity. True that you have to "heat" the JVM because of the lazy compilation which, BTW, is there for historical performance reasons: when you started a WAS server, all requests to servant regions (remember them?) were retained in control regions until all classes where compiled and that triggered some timeouts for the first transactions coming in.
JZOS is great to start and for small-medium tasks, but for full business class batch in Java you need Liberty with JSR-352 (you can see a big list of entries by David in this community).
My recommendation to modernize batch is Java, more than Python. With Java you can achieve business class batch and will run better than in any other platform, there's no other place where Java runs better than in the IBM Z (as of today), but it is very difficult to beat Cobol, especially if you are in Cobol 6 and use the new compilers.
Python is great, as a substitute for REXX when you include ZOAU. It still has some limitations of access to some data repositories and a lack of interaction with other languages. Java can interact with Cobol (in 31 or 64 bits), other batch, CICS and IMS. Liberty gives you the WOLA interface for memory-fast transactional interactions… All that is yet to come with Python.
There are many nuances that @Steve Spence has not shared here.
Regards,
------------------------------
Diego Cardalliaguet
IBM Data&AI zStack Leader for EMEA
IBM
Original Message:
Sent: Mon October 27, 2025 07:00 PM
From: Andrew Rowley
Subject: Creating a new mainframe batch process - What toolset do I use? Traditional or Modern
"Java is halfway, in performance terms, between Cobol and Python."
I think you're underselling Java. Java performance is very good and I wouldn't be surprised if it outperforms COBOL for CPU intensive work (particularly on a zIIP). The one caveat is the overhead of JVM initialization. That's probably only a fraction of a second, but if it's something running thousands of times it will be significant compared to starting a regular program.
The Java JZOS classes allow you to work with z/OS data and datasets. The JZOS batch launcher allows you to run java programs as regular z/OS batch jobs using DD statements from JCL etc. You can also run simple Java programs from a single source file without a separate compilation step i.e. as a script. They should run with the same performance as a compiled Java class or jar.
------------------------------
Andrew Rowley
Original Message:
Sent: Mon October 27, 2025 03:02 AM
From: Diego Cardalliaguet
Subject: Creating a new mainframe batch process - What toolset do I use? Traditional or Modern
Hello Steve,
I won't tell you what to do and, probably, my considerations have already passed through your head before writing here. In any case, it is a good opportunity to reflect myself. So, I apologize beforehand if they are not exactly what you expect.
First thing I thought was, cool, yes Python is a great tool and modernization is always a nice thing to do. I have worked myself with some customers to implement Python and substitute some old style tools, but not batch.
But then, rethinking, I had some doubts.
- Java is halfway, in performance terms, between Cobol and Python. It performs very, very well and you have a lot of information about how to implement Java as a batch player. Search for information coming from @David Follis in this IBM Community. This would give you part of both worlds: a good performance and a better ease of maintenance. A good option for regular datasources: Db2, IMS… and a good option if your batch has to interact with any other subsystem along the process.
- If I had to choose between Cobol and PL/I I'd bet on Cobol just because a lot of compatibility initiatives are focused on Cobol more than PL/I. Also Cobol can interact easily with Java in the case you want to add some external pieces in the future. Batch with Cobol is a well known thing I won't discuss on this.
- Python, I love Python. I started learning it long before it was used for data science in 2002. It is a powerful tool and you will find a lot of people to work on it. Python fitness depends, mainly on the funtions and data access you need to manage. If the data repository is Db2, good. If you have to access some files for the data you'll need ZOAU for that. ZOAU is like a shell on steroids to manage and work with z/OS datasets (and some more things). I would have to check about batch implementation and how to manage regular commits and checkpoints on the case that something fails, but this might be my own ignorance. I see Python as a great tools to manage data pipelines more than a batch itself. Python + ZOAU is a good option to substitute REXX and achieve ease of maintenance, at least better than REXX.
Also, performance is the slower of them all. If your batch is extensive and you have execution time restrictions, I'd go for Java or Cobol.
All of them can be triggered and managed using JCL, it can help to manage and organize the sequence of execution steps. I wouldn't drop JCL as a tool to execute any of the Java, Cobol or Python batch. It is an advantage of the platform that I would use to my benefit.
If you want to have a longer conversation, please, tell me.
Best regards,
------------------------------
Diego Cardalliaguet
IBM Data&AI zStack Leader for EMEA
IBM
Original Message:
Sent: Fri October 24, 2025 07:34 AM
From: Steve Spence
Subject: Creating a new mainframe batch process - What toolset do I use? Traditional or Modern
Over the last couple of weeks l have been scratching my head over what to do in creating a new in house mainframe batch process.
I could develop this process using the traditional software tools COBOL or PL/1 possibly REXX and JCL or do l go down the modern route using Python, z/OSMF and z/OSAU. I know the question might be it depends on what your process is doing but it's about using older mainframe tools over the more modern toolset.
For me personally designing the process using the so called legacy toolset would be much more straightforward but the modern toolset ie: Python would probably involve less coding and a more robust process which would be easier for today's Mainframer's to implement and support.
Any thoughts much appreciated!
------------------------------
Steve Spence
Expert Systems Engineer, Applications
Ensono Ltd
London
------------------------------