近日,OpenJDK 社区正式通过了 JEP(JDK Enhancement Proposal)541,标题为“Deprecate the macOS/x64 Port for Removal”。该提案建议将基于 Intel x86-64 架构的 macOS 端口(即 macOS/x64)标记为弃用状态,并计划在未来版本中正式移除。此举标志着 Java 生态正加速向 Apple Silicon(ARM64)架构全面过渡,同时也意味着在不久的将来,英特尔 Mac 用户将无法再运行最新版本的官方 JDK。
背景:从英特尔到 Apple Silicon 的生态迁移
自 2020 年苹果发布 M1 芯片以来,macOS 平台逐步从 Intel x86-64 架构迁移至自研的 ARM64 架构(Apple Silicon)。经过三年多的发展,如今的 Mac 产品线已全面转向 Apple Silicon,英特尔芯片的 Mac 机型已被苹果官方停产,仅剩少数旧款仍在二手市场流通。与此同时,macOS 系统的后续版本也逐步减少对 Intel 硬件的优化,例如 macOS Ventura 和 Sonoma 已不再为 Intel Mac 提供某些新功能。
对于 Java 开发者而言,OpenJDK 社区早在 2021 年就引入了对 Apple Silicon(macOS/ARM64)的原生支持(JEP 391)。随着 ARM64 端口的日趋成熟,继续维护 macOS/x64 端口的必要性逐渐降低。维持两个端口的并行开发不仅增加了测试和代码维护的工作量,还可能导致 ARM64 端口的优化精力分散。
JEP 541 的核心内容与时间线
根据 JEP 541 的官方描述,该提案的目标是将 macOS/x64 端口标记为“Deprecated for Removal”,即进入正式弃用流程。具体而言:
- 当前阶段(JDK 22 或后续版本):在构建系统中将 macOS/x64 端口列为弃用状态。当开发者尝试在此环境下编译 JDK 或运行相关工具时,会收到弃用警告信息。
- 未来版本(计划 JDK 24 或更晚):如果社区没有足够的资源或强烈意愿继续维护该端口,将正式将其从 OpenJDK 的源代码中移除。届时,针对 macOS/x64 的官方二进制构建将不再发布。
需要注意的是,弃用并不等于立即删除。OpenJDK 通常会给出至少两个主要版本(约一年时间)的过渡期,以便用户和开发人员做好迁移准备。按照当前 JDK 发布节奏(每半年一个功能版本),macOS/x64 端口最早可能在 JDK 24 或 JDK 25 中被彻底移除。
对开发者和用户的实际影响
对于仍在使用英特尔 Mac 的 Java 开发者而言,JEP 541 意味着他们将面临以下变化:
- 无法获得最新 JDK 官方支持:一旦 macOS/x64 端口被移除,Intel Mac 用户将只能使用旧版本(如 JDK 21 或更早的分支)。这些版本虽然仍会接收安全补丁(若属于 LTS),但新特性、性能优化和 API 改进将无法获得。
- 第三方 JDK 发行版可能跟进:Oracle JDK、Adoptium(Eclipse Temurin)、Amazon Corretto 等主流发行版通常会跟随 OpenJDK 上游的决策。因此,即使 OpenJDK 移除了该端口,第三方发行版大概率也会同步放弃,除非有企业客户提供长期支持需求。
- 开发环境的迁移成本:对于依赖 Intel Mac 作为开发机的团队,可能需要转向 Apple Silicon 设备,或者利用虚拟机、Rosetta 2 转译等方式临时过渡。不过 Rosetta 2 主要用于运行 x86 应用,对于 Java 应用来说,如果 JDK 本身不再提供 x86 版本,则无法直接通过转译运行。
替代方案与迁移建议
对于暂时无法更换硬件的 Intel Mac 用户,仍有几种可行的应对策略:
- 使用兼容的旧版 JDK:继续使用 JDK 21(LTS)或 JDK 17(LTS)等稳定版本,这些版本在数年内仍会获得安全更新。但需注意,这些版本的 macOS/x64 支持最终也会停止(例如 LTS 版本的维护期通常为 4-6 年)。
- 考虑第三方维护的分支:某些社区或企业可能会提供非官方的 macOS/x64 构建,例如通过 OpenJDK 的“Porting”项目自行编译。但这需要相应的编译环境和维护工作量。
- 升级硬件:购买搭载 M 系列芯片的 Mac,所有主流 JDK 均已提供原生 ARM64 支持,且性能表现优于 Intel 版本。
行业趋势:ARM64 架构全面崛起
JEP 541 并非孤立事件。近年来,ARM 架构在服务器和桌面领域持续扩张:AWS 的 Graviton 处理器、华为的鲲鹏芯片、以及苹果的 M 系列都推动了 Java 对 ARM64 的深入优化。OpenJDK 社区也陆续移除了其他过时的端口,例如 Solaris 和 SPARC。macOS/x64 的弃用,不过是这场架构迁移浪潮中的一环。
对 Java 生态而言,聚焦单一主流架构可以减少维护负担,将更多资源投入到性能提升和新特性开发上。开发者应尽早规划迁移路径,确保在未来版本发布时顺利过渡。
结语
JEP 541 的通过,为英特尔 Mac 的 Java 开发之旅画上了句号。虽然 Intel Mac 用户仍有一段时间的缓冲期,但苹果生态的未来显然属于 ARM64。Java 开发者需做好准备,拥抱 Apple Silicon 原生支持带来的更高效能。同时,这也提醒我们:在技术演进的道路上,没有永久的“铁饭碗”,唯有持续学习与迁移,方能立于不败之地。