Java 8 是一个里程碑式的版本,但在此之后,Java 改变了发布节奏,每六个月发布一个版本,这使得新特性来得更快、更密集。 每三年会指定一个版本为长期支持版,企业级应用通常选择 LTS 版本。JDK 8, 11, 17, 21 是主要的 LTS 版本。
一、JDK11
-
HTTP Client (标准):
-
在 JDK 9 中引入的孵化器模块,现在正式成为标准 API (
java.net.http)。 -
支持 HTTP/2 和 WebSocket,性能更好,替代古老的
HttpURLConnection。
-
-
用于 Lambda 参数的局部变量语法:
-
允许在 Lambda 表达式中使用
var。 -
(var x, var y) -> x.process(y)。
-
-
直接运行单个 Java 文件:
-
无需先编译
.java文件,可以直接使用java HelloWorld.java来运行,简化了脚本和小程序的学习与测试。
-
-
String API 增强:
-
新增了一系列非常实用的方法,如:
-
isBlank(): 判断字符串是否为空白(空格、制表符等)。 -
lines(): 将字符串按行分割成流。 -
repeat(int count): 重复字符串。 -
strip(): 去除首尾空白(比trim()更智能,能识别 Unicode 空白字符)。
-
-
-
Epsilon: 低开销垃圾收集器:
-
一个无操作的 GC,用于性能测试、内存压力测试等不需要垃圾回收的场景。
-
-
ZGC (实验性):
-
一个可扩展的低延迟垃圾收集器,目标是将停顿时间控制在 10ms 以下,即使处理 TB 级堆内存。
-
-
移除模块:
-
移除了 Java EE 和 CORBA 模块,如
javax.xml.ws等。
-
二、JDK17
-
密封类 (Sealed Classes) (标准): 从预览版转正。
-
移除实验性 AOT 和 JIT 编译器: 移除了不成熟的 GraalVM 相关功能。
-
恢复始终严格浮点语义: 使浮点运算始终保持一致。
-
新的 macOS 渲染管道、增强的伪随机数生成器等。
三、JDK21
-
虚拟线程 (标准): 正式引入虚拟线程,用于大规模并发应用。
-
Record Patterns (标准): 模式匹配功能进一步增强。
-
Switch 模式匹配 (标准): 模式匹配在
switch中正式可用。 -
序列化集合: 为集合创建不可变的序列化视图。
-
分代 ZGC: 通过分代管理,提高了 ZGC 的吞吐量。
| 版本 | 类型 | 关键特性 |
|---|---|---|
| JDK 8 | LTS | Lambda表达式,Stream API,新的日期时间API,Optional |
| JDK 9 | 非LTS | 模块化(JPMS),集合工厂方法,JShell |
| JDK 11 | LTS | HTTP Client API, var in Lambda, 直接运行.java, String API增强 |
| JDK 17 | LTS | 密封类,文本块,Records,模式匹配instanceof |
| JDK 21 | LTS | 虚拟线程,Record Patterns,Switch模式匹配 |
-
新项目: 强烈推荐直接从 JDK 17 或 JDK 21 开始。JDK 21 的虚拟线程等特性代表了未来的方向。
-

1489

被折叠的 条评论
为什么被折叠?



