Java 语言版本演进与特性概要

张开发
2026/4/27 2:47:32 15 分钟阅读

分享文章

Java 语言版本演进与特性概要
Java 语言版本演进与特性概要本文按时间线归纳Java SE / JDK各阶段代表性语言与平台特性并标出常见LTS长期支持版本。细节以各版本Release Notes与JEPJDK Enhancement Proposal为准预览Preview/ 孵化Incubator特性在相邻版本中可能更名、调整或撤回。发布节奏2018 年起常见模式约每六个月发布一个特性版本LTS由 Oracle / OpenJDK 路线图书面约定近年常见为8、11、17、21后续以 Oracle Java SE Support Roadmap 等官方页面为准非 LTS版本通常仅短期更新支持生产选型以 LTS 为主。目录版本节奏与 LTS 一览OpenJDK、JDK 与常见发行版经典阶段1.08现代阶段9 起模块系统JPMS提要JVM / GC 与平台特性线索按 LTS 锚点的特性聚类选型与升级建议升级检查清单工程向参考链接版本节奏与 LTS 一览半年节奏 LTS经典阶段JDK 5JDK 8 LTS11 LTS17 LTS21 LTS自JDK 9起特性版约每6 个月发布一次LTS在路线图中显式标定17→21等近年常见为约两年一档8→11、11→17间隔更长各厂商据此提供延长支持与安全更新。非 LTS特性版通常仅维护到下一版本发布后较短窗口生产环境默认对齐LTS。三月特性版九月特性版次年三月…其中少数版本被定为 LTS见官方路线图版本约发布时间备注JDK 82014广泛使用的 LTS函数式与java.time等JDK 112018LTS模块裁剪后基线、新 HTTP Client 等JDK 172021LTS密封类、增强模式匹配等语言特性定型一批JDK 212023LTS虚拟线程Project Loom等维度特性版非 LTSLTS支持周期短适合尝鲜与 CI 多版本矩阵长适合线上与长期合同升级频率高低跨 LTS 迁移可规划 23 年窗口厂商补丁依赖发行版政策多数商业/社区发行版提供多年安全修复JDK 25等后续 LTS 编号与月份以 Oracle Support Roadmap / OpenJDK 公告为准上表不预见具体未发布能力。OpenJDK、JDK 与常见发行版Java SE 平台规范由JCP维护OpenJDK是参考实现的主干源码社区。**「JDK」**在工程语境下常指「某家打包好的可运行 Java 开发/运行套件」与「是否收费/支持条款」无关——需看具体发行版。类型说明OpenJDK 构建基于 OpenJDK 源码树由不同组织构建与签名如Eclipse Temurin、Amazon Corretto、Microsoft Build of OpenJDK等Oracle JDKOracle 分发与支持策略以官网为准与 OpenJDK 同源演进但许可/组件可能不同GraalVM / Native Image侧重 AOT、多语言版本号仍跟踪某 JDK 基线迁移时需单独对照选型时除语言特性外还应核对TLS/加密组件策略、长期安全更新、容器镜像来源与许可证。经典阶段1.08JDK 1.01.4基础平台版本代表性内容节选1.01996首个正式平台虚拟机 基础类库1.11997内部类、JavaBeans、RMI、反射、JDBC1.2 / Java 21998集合框架、Swing、HotSpot 相关演进1.32000HotSpot 成为默认 VM常见发行版叙事1.42002java.util.regex、NIOBuffer/Channel、IPv6、日志 API 等JDK 52004语言现代化第一站特性说明泛型参数化类型编译期擦除实现注解元数据影响框架与工具链自动装箱/拆箱基本类型与包装类转换枚举类型安全枚举增强 for、varargs语法糖java.util.concurrent并发集合与执行器框架JDK 62006平台成熟与性能调优为主如编译器、监控、脚本引擎javax.script等Oracle 收购 Sun后商业支持策略变化对 JDK 分发有影响与语言特性正交。JDK 72011类别内容语言switch字符串、try-with-resources、菱形、二进制/下划线数字字面量等库NIO.2java.nio.file、ForkJoinPoolJDK 82014LTS类别内容语言Lambda、方法引用、接口 default/static 方法库Stream API、java.time、OptionalJVMPermGen 移除类元数据等主要由Metaspace管理具体行为随 GC/实现而变现代阶段9 起发布模型JDK 9模块系统JPMS、jlink、G1 默认 GC 等版本号改为时间驱动前的关键一站。JDK 10通常每版带若干语言/JVM/库 JEP非 LTS仅适合试用与短期验证。按版本简表924节选版本类型常见划分代表性方向节选9特性版模块系统、JShell、集合工厂方法、G1 默认10非 LTSvar局部变量类型推断11LTSHTTP Client标准、单文件源码运行、字符串辅助方法移除Java EE / CORBA等模块后续 EE 走Jakarta EE1214非 LTSSwitch 表达式、文本块、Record、instanceof 模式匹配等多为预览迭代15非 LTS文本块、Record 等转正密封类预览16非 LTSinstanceof 模式匹配等Vector API孵化等17LTS密封类转正强封装 JDK 内部 APIFFM 前身孵化等18非 LTS默认字符集UTF-8、简易jwebserver等1920非 LTS虚拟线程、结构化并发等预览/孵化迭代21LTS虚拟线程等进入正式特性记录模式、Scoped Values等仍多处于预览/演进2224非 LTS多文件源码运行、语言小步调整、Vector API / Gatherers等持续演进SecurityManager弃用移除按 JEP 分阶段上表中「转正」指在该版本以正式语言或平台特性发布具体 JEP 编号与变更请以 JDK 发布说明 为准。模块系统JPMS提要JDK 9引入Java Platform Module System核心文件为模块路径上的module-info.java。概念说明module命名单元显式requires/exports/opensclasspath vs modulepath模块化后大量库仍可在 classpath混用时需注意拆包与可读性强封装JDK 16起默认强封装 JDK内部包如sun.misc迁移时常需改依赖或通过--add-opens等临时手段应逐步消除jlink可按模块裁剪自定义运行时镜像服务端/容器场景从JDK 8 → 11的多数「踩坑」来自非法反射访问、被移除的 EE 模块、工具链与容器基线未同步。JDK 8classpath 世界JDK 9module-info / 模块路径JDK 16内部 API 强封装JVM / GC 与平台特性线索语言版本与JVM 行为并行演进以下为查阅 JEP 时的常见索引非完整列表。方向与版本相关的线索需查对应 JEPGCG1默认与调参演进ZGC、Shenandoah等低延迟路线分代 ZGC 等性能CDS/AppCDS类数据共享、启动优化JIT/AOT部分路线已调整或移除以发布说明为准观测JFR默认可用范围、jcmd子命令扩展向量/NativeVector API孵化→演进、Foreign Function MemoryFFM替代 JNI 的方向生产变更应同时阅读Release Notes中的JDK 行为变更与JDK 18 UTF-8 默认等平台级条目。按 LTS 锚点的特性聚类便于对照「从上一 LTS 升到下一 LTS」大致会跨过哪些能力升级路径可重点关注的能力方向8 → 11模块可见性、var、新 HTTP 客户端、字符串/API 清理、GC 与容器感知等运维向变化11 → 17Record、文本块、密封类、模式匹配雏形、FFM 路线、内部 API 强封装与依赖迁移17 → 21虚拟线程与并发编程模型、GC/JVM 持续改进、语言模式匹配与集合工厂等继续完善选型与升级建议场景建议新建长期维护服务优先当前最新 LTS编写时常见为21并以官方路线图确认下一 LTS。试用语言/JVM 前沿可选用当前非 LTS但需接受短支持周期与行为微调。滞留 JDK 8至少评估11的安全与协议支持若条件允许直接对齐17 或 21可减少多次迁移成本。库与框架升级前核对Spring / Jakarta / 字节码库等对字节码版本与模块的要求。升级检查清单工程向步骤检查项1目标LTS与OpenJDK 发行版镜像、支持年限、许可证2字节码级别构建source/target或--release与运行 JDK 的关系3依赖jar是否访问 JDK 内部 API是否需替换为受支持 API4反射 / 注入框架是否需--add-opens能否通过升级框架版本消除5** Jakarta EE** 命名空间与Spring Boot主版本矩阵6CI并行保留旧 LTS 跑回归直至全量切换7观测JFR、GC 日志、HeapDump 在新 GC 下的行为差异参考链接OpenJDK 各版本发布公告https://openjdk.org/projects/jdk/Oracle Java SE 支持路线图https://www.oracle.com/java/technologies/java-se-support-roadmap.htmlJEP 索引https://openjdk.org/jeps/0本文仅作纲要式梳理实施升级请以目标 JDK 的Migration Guide与依赖项兼容性矩阵为准。

更多文章