IBM Semeru 21 for z/OS is officially here, and for the first time, over 20 ecosystem product teams achieved Day 1 support! This accomplishment was no small feat— it required tremendous collaboration, multiple cycles of testing, and a shared commitment across all ecosystem product teams to deliver a seamless experience for our customers.
Breaking Barriers: Migrating to Java 21 on z/OS
The transition to Java 21 on z/OS was a major shift for many ecosystem product teams, requiring multiple rounds of testing to guarantee compatibility and performance.
One of the key challenges in this release was JEP 400 (UTF-8 by Default), which changed the default character encoding in Java from the platform-dependent encoding to UTF-8. This affected some teams in areas such as:
-
File I/O behaviour – Applications that read or wrote text files without explicitly specifying an encoding previously relied on platform defaults (e.g., IBM-1047 on z/OS). With Java 21, they now default to UTF-8, leading to potential file corruption or misinterpretation.
-
Data exchange issues – Some teams’ applications communicated with external systems that expected a different encoding. Switching to UTF-8 required testing and updates to ensure smooth interoperability.
-
Log and configuration file changes – Applications logging text or reading configuration files without explicitly setting an encoding may have encountered unexpected behaviour.
We saw JEP 400 as an opportunity to enhance the resilience and portability of our ecosystem products. To ensure consistency across environments, we provided best practices on explicitly setting character encoding in file operations (InputStreamReader, OutputStreamWriter, etc.) and highlighted the importance of file tagging on z/OS. Proper file tagging helped prevent encoding conflicts when Java applications processed text, ensuring a seamless transition moving to a UTF-8-by-default world. The early feedback from the teams helped validate our JEP-400 implementation against in real-world scenarios, ensuring a smooth migration and also future-proofing their applications for broader compatibility.
To learn more, read our JEP 400 Documentation.
A Coordinated Testing Effort:
To help teams navigate these challenges, we:
-
Created a communication channel with all ecosystem product teams to share progress/challenges during their migration efforts
-
Identified teams impacted by JEP 400 and provided technical guidance on how to explicitly set encoding where necessary
-
Worked closely with affected teams to debug and resolve encoding-related issues quickly
Through proactive collaboration, we prevented encoding-related issues from becoming a blocker for Day 1 support. Managing such a large-scale testing effort was complex, but thanks to the dedication and cooperation of all involved teams, we stayed on track and successfully enabled teams to claim support. More importantly, this Day 1 support enables our customers who use Java with different products to update their Java workloads across the board to the latest LTS version in their environment, where IBM Z plays a critical role.
For the latest ecosystem product support for Semeru on z/OS (including v21), visit the IBM ecosystem support for Semeru on z/OS page on the IBM Java SDK and Semeru Runtime Upgrade Portal.
As of March 31st, z/OS 3.1 functions can now run with Semeru 21. Learn more on Marna’s Musings.
How to obtain IBM Semeru Runtime Certified Edition for z/OS, Version 21?
IBM Semeru Runtime Certified Edition for z/OS, Version 21 is available for zero license charge through Shopz (5655-JB1) SMP/E, or you can download the non-SMP/E Pax version here. The subscription and service number is 5655-I48.
Supporting Links: