JDK 17是当前最稳妥起点,新项目可选JDK 21或JDK 25(2025年9月发布的最新LTS);必须依据项目实际需求、框架最低要求(如Spring Boot 3.x需JDK 17+)及运行环境约束来选择,优先选用LTS版本,避开仅支持6个月的非LTS版。

选 JDK 版本不是看数字大小,而是看项目要跑在哪、用什么框架、谁来维护。JDK 17 是当前最稳妥的起点,兼顾稳定、生态支持和现代特性;新项目可直接上 JDK 21 或 JDK 25(2025年9月发布的最新 LTS),但得确认目标系统和依赖真能跟上。
先看项目实际要求
别只看自己电脑装了啥,关键查三处:
-
pom.xml 或 build.gradle 中的 Java 版本配置:比如
<java.version>17</java.version>或sourceCompatibility = JavaVersion.VERSION_17,这决定了编译产物最低运行版本 - 核心框架的硬性要求:Spring Boot 3.x+ 必须 JDK 17+;Hibernate 6+、Quarkus 3.0+ 同样不接受低于 17 的版本;而老项目若还在用 Struts2 或 Shiro 旧版,可能卡在 JDK 8
- 运行环境限制:客户机是 Windows 7?某些嵌入式 Linux glibc 版本太低?这些场景下 JDK 17+ 可能因 TLS 1.3 默认启用或系统调用变更而启动失败,JDK 11 反而更稳
优先选 LTS,避开非长期支持版
LTS 版本有 8 年左右安全更新,适合生产部署。2026 年主流 LTS 是:
- JDK 17(2021年9月发布,免费支持至 2029年9月):兼容性最广,Spring Boot 3、Micrometer、GraalVM native image、jpackage 全都支持到位
- JDK 21(2023年9月发布,支持至 2031年9月):虚拟线程正式落地,适合高并发 IO 场景,但需注意部分反射-heavy 框架(如 Lombok + MapStruct 组合)在 GraalVM 原生编译中仍有坑
- JDK 25(2025年9月发布,最新 LTS):适合新项目起步,语言和工具链更新更全,但企业级中间件适配进度需单独验证
别用 JDK 22、23、26 这类非 LTS 版本打包分发——它们只有半年支持期,上线后连安全补丁都没有。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
立即学习“Java免费学习笔记(深入)”;
安装来源和工具链完整性
Oracle JDK 从 17 开始对生产环境收费,建议选:
- Eclipse Temurin(原 AdoptOpenJDK):TCK 认证、各平台预编译包齐全、社区活跃
- Microsoft Build of OpenJDK:Windows 支持极好,Azure 云环境默认集成,CI/CD 流水线友好
安装时务必确认含完整开发工具链:javac、jlink、jpackage、jdeps 都得能调用。仅装 JRE 或精简版 JDK,跨平台打包(如生成 .exe/.dmg/.deb)会直接失败。验证方式很简单:javac -version 和 jpackage --version 都得有输出。
多环境一致性不能忽略
开发机装 JDK 21,CI 流水线用 JDK 17,生产服务器跑 JDK 8 —— 这种组合大概率在上线前就崩。必须做到:
- 本地 IDE、Maven/Gradle 构建、Docker 构建镜像、K8s 节点上的 JDK 主版本一致
- 在
maven-compiler-plugin中显式锁死<source>和<target>,防止开发者误用高版本语法 - CI 脚本里明确指定 JDK,例如 GitHub Actions 用
actions/setup-java@v4设java-version: '17'

















