Skip to content

JDK 14

JDK 14 正式发布 Switch 表达式,并预览 Record、instanceof 模式匹配和第二版文本块。

Switch 表达式(正式)

java
String type = switch (status) {
    case 200, 201 -> "success";
    case 400 -> "client-error";
    default -> {
        audit(status);
        yield "other";
    }
};

箭头标签不会发生传统 case 穿透;需要多条语句时使用代码块和 yield 返回值。

Records(Preview)

java
record User(long id, String name) {}

Record 用于表达透明的数据载体,编译器生成访问器、构造器、equalshashCodetoString。JDK 14 中仍是 Preview,JDK 16 才正式发布。

instanceof 模式匹配(Preview)

java
if (value instanceof String text) {
    System.out.println(text.length());
}

它把类型检查、强制转换和局部变量声明合并,并通过流敏感作用域避免变量在不安全分支中可见。

Helpful NullPointerExceptions

JVM 可以指出空指针发生在表达式链的哪个变量上,而不再只报告代码行。JDK 14 中可通过 -XX:+ShowCodeDetailsInExceptionMessages 开启,后续版本默认启用。

JVM、工具与移除项

特性说明
JFR Event Streaming持续消费 JFR 事件,用于低开销实时监控
jpackage孵化阶段,将应用打包为平台原生安装包
Foreign-Memory Access API孵化阶段,安全高效访问堆外内存
G1 NUMA改善多路 NUMA 机器上的内存分配
CMS 移除Concurrent Mark Sweep GC 被正式删除
Pack200 移除删除 pack200unpack200 工具及 API

迁移关注

如果旧系统仍指定 -XX:+UseConcMarkSweepGC,升级到 JDK 14+ 会失败,需要切换并压测 G1、ZGC 或 Shenandoah。