Java 虚拟机是运行 Java 程序的核心,它不是一个单一的东西,而是由不同的厂商提供的,在 macOS 上,主要有以下几个选择:

- Oracle JDK / OpenJDK (最常用)
- Amazon Corretto (企业级首选)
- Azul Zulu (兼容性最好)
- Apple's JDK (旧版系统内置)
- Homebrew (简化安装)
下面我将为你详细介绍每一种,并提供推荐的安装和配置方法。
核心概念:JDK, JRE, 和 JVM
在开始之前,最好先理解这几个术语的区别,这能帮助你做出更好的选择:
- JVM (Java Virtual Machine - Java 虚拟机):这是核心的虚拟机,负责执行 Java 字节码,它不是可以直接下载安装的“软件”,而是包含在 JRE 或 JDK 里面。
- JRE (Java Runtime Environment - Java 运行时环境):包含了运行 Java 程序所必需的 JVM 和核心类库,如果你只是想运行已有的 Java 程序(比如某些 Minecraft 模组),安装 JRE 就够了。
- JDK (Java Development Kit - Java 开发工具包):这是开发 Java 程序所需要的工具包,它包含了 JRE,并且还提供了编译器、调试器、文档生成工具等开发工具。绝大多数开发者都应该安装 JDK。
推荐方案 1:使用 Homebrew 安装 OpenJDK (最简单)
对于绝大多数 macOS 用户,特别是开发者来说,使用 Homebrew 包管理器来安装 OpenJDK 是最简单、最推荐的方式,它会自动处理环境变量,避免配置的麻烦。
步骤 1:安装 Homebrew
如果你的 Mac 还没有安装 Homebrew,请先打开终端(在 应用程序 -> 实用工具 里找到),然后运行以下命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
根据提示完成安装。
步骤 2:使用 Homebrew 安装 OpenJDK
Homebrew 提供了多个版本的 OpenJDK,你可以选择安装最新的 LTS(长期支持)版本,Java 17 或 Java 21。
安装最新的 LTS 版本 (推荐 Java 17 或 21)
# 安装 Java 17 (目前最稳定、应用最广泛的 LTS 版本) brew install openjdk@17 # 或者安装最新的 LTS 版本 Java 21 # brew install openjdk@21
安装其他版本

