Skip to main content

Java 14

核心总结

  • Switch Expressions 转正,Records、instanceof 模式匹配、Text Blocks 继续预览,CMS 与 Pack200 移除。

升级关注

  • CMS 和 Pack200 已移除;依赖 CMS 参数或 Pack200 工具的构建/运行脚本会失败。
  • Helpful NPE 对排障很有价值。

示例

Records Preview / instanceof Pattern Preview

// javac --enable-preview --release 14 Demo.java
record User(String name, int age) {}

Object value = new User("wener", 18);
if (value instanceof User user) {
System.out.println(user.name());
}

Helpful NullPointerExceptions

java -XX:+ShowCodeDetailsInExceptionMessages Demo

JEPs

JEP状态分类标题中文描述
JEP 305预览语言Pattern Matching for instanceof (Preview)instanceof 模式匹配预览,匹配后直接绑定变量。
JEP 343孵化工具/平台Packaging Tool (Incubator)jpackage 孵化,用于生成平台安装包。
JEP 345正式GC/RuntimeNUMA-Aware Memory Allocation for G1G1 支持 NUMA 感知内存分配。
JEP 349正式工具/平台JFR Event StreamingJFR 支持事件流式消费。
JEP 352正式库/APINon-Volatile Mapped Byte Buffers支持非易失内存映射字节缓冲。
JEP 358正式库/APIHelpful NullPointerExceptionsNPE 显示更具体的空值来源。
JEP 359预览语言Records (Preview)Record 数据载体类预览。
JEP 361正式语言Switch Expressions (Standard)switch 表达式正式。
JEP 362废弃工具/平台Deprecate the Solaris and SPARC Ports废弃 Solaris 和 SPARC port。
JEP 363移除/禁用GC/RuntimeRemove the Concurrent Mark Sweep (CMS) Garbage Collector移除 CMS GC。
JEP 364正式GC/RuntimeZGC on macOSZGC 支持 macOS。
JEP 365正式GC/RuntimeZGC on WindowsZGC 支持 Windows。
JEP 366废弃库/APIDeprecate the ParallelScavenge + SerialOld GC Combination废弃 ParallelScavenge 加 SerialOld 组合。
JEP 367移除/禁用工具/平台Remove the Pack200 Tools and API移除 Pack200。
JEP 368第二次预览语言Text Blocks (Second Preview)文本块第二次预览。
JEP 370孵化Panama/向量/原生Foreign-Memory Access API (Incubator)外部内存访问 API 孵化,是 Panama 早期能力。

References