JDK 15
JDK 15 正式发布文本块,使 ZGC 和 Shenandoah 转为生产特性,并继续预览 Record 与 Sealed Class。
Text Blocks(正式)
java
String sql = """
SELECT id, name
FROM user
WHERE status = 'ACTIVE'
ORDER BY id
""";文本块会处理公共缩进,但不会自动进行模板插值。拼接动态 SQL 时仍应使用参数化查询,不能用文本块规避 SQL 注入。
Sealed Classes(Preview)
java
sealed interface Result permits Success, Failure {}
final class Success implements Result {}
final class Failure implements Result {}密封类型限制直接子类型集合,适合领域模型和代数数据类型。直接子类型必须声明为 final、sealed 或 non-sealed。JDK 17 才正式发布。
Records 与模式匹配
- Records 进入第二次 Preview,补充局部 Record、注解等能力。
instanceof模式匹配进入第二次 Preview。
JVM 与平台
| 特性 | 说明 |
|---|---|
| ZGC | 从实验性特性转为正式产品特性 |
| Shenandoah | 从实验性特性转为正式产品特性 |
| Hidden Classes | 支持框架在运行期生成不可被普通代码发现的类 |
| EdDSA | 提供 Edwards-Curve 数字签名算法 |
| Foreign-Memory API | 第二次 Incubator |
| Biased Locking | 默认禁用并标记为待移除 |
移除与弃用
- 移除 Nashorn JavaScript 引擎;需要 JavaScript 能力时应引入独立运行时。
- 移除 Solaris 和 SPARC 端口。
- RMI Activation 标记为待移除。
架构关注
ZGC/Shenandoah 的目标是降低停顿,但吞吐、CPU、内存占用和发行版支持情况仍需压测。低延迟 GC 不是替代容量规划和对象分配治理的万能方案。