将应用程序迁移到新的 Java 版本

在迁移应用程序时,审查 Java 版本之间的差异非常重要。

如果应用程序使用在更高版本的 Java 中移除的 API ,那么必须修改这些应用程序。

可用版本

  • 6.3 IBM® Semeru Runtime® Certified Edition for z/OS® 第 17 版和第 21 版
  • 6.16.2IBM Semeru Runtime Certified Edition for z/OS 第 11 版、第 17 版和第 21 版
  • IBM 64 位 SDK for z/OS ,Java™ 技术版版本 8

有关更多信息,请参阅 Java 运行时环境

迁移到新的 Java 版本的优点

以下是使用最新 Java 版本的一些优点:
  • 从新 API 中获取优势。
  • 随时更新安全修订。
  • 保持最新状态,提高性能。
  • 从改善与分布式平台的互操作性中获益。

检查您的程序是否存在不推荐使用的 API

在移至更高版本时需要进行更改,这取决于程序是否使用在更高版本的 Java 中移除的 API。 有关更多信息,请参阅:

检查 Java 程序以了解受支持的 IBM SDK for z/OS 与先前版本之间的兼容性问题。 使用较低版本的 Java 编译的代码将继续运行,除非它使用在较高版本的 Java 或 CICS中除去的 API。 如果代码确实使用了已除去的 API ,请进行任何必要的更改以使您的程序能够与受支持的版本一起运行。

除 Java API 外,请检查您的程序是否存在不推荐使用的或已除去的 CICS JCICS API。 有关更多信息,请参阅 升级 Java 环境

文件编码和 UTF-8 作为默认字符集

Java 21 适用于 Java 21。

在Java 21中,标准Java API的默认字符集为 UTF-8 ,控制台输入和输出编码除外。 早期版本的Java使用EBCDIC默认字符集。 在 CICS中,处理基于EBCDIC的数据很常见,因此这一变化意义重大。

为早期版本的Java设计和测试的应用程序在Java 21上可能会有不同的表现。 检查您的Java程序,确保它们不会假定默认编码为EBCDIC。

部署到 Liberty 的应用程序不受影响,因为 Liberty 仅在 CICS 中具有 UTF-8 或 ISO-8859-1 字符编码的 JVM 下运行时才受支持。

使用字符串对象的 JCICS API 可自动处理代码页转换。 更新Java应用程序,使用基于字符串的JCICS方法,而不是与字节数组数据交互的旧JCICS方法。

当应用程序代码将Java字节数组数据转换为字符串对象或从字符串对象转换时,必须明确指定正确的编码。 使用默认字符集的API调用需要特别注意,例如:
  • 请致电 String.getBytes()
  • InputStreamReaderFileReaderOutputStreamWriterFileWriterPrintStreamjava.io 软件包的API。
  • Formatter 以及 软件包中的 API。 java.util Scanner
  • URLEncoder,以及 java.net 软件包的 URLDecoder API。

在JVM配置文件中设置 -Dfile.encoding=COMPAT 将恢复为Java 17的行为,其中本地编码根据区域设置确定。 应谨慎使用此选项,因为Java软件库将来可能会在所有地方使用 UTF-8 编码。

更多信息、 file.encoding 属性值和输入文件的自动转换,请参阅文件编码和 UTF-8 作为默认字符集IBM Semeru Runtime Certified Edition for z/OS 文件。