JDK 13
JDK 13 继续打磨 Switch 表达式,并首次预览文本块;平台侧重点是动态 CDS 和网络栈维护性。
Text Blocks(Preview)
java
String json = """
{
"name": "Java",
"version": 13
}
""";文本块减少 JSON、SQL、HTML 等多行文本中的转义和拼接。JDK 13 中仍为 Preview,最终在 JDK 15 正式发布。
Switch 表达式(第二次 Preview)
JDK 13 用 yield 替换第一版 Preview 中容易混淆的 break value:
java
int length = switch (value) {
case "" -> 0;
default -> {
int result = value.strip().length();
yield result;
}
};JDK 13 的 switch 尚不支持 case null,仍需在进入 switch 前单独处理 null。
JVM 与运行时
| 特性 | 说明 |
|---|---|
| Dynamic CDS Archives | 应用退出时动态归档已加载的应用类 |
| Legacy Socket API 重写 | Socket/ServerSocket 底层实现更易维护,并更好适配用户态线程演进 |
| ZGC 归还内存 | 把长期未使用的堆内存归还操作系统 |
-XX:SoftMaxHeapSize | ZGC 可在最大堆以内使用软上限参与内存管理 |
Preview 使用原则
Preview 字节码只能在对应版本并开启 --enable-preview 时运行。它适合学习和验证反馈,不适合作为需要长期兼容的公共库 API。