Java 26 新特性
发布日期:2026-03-17
1. 语言特性
1.1 原始类型模式匹配(第四次预览)
增强 instanceof 和 switch,支持所有原始类型。
java
// instanceof 支持原始类型
if (obj instanceof int i) {
System.out.println(i * 2);
}
// switch 支持原始类型
switch (value) {
case 1 -> "one";
case 2 -> "two";
default -> "other";
}2. 核心特性
2.1 准备让 final 真正 final(JEP 500)
对通过反射修改 final 字段的行为发出警告,为未来确保 Java 程序安全性做准备。
2.2 移除 Applet API(JEP 504)
移除已废弃的 Applet API(自 JDK 17 开始废弃)。
2.3 任意 GC 的 AOT 对象缓存(JEP 516)
AOT 缓存现在可与任何垃圾收集器配合使用,包括 ZGC。
3. 并发与网络
3.1 结构化并发(第六次预览)
java
try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
Future<String> f1 = scope.fork(() -> task1());
Future<String> f2 = scope.fork(() -> task2());
scope.join();
scope.throwIfFailed();
}3.2 HTTP/3 支持(JEP 517)
HTTP Client API 支持 HTTP/3 协议。
java
HttpClient.newBuilder()
.protocolVersion(HttpClient.Version.HTTP_3)
.build();3.3 向量 API(第十一次孵化)
表达向量计算,在运行时可靠地编译为最优向量指令。
4. 安全
4.1 PEM 编码(第二次预览)
新增 API 支持 PEM 格式的密钥、证书编解码。
4.2 混合公钥加密(HPKE)
新增 "HPKE" 密码算法,支持 RFC 9180 定义的混合公钥加密。
5. 库更新
5.1 Comparator 新增 min/max 方法
java
Comparator.comparingInt(Student::getAge).min(s1, s2);
Comparator.comparingInt(Student::getAge).max(s1, s2);5.2 Process 实现 AutoCloseable
java
try (Process p = new ProcessBuilder("ls").start()) {
// process 自动关闭
}5.3 Duration 新增 MIN/MAX 常量
java
Duration.MIN; // 最小值
Duration.MAX; // 最大值5.4 Instant 新增 plusSaturating
java
Instant.now().plusSaturating(Duration.ofHours(1000));
// 不会抛异常,超过范围返回 Instant.MAX/MIN5.5 UUIDv7 支持
java
UUID uuid = UUID.ofEpochMillis(System.currentTimeMillis());5.6 Unicode 17.0
支持 Unicode 17.0,新增 4,803 个字符。
6. GC 优化
6.1 G1 提升吞吐量
减少 GC 线程与应用线程之间的同步,提升 G1 吞吐量。
6.2 G1 支持 GCOverheadLimit
G1 现在会在 GC 开销超过限制时抛出 OOM。
6.3 虚拟线程优化
等待类初始化的虚拟线程现在会从 carrier 线程卸载,避免死锁。
7. 其他
7.1 JDBC 4.5 支持
- 废弃 SQLPermission
- 新增 DECFLOAT 和 JSON 类型
7.2 API 文档深色主题
JavaDoc 新增深色主题支持。
8. 总结
| 类别 | 特性 |
|---|---|
| 语言 | 原始类型模式匹配(预览) |
| 并发 | 结构化并发(预览)、虚拟线程优化 |
| 网络 | HTTP/3 支持 |
| 安全 | PEM 编码(预览)、HPKE |
| 库 | Comparator min/max、Process AutoCloseable、Duration MIN/MAX、UUIDv7 |
| GC | G1 吞吐量优化、AOT 任意 GC |