Java 现代化之旅#
面向 JDK 8 开发者的 Java 新特性教程,沿 LTS 阶梯系统演进:8 → 11 → 17 → 21 → 25。
graph LR
J8["JDK 8<br/>起点"] --> J11["JDK 11"]
J11 --> J17["JDK 17"]
J17 --> J21["JDK 21"]
J21 --> J25["JDK 25"]
style J8 fill:#ffd54f
style J25 fill:#a5d6a7
各版本速览#
| LTS | 旗舰特性 | 入口 |
|---|---|---|
| JDK 11 | var、标准库增强(String/集合/Stream/Optional)、HTTP Client、G1 默认化、JFR 开源 |
概览 |
| JDK 17 | record / sealed / switch 表达式 / 文本块 / instanceof 模式匹配、ZGC 转正 |
概览 |
| JDK 21 | 虚拟线程、switch 模式匹配与 record 解构、分代 ZGC | 概览 |
| JDK 25 | 实例 main、弹性构造器、Scoped Values、ZGC 分代化收尾 | 概览 |
怎么读#
- 每个版本分两个层面:语言特性(语法怎么用)与 JVM 与运行时(GC、观测、启动等底层变化)。
- 每个特性一页,按固定八段展开:为什么需要 → 怎么用 → 与 JDK 8 对比 → 底层原理 → 常见坑。
- 每段代码都是
examples/里真实可运行的源码(通过 snippets 嵌入,与示例零漂移),可 clone 仓库 后跑(命令见 快速开始)。
建议路线:先从 var(最简单)入门 → record → instanceof 模式匹配 → 模式匹配与 record 解构 → 虚拟线程;关心底层时读各版本的 JVM 与运行时。
开始#
跨版本专题#
某些能力不属于单个 LTS,而是从某一版起持续演进、横跨多个版本——它们单独成篇:
- 模块系统(JPMS):JDK 9 起,module-info / module-path / jlink,强封装与可裁剪运行时。
- 并发演进:JDK 8 → 25,平台→虚拟线程、ThreadLocal→ScopedValue、散落→结构化并发。