JEP 381:删除 Solaris 和 SPARC 端口
概括
删除源代码并构建对 Solaris/SPARC、Solaris/x64 和 Linux/SPARC 端口的支持。这些端口已在 JDK 14 中弃用并删除,并明确打算在未来版本中删除它们。
目标
- 删除所有特定于 Solaris 操作系统的源代码
- 删除所有特定于 SPARC 架构的源代码
- 更新未来版本的文档和源代码注释
非目标
此 JEP 的目标不是更改任何先前版本中受影响端口的状态。此 JEP 的最早目标版本是 JDK 15。
动机
目前正在开发的许多项目和功能(例如 Valhalla、Loom 和 Panan)都需要对 CPU 架构和操作系统特定代码进行重大更改。放弃对 Solaris 和 SPARC 端口的支持将使 OpenJDK 社区的贡献者能够加速新功能的开发,从而推动平台向前发展。
描述
我们将删除或调整所有 Solaris 和 SPARC 相关代码、构建系统逻辑和文档。
- 删除目录:
src/hotspot/cpu/sparc
src/hotspot/os/solaris
src/hotspot/os_cpu/solaris
src/hotspot/os_cpu/linux_sparc
src/hotspot/os_cpu/solaris_x86
src/java.base/solaris
src/java.desktop/solaris
src/jdk.attach/solaris
src/jdk.crypto.cryptoki/solaris
src/jdk.crypto.ucrypto/solaris
src/jdk.management/solaris
src/jdk.net/solaris
- 删除或调整由以下预处理器定义和宏保护的 C/C++ 代码:
SPARC
,__sparc__
,__sparc
,__sparcv9
SOLARIS
,__solaris__
SPARC_ONLY
,NOT_SPARC
SOLARIS_ONLY
,NOT_SOLARIS
SOLARIS_MUTATOR_LIBTHREAD
SPARC_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
=Solaris
OPENJDK_{BUILD,TARGET}_CPU_ARCH
=sparc
TOOLCHAIN_TYPE
=solstudio
is{Build,Target}Os
=solaris
is{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 devkit 创建者脚本(位于
make/devkit
) - 删除 JIB 配置文件中任何特定于 Solaris 或 SPARC 的逻辑
测试
其他平台上的标准测试将确保公共和共享文件更改的正确性。
风险和假设
删除对 Solaris 或 SPARC 的支持可能会影响其他树内端口(在极不可能的情况下),因为它们依赖于 Solaris 或 SPARC 源代码。