跳到主要内容

JEP 381: 移除 Solaris 和 SPARC 端口

QWen Max 中英对照 JEP 381: Remove the Solaris and SPARC Ports

总结

移除 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/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_ONLYNOT_SPARC
    • SOLARIS_ONLYNOT_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 的支持可能会影响它们。