JEP 381: Remove the Solaris and SPARC Ports | 移除 Solaris 和 SPARC 端口
摘要
移除 Solaris/SPARC、Solaris/x64 和 Linux/SPARC 端口的源代码和构建支持。这些端口在 JDK 14 中已被 标记为待移除,并明确计划在未来的版本中移除它们。
目标
- 移除所有特定于 Solaris 操作系统的源代码
- 移除所有特定于 SPARC 架构的源代码
- 更新文档和源代码注释,以适应未来的版本
非目标
本 JEP 的目标不是改变任何先前版本中受影响端口的状态。本 JEP 最早可以针对的发布版本是 JDK 15。
动机
当前正在开发中的许多项目和特性,如 Valhalla、Loom 和 Panama,需要对 CPU 架构和操作系统特定代码进行重大更改。放弃对 Solaris 和 SPARC 端口的支持将使 OpenJDK 社区中的贡献者能够加速开发新特性,推动平台向前发展。
描述
我们将移除或调整所有与 Solaris 和 SPARC 相关的代码、构建系统逻辑和文档。
- 移除目录:
src/hotspot/cpu/sparcsrc/hotspot/os/solarissrc/hotspot/os_cpu/solarissrc/hotspot/os_cpu/linux_sparcsrc/hotspot/os_cpu/solaris_x86src/java.base/solarissrc/java.desktop/solarissrc/jdk.attach/solarissrc/jdk.crypto.cryptoki/solarissrc/jdk.crypto.ucrypto/solarissrc/jdk.management/solarissrc/jdk.net/solaris
- 移除或调整由以下预处理器定义和宏保护的 C/C++ 代码:
SPARC,__sparc__,__sparc,__sparcv9SOLARIS,__solaris__SPARC_ONLY,NOT_SPARCSOLARIS_ONLY,NOT_SOLARISSOLARIS_MUTATOR_LIBTHREADSPARC_WORKS
- 移除或调整检查 Solaris 或 SunOS 的 Java 代码,例如:
System.getProperty(“os.name”).contains(“Solaris”)System.getProperty(“os.name”).startsWith("SunOS")
- 移除 Solaris 特有的功能:
- 移除或调整与 Solaris、SPARC 或 Oracle Studio 相关的构建系统(如 automake 等)逻辑,特别是以下变量和值:
OPENJDK_{BUILD,TARGET}_OS=SolarisOPENJDK_{BUILD,TARGET}_CPU_ARCH=sparcTOOLCHAIN_TYPE=solstudiois{Build,Target}Os=solarisis{Build,Target}Cpu=sparcv9
- 仅移除或调整与 Solaris 或 SPARC 相关或仅在 Solaris 或 SPARC 上执行的测试,例如:
- 使用以下
jtreg测试@requires os.family == "solaris"@requires os.arch == "sparc"@requires os.arch == "sparcv9"@requires (vm.simpleArch == "sparcv9")Platform.isSolaris()或Platform.isSparc()测试库方法,以及这些方法本身
- 使用以下
- 清理问题列表,移除所有与 Solaris 或 SPARC 相关的引用
- 谨慎调整源代码中提及 Solaris 或 SPARC 的注释
- 在许多情况下,这些注释可以直接删除,但在移除端口后,一些对 Solaris 和 SPARC 的引用可能仍然相关
- 移除 Solaris 开发工具包创建脚本(位于
make/devkit下) - 移除 JIB 配置文件中的任何特定于 Solaris 或 SPARC 的逻辑
测试
在其他平台上的标准测试将确保对公共和共享文件的更改的正确性。
风险和假设
在不太可能的情况下,如果其他内部端口依赖于 Solaris 或 SPARC 源代码,那么移除对 Solaris 或 SPARC 的支持可能会影响这些端口。