跳到主要内容

JEP 294:Linux/s390x 移植

QWen Max 中英对照

概述

将 JDK 9 移植到 Linux/s390x。

动机

s390x(也被称为“System z”或“z/Architecture”)是由 IBM 开发并支持的一种大型机架构。包括 Ubuntu、RHEL/FedoraSuSE 在内的多个 Linux 发行版都可以运行在 s390x 上。

当前使用 TomEE、Cassandra、Spark、Hadoop 和 Neo4j 等软件包的云部署(仅举几例)严重依赖 Java。因为这些软件包大多数是开源的,所以它们在 OpenJDK 上运行最佳,而 OpenJDK 当前在 Linux/s390x 上不可用。

此 JEP 的原因在于解决这一缺陷。

描述

SAP 拥有一个完整的(即,模板解释器、C1 和 C2 JIT)且经过认证的(Java SE 1.4-8)s390x 移植版本,该版本已经在生产环境中使用多年。在 s390x 移植项目 中,我们已经贡献了这个移植版本,它可以在 IBM System z z10 或更新型号(仅限 64 位)上运行。

该 JEP 的重点不是移植工作本身(这项工作大部分已经完成),而是将该移植集成到 JDK 9 主代码库中。

目前,我们有一个补丁队列,其中包含不到 10 个变更集,并且只有极少数共享变更,这些变更完全不会影响当前平台。除了在顶层和 jdk 仓库中的两项最小构建更改之外,所有其他变更都仅限于 hotspot 仓库。

我们已经启动了针对共享变更的 JBS 问题 的流程,其中一些问题已经在审查中。

替代方案

目前,Zero 端口 可用于在 Linux/s390x 上运行 JDK,但速度相当慢(因为它仅使用旧的、已被弃用的 C++ 解释器),并且没有经过充分测试。对于运行像应用服务器或用 Java 编写的数据库应用程序这样的工作负载来说,它并不是一个真正的替代方案。

IBM 的 Linux 开发者套件同样适用于 Linux/s390x,但它目前并非开源,而且 Java 应用程序通常需要一些配置/调优才能与其一起运行。此外,它不能用于测试即将发布的 Java 版本的新功能,因为它仅在 JDK 本身正式发布(GA)之后才会推出。

测试

该端口已在我们商业化的 SAP JVM 产品中使用多年。我们已经在日常构建和测试此端口的 OpenJDK 版本(通过运行 jtreg 和 JCK 测试、SPEC 基准测试以及多个 SAP 应用程序),并且承诺未来会继续这样做。当然,我们未来也会继续维护该端口,并根据所有即将到来的需求对其进行更新。

风险与假设

与我们之前的 PowerPC/AIX 移植 不同,此移植对现有代码库只需要进行最少的更改,原因如下:

  • s390x 是一种具有强大内存模型的 CISC 架构
  • 由于我们只针对 Linux,因此不需要进行与操作系统相关的更改

我们预计现有的平台不会受到任何影响。