如果你需要特定版本,Java 8 (LTS) 或 Java 11 (LTS):
# 安装 Java 8 brew install openjdk@8 # 安装 Java 11 brew install openjdk@11
步骤 3:设置环境变量
Homebrew 在安装时会提示你如何设置环境变量,这是最关键的一步,否则你的终端无法识别 java 和 javac 命令。
-
查找安装路径: 运行以下命令,找到你刚刚安装的 JDK 的路径,对于 Java 17,路径通常是
/opt/homebrew/opt/openjdk@17(Apple Silicon Mac) 或/usr/local/opt/openjdk@17(Intel Mac)。echo "export PATH=\"/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home/bin:\$PATH\"" >> ~/.zshrc
注意: 如果你使用的是
bash而不是zsh(macOS 默认终端),请将~/.zshrc替换为~/.bash_profile,并且请将openjdk@17替换成你实际安装的版本。 -
重新加载配置: 在终端中运行以下命令,让配置立即生效:
source ~/.zshrc
步骤 4:验证安装
你可以验证 Java 是否安装成功了。
# 检查 Java 版本 java -version # 检查编译器版本 javac -version
如果看到类似下面的输出,说明安装成功!
openjdk version "17.0.10" 2025-01-16
OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7)
OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode, sharing)
推荐方案 2:直接下载安装 (适合特定需求)
如果你不使用 Homebrew,或者需要 Oracle 官方的 JDK,可以直接从官网下载安装包。
Oracle JDK / OpenJDK
- 下载地址:Oracle JDK Downloads
- 注意:从 Java 17 开始,Oracle JDK 和 OpenJDK 的源代码基本一致,Oracle JDK 提供了额外的商业功能和支持,而 OpenJDK (由社区驱动) 则是免费的,对于个人学习和开发,两者几乎没有区别,你可以选择下载 "OpenJDK" 版本。
安装步骤:
- 访问官网,选择适合你 Mac 芯片(Apple Silicon 或 Intel)的
.dmg安装包。 - 下载后,双击打开,将
JDK拖到应用程序文件夹。 - 配置环境变量:这是手动安装最麻烦的一步,你需要手动告诉系统 JDK 在哪里。
- 打开终端。
- 使用
vim或nano编辑你的配置文件(~/.zshrc):vim ~/.zshrc
- 在文件末尾添加以下内容(请将路径替换成你自己的安装路径):
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home" export PATH="$JAVA_HOME/bin:$PATH"
- 保存文件,然后运行
source ~/.zshrc使配置生效。
Amazon Corretto
由 AWS 提供的、免费的、经过认证的 OpenJDK 发行版,非常适合企业级应用和需要长期稳定支持的开发者。
- 下载地址:Amazon Corretto Downloads
- 优点:免费、LTS 支持、经过 AWS 认证、性能优秀。
- 安装:同样提供
.dmg安装包,安装后需要像 Oracle JDK 一样手动配置JAVA_HOME环境变量。
Azul Zulu
由 Azul 公司提供,提供多种版本的 OpenJDK,包括为 macOS 优化过的版本,兼容性非常好,支持从 Java 8 到最新版本。
- 下载地址:Azul Zulu Downloads
- 优点:兼容性极佳,提供免费的社区版。
- 安装:提供
.dmg或.pkg安装包,安装后也需要手动配置环境变量。
如何管理和切换多个 Java 版本?
开发中常常需要在不同项目间切换 Java 版本(比如一个项目用 Java 8,另一个用 Java 17)。jenv 是一个非常强大的工具,可以帮你轻松管理。
安装 jenv
brew install jenv
配置 jenv
-
将 jenv 添加到你的 shell 配置文件中:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc echo 'eval "$(jenv init -)"' >> ~/.zshrc source ~/.zshrc
-
告诉 jenv 你的 JDK 安装在哪些位置:
# 如果你用 Homebrew 安装的 jenv add /opt/homebrew/opt/openjdk@17 jenv add /opt/homebrew/opt/openjdk@11 # 如果你手动安装的 jenv add /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home jenv add /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
使用 jenv
# 列出所有已管理的 Java 版本 jenv versions # 设置全局 Java 版本 jenv global 17 # 为当前目录设置 Java 版本(会创建一个 `.java-version` 文件) jenv local 11 # 查看当前生效的 Java 版本 jenv version
总结与建议
| 方案 | 优点 | 缺点 | 适合人群 |
|---|---|---|---|
| Homebrew + OpenJDK | 最简单,自动配置路径,版本管理方便 | 依赖 Homebrew | 绝大多数 macOS 用户和开发者 |
| 手动下载安装 | 官方来源,特定需求(如 Oracle 商业特性) | 需要手动配置环境变量,较繁琐 | 需要特定厂商 JDK 的开发者 |
| Amazon Corretto | 免费、LTS、稳定、AWS 认证 | 需手动配置路径 | 企业级开发,AWS 生态开发者 |
| Azul Zulu | 兼容性极佳,版本选择多 | 需手动配置路径 | 需要跨平台高度兼容性的开发者 |
给你的最终建议:
- 如果你是 macOS 新手或普通开发者:直接使用 Homebrew 安装 OpenJDK 17,这是最省心、最现代的方案。
- 如果你是企业开发者或追求稳定:可以考虑 Amazon Corretto 或 Azul Zulu,它们提供出色的长期支持。
- 如果你需要管理多个 Java 版本:强烈建议安装 jenv,它会让你在版本切换中如鱼得水。
