JEP 294:Linux/s390x 移植
概述
将 JDK 9 移植到 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,因此不需要进行与操作系统相关的更改
我们预计现有的平台不会受到任何影响。