跳到主要内容 JDK 21 开发环境配置指南 | 极客日志
Java java
JDK 21 开发环境配置指南 本文详细介绍 JDK 21 的核心特性与版本选择策略,提供 Windows 和 macOS 系统的完整安装配置流程,包括环境变量设置与验证。内容涵盖 IntelliJ IDEA、Eclipse、VSCode 等主流 IDE 的集成方法,多版本 JDK 管理方案(如 JEnv),以及常见故障排查与性能优化最佳实践,助力开发者构建高效稳定的 Java 21 开发环境。
在 Java 开发环境中,选择合适的 JDK 版本对项目性能、安全性和可维护性有着决定性影响。作为 Java 的最新长期支持 (LTS) 版本,JDK 21 凭借其 8 年支持周期和革命性特性,已成为企业级应用和云原生开发的首选。本文将介绍 JDK 21 在 Windows 和 macOS 系统下的安装配置全流程,包括环境变量设置、验证方法、常见问题排查以及主流 IDE 集成方案,帮助开发者快速构建稳定高效的 Java 开发环境。
一、JDK 21 的核心优势与版本选择理由
1.1 JDK 21 的特性亮点 JDK 21 作为 Java 的最新 LTS 版本,引入了多项突破性技术改进:
虚拟线程 (JEP 444) :轻量级线程模型,显著提升并发性能
创建成本仅为平台线程的 1/1000
采用 M:N 映射到载体线程池,解决阻塞操作导致的资源浪费
适用于高并发服务器应用,可提高吞吐量 30% 以上
结构化并发 (预览) :简化多线程编程
通过 StructuredTaskScope API 统一管理线程组
简化错误处理和取消机制,提高代码可观察性
降低并发编程复杂度,减少线程泄漏和取消延迟风险
字符串模板 (预览) :增强字符串拼接语法
提供类似 Python 的 f-string 语法,如 "Hello, {name}"
避免运行时异常,提高代码安全性和可读性
分代 ZGC (JEP 449) :优化大内存回收
减少大堆内存应用的垃圾回收停顿时间
提高高负载场景下的应用响应速度
未命名类和变量 (预览) :简化开发流程
降低学习门槛,允许更灵活的语法表达
适合教育场景和快速原型开发
1.2 版本选择策略
企业级应用 :JDK 21 提供 8 年支持周期 (2023-2031),确保长期稳定
云原生开发 :虚拟线程和 ZGC 特性特别适合容器化、微服务架构
性能优化 :相比 JDK 17,吞吐量提升约 25%,内存占用降低 15%
未来兼容性 :作为最新 LTS 版本,新特性将被主流框架和工具优先支持
开发环境 :可同时安装 JDK 21、JDK 17 和 JDK 11,满足不同项目需求
生产环境 :推荐使用 JDK 21 或 JDK 17 LTS 版本,避免使用已过时的 JDK 8
测试环境 :可尝试 JDK 23/24 等非 LTS 版本,用于新特性测试
二、主流 JDK 发行版对比与选择 Java 生态中存在多个 JDK 发行版,各有优势:
发行版 商业授权 优势 适用场景 Oracle JDK 免费开发,商用需订阅 官方特性完整,更新及时 企业级应用,需要官方支持 Eclipse Temurin 完全免费商用 社区活跃,跨平台一致性好 个人开发者,开源项目 Azul Zulu 完全免费商用 企业级支持,兼容性强 生产环境,长期维护需求 Amazon Corretto 完全免费商用 AWS 生态无缝集成 AWS 云环境应用 GraalVM 免费商用 支持 Native Image,多语言支持 需要启动速度优化或 Polyglot 场景
新项目/企业主流 :Temurin 21(完全免费,社区活跃)
兼容性要求高 :Zulu 21(企业级支持,兼容性最佳)
云原生应用 :Amazon Corretto 21(与 AWS 服务深度集成)
特殊需求 :GraalVM 21(需要 Native Image 或启动速度优化)
三、Windows 系统下 JDK 21 安装与配置
3.1 JDK 21 下载与安装
右键点击下载的 JDK 21 安装包,选择"以管理员身份运行"
按照安装向导提示,点击"下一步"
选择安装路径 (关键步骤)
推荐路径:C:\Program Files\Java\jdk-21
避免中文路径,避免空格(如 D:\Java\jdk21)
勾选"开发工具"组件 (必须勾选,否则缺少编译器)
继续点击"下一步"完成安装
安装完成后点击"关闭"退出安装向导
3.2 环境变量配置
右键点击"此电脑"或"我的电脑",选择"属性"
点击"高级系统设置"
在"系统属性"窗口中,点击"环境变量"按钮
在"系统变量"区域,点击"新建"
变量名:JAVA_HOME
变量值:填写 JDK 安装路径(如 C:\Program Files\Java\jdk-21)
点击"确定"保存设置
在"系统变量"中找到 Path 变量,点击"编辑"
点击"新建",添加:%JAVA_HOME%\bin
如果系统中存在其他 JDK 版本,将新建的路径上移到最上方 ,确保优先级
点击"确定"保存所有变更
在"系统变量"区域点击"新建"
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
点击"确定"保存设置
注意 :从 JDK 5 开始,如果未设置 CLASSPATH,Java 虚拟机会自动将其设置为当前目录 (.),因此对于新项目,可以不配置此环境变量。
3.3 验证 JDK 21 配置
按 Win+R 组合键,输入 cmd 回车
或在文件资源管理器中,右键选择"在此处打开终端"
java version "21" 2023-09-19 LTS Java(TM) SE Runtime Environment (build 21+12-LTS-51) Java HotSpot(TM) 64-Bit Server VM (build 21+12-LTS-51, mixed mode)
应输出之前设置的 JDK 路径,如 C:\Program Files\Java\jdk-21。
应显示 %JAVA_HOME%\bin\java.exe 位于路径列表最前面。
四、macOS 系统下 JDK 21 安装与配置
4.1 JDK 21 下载与安装
双击下载的.dmg 文件,启动安装程序
点击"继续",选择安装位置(通常为 /Library/Java/JavaVirtualMachines)
继续点击"继续"完成安装
安装完成后点击"关闭"
手动安装(可选)
如果选择.tar.gz 安装包:
sudo tar -zxvf jdk-21_macos-aarch64_bin.tar.gz -C /Library/Java/JavaVirtualMachines
4.2 环境变量配置 /usr/libexec/java_home -v21
/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home
打开终端应用
编辑 shell 配置文件(根据使用的 shell 选择):
zsh(macOS 催化版 12+ 默认):vim ~/.zshrc
bash:vim ~/.bash_profile
在文件末尾添加以下内容:
export JAVA_HOME=$(/usr/libexec/java_home -v 21)
export PATH=$JAVA_HOME /bin:$PATH
保存并退出编辑器
使配置生效:
source ~/.zshrc
或
source ~/.bash_profile
4.3 验证 JDK 21 配置 openjdk version "21.0.8" 2025-07-15 LTS Java(TM) SE Runtime Environment (build 21.0.8+12-LTS-250) Java HotSpot(TM) 64-Bit Server VM (build 21.0.8+12-LTS-250, mixed mode, sharing)
应输出 JDK 安装路径,如 /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home。
五、环境变量配置常见问题排查
5.1 Windows 系统常见问题
Path 变量未添加 %JAVA_HOME%\bin
环境变量未生效(未重启终端或 IDE)
系统变量与用户变量冲突
检查 Path 变量是否包含 %JAVA_HOME%\bin
关闭所有命令提示符窗口,重新打开
如果问题依旧,尝试重启电脑
使用管理员权限运行命令提示符
JDK 安装路径含空格(如 C:\Program Files\Java\jdk-21)
某些工具无法正确解析带空格的路径
最佳实践 :将 JDK 安装到无空格路径(如 D:\Java\jdk-21)
mklink /J D:\Javajdk-21 "C:\Program Files\Java\jdk-21"
然后配置 JAVA_HOME=D:\Java\jdk-21
5.2 macOS 系统常见问题
手动解压.tar.gz 包未放置到正确目录
未创建 Info.plist 文件(手动解压时需要)
检查 JDK 是否安装到 /Library/Java/JavaVirtualMachines/ 下
如果手动解压,需创建 Info.plist 文件:
defaults write /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Info.plist CFBundleGetInfoString "Java 21"
确保配置文件保存成功
执行 source ~/.zshrc 或 source ~/.bash_profile
如果仍不生效,重启终端应用
六、主流 IDE 的 JDK 21 集成方法
6.1 IntelliJ IDEA 配置 JDK 21
打开 IntelliJ IDEA
通过菜单栏访问:File > Project Structure…(快捷键 Ctrl+Alt+Shift+S)
在左侧选择 Platform Settings > SDKs
点击右侧绿色加号按钮 +,选择 Add JDK
浏览并选择 JDK 安装目录(如 C:\Program Files\Java\jdk-21 或 /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home)
点击 OK 保存设置
在 Project Structure 对话框中,选择 Project Settings > Project
在 Project SDK 下拉菜单中选择已添加的 JDK 21
确保 Project language level 设置为 21
点击 Apply 或 OK 保存设置
<properties >
<maven.compiler.source > 21</maven.compiler.source >
<maven.compiler.target > 21</maven.compiler.target >
</properties >
保存文件并重新加载 Maven 项目
重启 IntelliJ IDEA 确保配置生效
6.2 Eclipse 配置 JDK 21
打开 Eclipse
通过菜单栏访问:Window > Preferences
导航至:Java > installed JREs
点击 Add…,选择 Standard VM
在 JRE home 中指定 JDK 安装目录(必须指向 JDK 根目录,而非 jre 子目录 )
点击 Finish 完成添加
勾选新添加的 JDK,点击 OK 保存设置
右键点击项目,选择 Properties
导航至:Java Build Path
在 Libraries 选项卡中,展开 JRE System Library
如果显示旧版本,点击 Remove 移除
点击 Add Library…,选择 JRE System Library
选择 Workspace default JRE,确保为 JDK 21
点击 OK 保存设置
如果 Eclipse 无法识别 JDK 21,可尝试以下方法:
在 Eclipse 安装目录下找到 eclipse.ini 文件
添加以下行(位于 -vmargs 之前):
-vm /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home/bin/java
6.3 VSCode 配置 JDK 21
打开 VSCode
进入扩展商店(Ctrl+Shift+X 或 Cmd+Shift+X)
搜索并安装以下扩展:
Extension Pack for Java (推荐安装)
Java Language Support (提供语法高亮和代码补全)
Java Debug (支持 Java 调试)
Java Test Runner (支持运行单元测试)
打开 VSCode 的命令面板(Ctrl+Shift+P 或 Cmd+Shift+P)
输入并执行 Java: Select JDK
在列表中选择已安装的 JDK 21
如果列表中没有,手动指定 JDK 路径:
{
"java.home" : "C:\\Program Files\\Java\\jdk-21"
}
打开 VSCode 的集成终端
执行 java -version 和 javac -version 命令
应显示 JDK 21 的版本信息
七、环境验证脚本与自动化检测
7.1 Windows 环境验证批处理脚本 创建 check_jdk.bat 文件,内容如下:
@echo off
echo JDK 21 环境验证开始...
echo 检查 JAVA_HOME 变量...
echo %JAVA_HOME%
echo 检查 Java 版本...
java -version
echo 检查 Javac 版本...
javac -version
echo 检查环境变量优先级...
where java
echo JDK 21 环境验证完成!
7.2 macOS 环境验证 Shell 脚本 #!/bin/bash
echo "JDK 21 环境验证开始..."
echo "检查 JAVA_HOME 变量..."
echo $JAVA_HOME
echo "检查 Java 版本..."
java -version
echo "检查 Javac 版本..."
javac -version
echo "检查环境变量优先级..."
which java
echo "JDK 21 环境验证完成!"
chmod +x check_jdk.sh
./check_jdk.sh
7.3 测试类文件验证 ClassPath public class HelloWorld {
public static void main (String[] args) {
System.out.println("Hello, World! JDK 21 环境配置成功!" );
System.out.println("Java 版本:" + System.getProperty("java.version" ));
System.out.println("Java SDK 路径:" + System.getProperty("java.home" ));
}
}
javac -d . HelloWorld.java
java -cp . HelloWorld
javac -d . HelloWorld.java
java -cp . HelloWorld
成功运行应显示:
Hello, World! JDK 21 环境配置成功!
Java 版本:21
Java SDK 路径:C:\Program Files\Java\jdk-21
八、多版本 JDK 管理方案 随着 Java 版本迭代加速,多版本管理已成为开发者的必备技能。
8.1 使用环境变量切换
修改 JAVA_HOME 变量值为其他 JDK 路径
在 Path 变量中,将 %JAVA_HOME%\bin 移动到相应位置
关闭并重新打开命令提示符窗口
在.zshrc 或.bash_profile 中修改 JAVA_HOME 设置:
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
执行 source ~/.zshrc 或 source ~/.bash_profile
验证版本:java -version
8.2 使用 JEnv 管理多版本 JDK
安装 WSL2(Windows Subsystem for Linux)
在 WSL 中安装 JEnv:
sudo apt-get install jenv
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "(jenv init -)"' >> ~/.zshrc
source ~/.zshrc
jenv add /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh) "
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "(jenv init -)"' >> ~/.zshrc
source ~/.zshrc
jenv add /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home
九、Java 21 开发环境优化与最佳实践
9.1 项目构建工具配置 <properties >
<maven.compiler.source > 21</maven.compiler.source >
<maven.compiler.target > 21</maven.compiler.target >
</properties >
plugins {
id 'java'
}
sourceCompatibility = 21
targetCompatibility = 21
9.2 代码风格与性能优化
Thread virtualThread = Thread.ofVirtual().start(() -> {
System.out.println("正在执行虚拟线程任务" );
});
ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor();
executor.submit(() -> {
System.out.println("虚拟线程任务执行中" );
});
executor.shutdown();
try (var scope = new StructuredTaskScope .ShutdownOnFailure()) {
scope.fork(() -> {
return "任务结果" ;
});
scope.fork(() -> {
return "另一个任务结果" ;
});
scope.join();
for (var subtask : scope.getSubtasks()) {
if (subtask.getException() != null ) {
subtask.getException().printStackTrace();
} else {
System.out.println("结果:" + subtask.get());
}
}
}
9.3 安全加固建议
禁用不必要的安全特性
定期检查 Oracle 官网安全公告,更新 JDK 版本
生产环境建议使用 OpenJDK 发行版,如 Temurin 或 Zulu
禁用 Java Web Start 和 Java 插件(已过时且不安全)
十、环境配置故障排除与解决方案
10.1 命令行无法识别 java 命令
检查是否安装了 JDK,而非仅 JRE
确认环境变量配置正确(JAVA_HOME 指向 JDK 根目录,Path 包含 %JAVA_HOME%\bin)
重启命令行工具(环境变量变更需要新进程)
验证是否以管理员身份运行命令行(Windows 系统)
检查是否存在多用户环境变量冲突
10.2 IDE 无法识别 JDK 21
IntelliJ IDEA :确保已通过 File > Project Structure > SDKs 添加 JDK 21
Eclipse :检查 Window > Preferences > Java > installed JREs 中是否包含 JDK 21
VSCode :确认 Java 扩展已安装,并在设置中指定了正确的 java.home
清除 IDE 缓存:尝试 File > Invalidate Caches / Restart(IntelliJ IDEA)
检查 IDE 版本兼容性:确保使用最新版 IDE(如 IntelliJ IDEA 2025.2+)
10.3 多版本 JDK 冲突问题
使用 where java(Windows)或 which -a java(macOS)查看所有 Java 路径
在环境变量中明确指定优先级
使用版本管理工具如 JEnv 或 SDKMAN!
在 IDE 中为每个项目单独指定 JDK 路径
检查系统环境变量与用户环境变量是否冲突
十一、总结与建议 JDK 21 环境配置是 Java 开发的基础工作 ,正确配置不仅能确保开发环境稳定运行,还能充分利用 Java 21 的新特性提升应用性能。本文提供了从下载安装到环境变量配置的完整流程,并针对 Windows 和 macOS 系统分别给出了详细步骤。同时,还介绍了主流 IDE 的 JDK 集成方法和多版本管理方案,帮助开发者应对复杂开发场景。
路径规范 :避免使用含空格和中文的路径,建议使用纯英文路径
环境变量 :正确配置 JAVA_HOME 指向 JDK 根目录,Path 包含 %JAVA_HOME%\bin
版本验证 :配置完成后务必执行 java -version 和 javac -version 验证
IDE 集成 :即使系统环境已配置,主流 IDE 仍需单独指定 JDK 路径
多版本管理 :推荐使用 JEnv 或 SDKMAN! 等工具管理多版本 JDK
通过本文的指导,初学者可以快速掌握 JDK 21 的安装配置 ,而有经验的开发者则能深入理解环境变量的工作原理和多版本管理的最佳实践。JDK 21 的虚拟线程和结构化并发等特性将极大提升 Java 应用的并发性能,值得每一位 Java 开发者掌握。
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online