Skip to content

ca

JDK 8-17 特性

JDK 8 到 JDK 17 跨越了 Java 平台从“长期大版本”到“每六个月发布一次”的阶段。学习时不要只背语法糖,还要关注模块化、JVM、GC、工具链和兼容性变化。

版本索引

版本发布时间定位代表性变化
JDK 82014-03LTSLambda、Stream、默认方法、java.time
JDK 92017-09功能版本模块系统、JShell、集合工厂、G1 默认化
JDK 102018-03功能版本var、容器感知、AppCDS
JDK 112018-09LTS标准 HTTP Client、单文件运行、ZGC
JDK 122019-03功能版本Switch 表达式预览、Shenandoah、默认 CDS
JDK 132019-09功能版本Text Blocks 预览、动态 CDS
JDK 142020-03功能版本Switch 表达式正式、Record 预览、友好 NPE
JDK 152020-09功能版本Text Blocks 正式、Sealed Class 预览、ZGC 正式
JDK 162021-03功能版本Record、instanceof 模式匹配正式、jpackage
JDK 172021-09LTSSealed Class 正式、强封装 JDK 内部 API

建议学习顺序

从 JDK 8 升级到 JDK 17 的重点

  1. 不要把 Preview/Incubator 特性当成稳定 API;生产代码应确认特性在目标版本是否已正式发布。
  2. JDK 9 引入模块系统并逐步封装内部 API,JDK 17 默认强封装,依赖 sun.* 或深度反射的旧框架需要升级。
  3. JDK 11 移除了 Java EE 与 CORBA 模块,JAXB、JAX-WS 等需要改为独立依赖。
  4. CMS 在 JDK 14 被移除;迁移时应评估 G1、ZGC 或 Shenandoah。
  5. GC 日志统一为 -Xlog:gc*,旧参数需要逐项核对。
  6. 升级顺序优先采用:升级依赖 → 在 JDK 8 编译器下清理警告 → 先运行于 JDK 17 → 再切换编译目标。

本章覆盖开发、架构与迁移中有实际影响的正式特性和重要 Preview/Incubator JEP,不机械罗列构建系统、冷门平台端口及纯内部重构。

官方资料