ARM Mac 安装 Java 8 备忘
最近需要在 ARM Mac 上装 Java 8,研究了一圈发现直接用 Azul Zulu 的原生 ARM 版本最省事。
快速安装
直接上命令:
# 添加 cask-versions 仓库
brew tap homebrew/cask-versions
# 安装 Zulu 8
brew install --cask zulu8
装完之后 JDK 在 /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home。
如果需要设置 JAVA_HOME,在 ~/.zshrc 或 ~/.bashrc 里加上:
export JAVA_HOME='/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home'
验证一下:
java -version
应该能看到类似这样的输出:
openjdk version "1.8.0_xxx"
OpenJDK Runtime Environment (Zulu 8.xx.x.x-CA-macosx-aarch64)
OpenJDK 64-Bit Server VM (Zulu 8.xx.x.x-CA-macosx-aarch64)
注意输出里的 aarch64,说明这是 ARM 原生版本。
Oracle JDK vs OpenJDK
顺便说一下为什么选 OpenJDK 而不是 Oracle JDK。
从授权角度看,Oracle JDK 从 2019 年开始收费,2023 年还改成按员工数计费。OpenJDK 是完全免费的开源项目,由 Oracle、Red Hat 和社区一起维护。
技术上,从 Java 11 开始两者用的是同一套代码,功能和性能基本没区别。
所以对于 Java 8 来说,用 OpenJDK 的发行版(比如 Zulu)就行,既省钱又不影响使用。
为什么用 Zulu 的 ARM 原生版本
这个方案是从 Stack Overflow 这个回答 里看到的。
之前可能会想到用 Rosetta 2 跑 x86 版本的 JDK 8,但现在不太建议这么做:
- 性能问题:Rosetta 2 毕竟是转译层,原生 ARM 跑起来肯定更快
- 兼容性风险:根据 Apple 的开发者文档,macOS 28(预计 2027 年发布)会大幅缩减 Rosetta 2 的支持范围,到时候只会保留给一些老游戏用。现在如果用 x86 版本,以后可能会遇到麻烦
直接用 ARM 原生版本,一步到位。
小结
ARM Mac 装 Java 8,用 Azul Zulu 的 ARM 原生版本就好。简单直接,也不用担心以后的兼容性问题。