一、先把概念说清楚
- Java 版本 = JDK 版本(日常混用)
- LTS= 长期支持版(3–5 年维护),企业只认8 / 11 / 17 / 21
- 非 LTS(9、10、12–16、18–20)=过渡版,生产基本不用
二、四大 LTS 核心区别(最重要)
✅ JDK 8(2014,LTS)—— 现代 Java 起点
统治期最长、国内最普及
- 语言:Lambda、Stream、接口默认方法、Optional
- API:新日期时间 API(java.time)
- JVM:移除 PermGen,改用 Metaspace
- GC:G1 成熟,CMS 主流
- 生态:最稳、兼容最强、框架全支持
- 缺点:代码啰嗦、并发弱、无低延迟 GC、安全旧
一句话:Java 8 = 能用、稳定、老旧。
✅ JDK 11(2018,LTS)—— 企业过渡首选
8 → 17 中间最稳跳板
- 语言:var 局部类型推断(简化代码)
- API:HTTP Client 正式版、Flight Recorder(性能分析)
- JVM:ZGC 实验版(低延迟萌芽)、容器感知增强
- 精简:移除 Java EE、CORBA、Applet 等旧东西
- 生态:Spring Boot 2.x 推荐基线
一句话:Java 11 = 干净、轻量、启动快、可小升级。
✅ JDK 17(2021,LTS)—— 2025–2030 主流基线
你前面问的重点,Spring Boot 3+ 强制最低版本
- 语言:
- 密封类 sealed(控制继承、模式匹配基础)
- Record 数据类(自动 equals/hashCode/toString)
- instanceof 模式匹配(免强转)
- 文本块 Text Blocks(多行字符串)
- JVM:
- ZGC 正式生产可用(亚毫秒停顿,TB 堆)
- Shenandoah GC 正式(高吞吐低延迟)
- 启动更快、内存更低、CDS 增强
- 安全:*强封装内部 API(sun.不可访问)**
- 生态:Spring 6、Spring Boot 3、Dubbo 3 基线
一句话:Java 17 = 现代、高性能、低延迟、安全、生态未来。
✅ JDK 21(2023,LTS)—— 下一代云原生 Java
最新旗舰,并发革命
- 语言:
- 虚拟线程 Virtual Threads(正式):百万级并发,内存 1KB / 个
- 模式匹配全面转正(switch、record、解构)
- 未命名变量 / 模式(进一步简化)
- JVM:
- 分代 ZGC(更低延迟、更高吞吐)
- 启动更快、AOT 增强
- 并发:结构化并发、作用域值(配合虚拟线程)
一句话:Java 21 = 高并发、云原生、微服务终极版。
三、非 LTS 过渡版(只记关键)
- 9:模块化(JPMS)、JShell、集合工厂方法
- 10:var、G1 并行 Full GC
- 12–16:预览特性(文本块、模式匹配、密封类、Record)、ZGC 逐步转正
四、四大 LTS 一眼对比(面试直接背)
表格
| 版本 | 年份 | 最大亮点 | GC | 生态地位 |
|---|---|---|---|---|
| 8 | 2014 | Lambda、Stream | G1/CMS | 老系统主力 |
| 11 | 2018 | var、HTTP Client | ZGC (实验) | 过渡首选 |
| 17 | 2021 | 密封类、Record、ZGC 正式 | ZGC/Shenandoah | 现在主流 |
| 21 | 2023 | 虚拟线程、模式匹配 | 分代 ZGC | 未来主流 |
五、企业怎么选(直接给结论)
- 老系统(8):维持,不做大改造
- 新系统(2025+):直接上 17 或 21
- 微服务 / 高并发:21(虚拟线程)
- 中间件 / 基础组件:17(稳定 + 现代)
六、一句话总结全区别
- 8:函数式革命,旧时代巅峰
- 11:精简干净,过渡首选
- 17:现代语法 + 低延迟 GC,当前主流
- 21:虚拟线程,并发革命,未来标杆