跳到主要内容

JEP 449:弃用 Windows 32 位 x86 端口以进行删除

概括

弃用 Windows 32 位 x86 端口,并打算在未来版本中将其删除。

目标

  • 更新构建系统,以在尝试配置 Windows 32 位 x86 (x86-32) 的构建时发出错误消息。通过新的配置选项可以抑制错误消息。

  • 将端口和相关端口特定功能标记为已弃用并在相关文档中删除。

非目标

  • 在任何先前版本中更改受影响端口的状态并不是目标。此 JEP 的最早目标版本是 JDK 21。

  • 我们的目标不是弃用任何其他 32 位端口。

动机

  • 允许 OpenJDK 社区的贡献者加速新功能和增强功能的开发,从而推动平台向前发展。

  • Windows x86-32 的JEP 436(虚拟线程)的实现会退回到使用内核线程,因此不会带来 Project Loom 的预期好处。

  • Windows 10 是最后一个支持 32 位操作的 Windows 操作系统,将于2025 年 10 月终止生命周期。

描述

尝试配置 Windows x86-32 版本将产生以下输出:

$ bash ./configure
...
checking compilation type... native
configure: error: The Windows 32-bit x86 port is deprecated and may be removed in a future release. \
Use --enable-deprecated-ports=yes to suppress this error.
configure exiting with result code 1
$

新的构建配置选项--enable-deprecated-ports=yes将抑制错误并继续:

$ bash ./configure --enable-deprecated-ports=yes
...
checking compilation type... native
configure: WARNING: The Windows 32-bit x86 port is deprecated and may be removed in a future release.
...
Build performance summary:
* Cores to use: 32
* Memory limit: 96601 MB

The following warnings were produced. Repeated here for convenience:
WARNING: The Windows 32-bit x86 port is deprecated and may be removed in a future release.
$

备择方案

另一种选择是继续支持 Windows x86-32。这需要积极的维护者提供可持续且高性能的虚拟线程实现以及未来的 JEP,以确保 Windows x86-32 上的 JDK 继续满足 Java 开发人员的期望。

风险和假设

由于与 32 位本机库 (DLL) 集成,32 位 JVM 仍在 Windows 上使用。他们的用户无法直接迁移到 64 位 JVM,因为 Windows 上的 64 位进程无法加载 32 位 DLL。虽然 Windows x64 能够通过WOW64模拟 32 位环境来运行 32 位应用程序,但尽管假定内存占用有优势,但应用程序的性能仍将急剧下降。

因此我们假设

  • 用户可以继续运行 Windows 32 位 JVM 的现有版本,以与本机 32 位库集成,并在必要时通过远程 API 公开 32 位功能,以供同一环境中运行在 64 位 JVM 上的应用程序使用。环境;和

  • Java 21 发布后,旧系统不太可能迁移到 JDK 版本。