JEP 294:Linux/s390x 端口
概括
将 JDK 9 移植到 Linux/s390x。
动机
s390x(也称为“System z”或“z/Architecture”)是由 IBM 开发和支持的大型机架构。包括Ubuntu、RHEL/ Fedora和SuSE在内的多个 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 问题,其中一些问题已经在接受审查。
备择方案
目前,零端口可用于在 Linux/s390x 上运行 JDK,但速度相当慢(因为它仅使用旧的、已弃用的 C++ 解释器)并且没有经过很好的测试。它并不是运行用 Java 编写的应用程序服务器或数据库应用程序等工作负载的真正替代方案。
IBM 的 Linux 开发工具包也适用于 Linux/s390x,但它目前不是开源的,Java 应用程序通常需要一些配置/调整才能与它一起运行。此外,它不能用于测试即将推出的 Java 版本的新功能,因为它仅在 JDK 本身 GA 后发布。
测试
该端口已在我们的商业 SAP JVM 产品中用于生产环境多年。我们已经每天构建和测试该端口的 OpenJDK 版本(通过运行jtreg
JCK 测试 、SPEC 基准测试和多个 SAP 应用程序),并致力于在未来这样做。当然,我们将来也会维护该端口并根据所有即将到来的要求进行更新。
风险和假设
与我们之前的PowerPC/AIX Port不同,此移植只需要对现有代码库进行最少的更改,因为:
- s390x是CISC架构,具有强大的内存模型
- 不需要与操作系统相关的更改,因为我们仅针对 Linux
我们预计不会对现有平台产生任何影响。