JDK 21 · 2023-09-19 · LTS
JDK 21 LTS:虚拟线程与模式匹配
Java 21 是当前最重要的 LTS 之一:虚拟线程、switch 模式匹配、record 模式、SequencedCollection、分代 ZGC 正式落地;结构化并发、Scoped Values、FFM、String Templates 进入预览。
15官方 JEP 数
6正式特性
4预览 / 孵化
2移除 / 弃用
代表特性HIGHLIGHTS
这些是这一版最值得记住的变化。状态标签区分「正式 / 预览 / 孵化 / 移除」——预览不等于稳定,迁移时要特别确认。
正式
虚拟线程转正
Thread.ofVirtual / newVirtualThreadPerTaskExecutor,thread-per-task 回归。
正式
Switch 模式匹配转正
类型模式、when 守卫、null 分支与穷尽性检查。
正式
Record Patterns 转正
在模式中解构 record,支持嵌套。
正式
SequencedCollection
统一首尾访问与 reversed 视图。
正式
分代 ZGC
分代假设 + 并发转移,低延迟与吞吐兼得。
预览
结构化并发(预览)
StructuredTaskScope 管理子任务生命周期。
预览
Scoped Values(预览)
不可变、可继承的线程上下文。
预览
FFM API(预览)
Arena 管理本地内存,MemorySegment 取代 Unsafe。
正式
KEM API
标准密钥封装接口,SunJCE 提供 DHKEM。
预览
String Templates(预览)
STR."..." 模板插值,后在 JDK 23 被撤回。
全部 JEP15
数据来自 OpenJDK 官方 Features 表。中文名称仅为主要特性的人工标注。
| JEP | 标题 | 状态 | 来源 |
|---|---|---|---|
| JEP 430 | String Templates (Preview) String Templates(预览) | 预览 | 官方 → |
| JEP 431 | Sequenced Collections SequencedCollection | 正式 | 官方 → |
| JEP 439 | Generational ZGC 分代 ZGC | 正式 | 官方 → |
| JEP 440 | Record Patterns Record Patterns 转正 | 正式 | 官方 → |
| JEP 441 | Pattern Matching for switch Switch 模式匹配转正 | 正式 | 官方 → |
| JEP 442 | Foreign Function & Memory API (Third Preview) FFM API(预览) | 预览 | 官方 → |
| JEP 443 | Unnamed Patterns and Variables (Preview) | 预览 | 官方 → |
| JEP 444 | Virtual Threads 虚拟线程转正 | 正式 | 官方 → |
| JEP 445 | Unnamed Classes and Instance Main Methods (Preview) | 预览 | 官方 → |
| JEP 446 | Scoped Values (Preview) Scoped Values(预览) | 预览 | 官方 → |
| JEP 448 | Vector API (Sixth Incubator) | 孵化 | 官方 → |
| JEP 449 | Deprecate the Windows 32-bit x86 Port for Removal | 弃用 | 官方 → |
| JEP 451 | Prepare to Disallow the Dynamic Loading of Agents | 弃用 | 官方 → |
| JEP 452 | Key Encapsulation Mechanism API KEM API | 正式 | 官方 → |
| JEP 453 | Structured Concurrency (Preview) 结构化并发(预览) | 预览 | 官方 → |
移除与弃用REMOVED
升级前先排查这些变化。移除项通常不会在编译期全部报错,运行时或工具链上才暴露。
- Windows 32-bit x86 端口被弃用(JEP 449)
- 动态加载 agent 产生警告(JEP 451)
这一版的故事STORY
Java 21 把「并发」和「语言表达力」两条线同时推过终点线:虚拟线程让阻塞式代码重新可扩展,模式匹配让类型分支更安全,SequencedCollection 则修补了集合家族长期缺失的首尾抽象。同时,这一版也是预览特性最密集的版本——String Templates 的后续撤回,正好是一堂关于预览机制的课。
怎么用这一页:先读故事建立坐标,再扫一遍代表特性。如果你正在用这个版本,重点看「移除与弃用」;如果你在选型或面试,重点记住 2–3 个代表特性及其版本边界。