Skip to content

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 {}

密封类型限制直接子类型集合,适合领域模型和代数数据类型。直接子类型必须声明为 finalsealednon-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 不是替代容量规划和对象分配治理的万能方案。