JEP 294: Linux/s390x Port
摘要
将 JDK 9 移植到 Linux/s390x。
动机
s390x(也被称为 "System z" 或 "z/Architecture")是由 IBM 开发和支持的大型机架构。包括 Ubuntu、RHEL/Fedora 和 SuSE 在内的几个 Linux 发行版都可以在 s390x 上运行。
目前,使用诸如 TomEE、Cassandra、Spark、Hadoop 和 Neo4j 等软件包的云部署严重依赖 Java。由于大多数这些软件包是开源的,它们在 OpenJDK 上运行效果最佳,但目前尚不支持 Linux/s390x。
这个 JEP 的目的是解决这一不足。
描述
SAP 已经开发并通过认证(Java SE 1.4-8)了一个完整的(即模板解释器、C1 和 C2 JIT)s390x 端口,并且在生产中使用了多年。在 s390x Port Project 中,我们已经贡献了这个端口,该端口可以在 IBM System z 的 z10 型号或更新型号(仅 64 位)上运行。
这个 JEP 的重点不是移植工作本身,因为这方面的工作大部分已经完成,而是将这个移植整合到 JDK 9 主代码库中。
目前,我们有一个 补丁队列,其中包含不到 10 个变更集,而且很少有共享变更,这些变更基本上不会影响当前的平台。除了顶层和 jdk
仓库中的两个最小的构建变更外,所有其他变更都只在 hotspot
仓库中。
我们已经开始为共享变更开放 JBS issues,其中一些已经在审查中。
替代方案
目前,Zero port 可以用于在 Linux/s390x 上运行 JDK,但它运行速度较慢(因为它只使用旧的、已弃用的 C++ 解释器),测试也不够充分。它并不是在 Java 中编写的应用服务器或数据库应用程序的真正替代方案。
IBM 的 Linux 开发者工具包 也适用于 Linux/s390x,但目前不是开源的,而且 Java 应用程序通常需要进行一些配置 / 调优才能运行。另外,它不能用于测试即将发布的 Java 版本的新功能,因为它只在 JDK 本身发布后才发布。
测试
这个端口已经在我们商业版的 SAP JVM 中使用了多年。我们已经开始每天构建和测试这个端口的 OpenJDK 版本(通过运行 jtreg
和 JCK 测试、SPEC 基准测试以及几个 SAP 应用程序),并承诺将来也会继续这样做。当然,我们将来也会维护这个端口,并根据所有未来的需求对其进行更新。
风险和假设
与我们之前的 PowerPC/AIX Port 不同,这个端口只需要对现有代码进行最少的更改,因为:
- s390x 是一个具有强大内存模型的 CISC 架构
- 不需要进行与操作系统相关的更改,因为我们只针对 Linux
我们预计不会对现有平台产生任何影响。