Skip to main content

Java JEP 与版本变化

资料来源以 OpenJDK JDK Project 页面和 JEP 页面为主。Java 5–7 主要按 JSR/项目整理;JDK 8 起按代表性 JEP 整理;JDK 10 起列出该版本项目页 Features 中的全部 JEP。

JEP 状态说明

状态含义使用建议
正式Delivered/Standard/无预览标记可作为正式能力使用
预览Preview,可能多轮预览需要 --enable-preview,API/语法可能变化
孵化Incubator,通常在 jdk.incubator.* 模块API 不稳定,适合试用和反馈
实验Experimental可能需要显式参数开启,不保证长期兼容
废弃Deprecated 或 for Removal迁移预警,不应在新代码依赖
移除/禁用Remove 或 Permanently Disable升级时必须确认依赖是否已消除
迁移预告Prepare/Warn 类 JEP表示未来限制会加强,应提前迁移

总览

JavaReleaseLTS核心变化
52004-09-30J2SE 5.0 Tiger。泛型、注解、枚举、自动装箱、增强 for、可变参数、静态导入、JUC。
62006-12-11Java SE 6 Mustang。JSR 223 脚本、JSR 199 Compiler API、JSR 269 注解处理、JDBC 4、JAX-WS/JAXB、监控工具增强。
72011-07-28Java SE 7 Dolphin。Project Coin、NIO.2、Fork/Join、invokedynamic、try-with-resources、switch string、multi-catch。
82014-03-18LTSLambda 与 Stream 时代开始。JEP 机制在 JDK 8 已覆盖大量平台工作,但 Java 8 的核心是 JSR 335 Lambda、JSR 310 Date Time、Nashorn、PermGen 移除和集合并行处理。
92017-09-21模块化 JDK 的大版本。核心是 JPMS、jlink、jshell、集合工厂、Flow、G1 默认、内部 API 封装和多版本 JAR。
102018-03-20半年节奏的第一个版本。语言层是 var,本身也完成 JDK 仓库、GC 接口、AppCDS 和版本号模型整理。
112018-09-25LTSJava 8 后第一个 LTS。HTTP Client 标准化,Java EE/CORBA 移除,Flight Recorder 开源,ZGC/Epsilon 进入实验。
122019-03-19小版本中引入 Switch Expressions 预览,默认 CDS 归档和 G1 改进,Shenandoah 首次实验进入。
132019-09-17继续预览 switch 和 text blocks,并增强 CDS、ZGC 和旧 Socket API 实现。
142020-03-17Switch Expressions 转正,Records、instanceof 模式匹配、Text Blocks 继续预览,CMS 与 Pack200 移除。
152020-09-15Text Blocks、ZGC、Shenandoah 转正,Nashorn/Solaris/SPARC 移除,Sealed Classes 首次预览。
162021-03-16Records 和 instanceof 模式匹配转正,jpackage 转正,JDK 开发迁到 Git/GitHub,内部 API 默认强封装。
172021-09-14LTSLTS。Sealed Classes 转正,JDK 内部强封装正式推进,Security Manager/Applet/RMI Activation 进入移除阶段。
182022-03-22UTF-8 成为默认字符集,简单 Web 服务器和 Javadoc 代码片段加入,Finalization 开始废弃。
192022-09-20Loom/Panama 关键能力进入预览,虚拟线程首次预览,结构化并发首次孵化。
202023-03-21延续 Java 19 的预览和孵化能力,Scoped Values 首次孵化。
212023-09-19LTSLTS。虚拟线程、Record Patterns、switch 模式匹配转正,Sequenced Collections 加入,Generational ZGC 可用。
222024-03-19FFM、未命名变量和多文件源码启动转正,Class-File API 和 Stream Gatherers 首次预览。
232024-09-17Markdown Javadoc、分代 ZGC 默认进入,模块导入和原始类型模式预览,Unsafe 内存方法开始移除路线。
242025-03-18Class-File API 和 Stream Gatherers 转正,Security Manager 永久禁用,虚拟线程同步 pinning 问题修复,AOT 启动链路开始落地。
252025-09LTSLTS。Scoped Values、模块导入、紧凑源文件、灵活构造函数体、KDF、紧凑对象头和分代 Shenandoah 转正。
262026-03-17非 LTS。HTTP/3、AOT 对象缓存、G1 吞吐优化、Applet API 移除,语言预览继续推进。

Java 5

  • Release: 2004-09-30
  • 核心总结:J2SE 5.0 Tiger。泛型、注解、枚举、自动装箱、增强 for、可变参数、静态导入、JUC。

语言

  • Generics:编译期类型安全,减少集合取值时的强制类型转换。
  • Annotations:为语言、编译器、框架提供标准元数据机制。
  • Enums:类型安全枚举,支持方法、字段和接口实现。
  • Autoboxing/Unboxing:原始类型与包装类型自动转换。
  • Varargs:可变参数方法。
  • Enhanced for-loop:增强 for 循环。
  • Static Import:静态导入。

核心库

  • java.util.concurrent:Executor、Future、BlockingQueue、ConcurrentHashMap、Locks、Atomics 等并发基础设施。
  • Scanner、Formatter、Queue、Deque 等集合与文本处理增强。
  • Instrumentation API、Management API 增强,便于监控和工具集成。

总结

  • Java 5 是现代 Java 的起点:泛型、注解、枚举、JUC 直接影响后续所有主流框架。

Java 6

  • Release: 2006-12-11
  • 核心总结:Java SE 6 Mustang。JSR 223 脚本、JSR 199 Compiler API、JSR 269 注解处理、JDBC 4、JAX-WS/JAXB、监控工具增强。

语言

  • 语言本身变化较少,主要是平台、工具和库完善。

核心库/规范

  • JSR 223 Scripting:标准脚本引擎 API,默认集成 Rhino JavaScript。
  • JSR 199 Compiler API:程序内调用 javac。
  • JSR 269 Pluggable Annotation Processing:标准注解处理器 API,替代 apt 方向。
  • JDBC 4.0:驱动自动加载、SQLException 层次增强、XML 支持。
  • JAX-WS 2.0 / JAXB 2.0:Web Services 和 XML Binding 集成。

工具/运行时

  • JConsole、VisualVM、诊断和监控能力增强。
  • 同步、锁优化、启动和运行时性能改进。

总结

  • Java 6 是企业应用的稳定平台版本,重点不是新语法,而是工具链、Web Services、编译器 API 和性能。

Java 7

  • Release: 2011-07-28
  • 核心总结:Java SE 7 Dolphin。Project Coin、NIO.2、Fork/Join、invokedynamic、try-with-resources、switch string、multi-catch。

语言 / Project Coin

  • switch on String。
  • try-with-resources 与 AutoCloseable。
  • Diamond operator。
  • multi-catch 与更精确的 rethrow。
  • 数字字面量下划线和二进制字面量。

核心库/虚拟机

  • NIO.2:Path、Files、WatchService、异步文件通道、文件属性 API。
  • Fork/Join Framework:RecursiveTask/RecursiveAction 与 ForkJoinPool。
  • invokedynamic:动态语言支持,也是后续 Lambda 实现的重要基础。
  • Objects、try-with-resources 相关 AutoCloseable 等基础 API。

总结

  • Java 7 是 Java 8 前的铺垫版本:Project Coin 改善语法,NIO.2 和 Fork/Join 补齐库能力,invokedynamic 为 JVM 语言生态打开空间。

Java 8

  • Release: 2014-03-18
  • LTS
  • 核心总结:Lambda 与 Stream 时代开始。JEP 机制在 JDK 8 已覆盖大量平台工作,但 Java 8 的核心是 JSR 335 Lambda、JSR 310 Date Time、Nashorn、PermGen 移除和集合并行处理。
  • OpenJDK: https://openjdk.org/projects/jdk8/features

升级关注

  • 关注 Lambda/Stream 对调试栈和性能模型的影响。
  • PermGen 移除后,旧的 PermGen 参数需要迁移到 Metaspace 参数。

JEPs

JEP状态分类标题中文描述
JEP 101正式库/APIGeneralized Target-Type Inference增强泛型目标类型推断,让方法调用和菱形语法更自然。
JEP 104正式库/APIAnnotations on Java Types支持类型使用位置注解,是 Checker Framework 等静态分析的基础。
JEP 107正式库/APIBulk Data Operations for Collections集合批量数据操作,支撑 Stream 风格处理。
JEP 109正式语言Enhance Core Libraries with Lambda核心库适配 Lambda,例如集合、Map、并发工具等 API 增强。
JEP 118正式库/APIAccess to Parameter Names at Runtime可在运行时读取方法参数名,需编译时保留参数元数据。
JEP 120正式库/APIRepeating Annotations允许同一种注解在同一位置重复出现。
JEP 122移除/禁用库/APIRemove the Permanent Generation移除 PermGen,改用 Metaspace。
JEP 126正式语言Lambda Expressions & Virtual Extension MethodsLambda 表达式和接口默认方法,是 Java 8 最核心语言变化。
JEP 135正式库/APIBase64 Encoding & Decoding标准库内置 Base64 编解码。
JEP 150正式库/APIDate & Time API引入 java.time,替代 Date、Calendar 的主要使用场景。
JEP 155正式库/APIConcurrency UpdatesCompletableFuture、StampedLock、并发集合等增强。
JEP 174正式工具/平台Nashorn JavaScript Engine引入 Nashorn JS 引擎,后续 Java 15 移除。
JEP 180正式库/APIHandle Frequent HashMap Collisions with Balanced TreesHashMap 碰撞严重时桶内转红黑树,降低退化风险。

Java 9

  • Release: 2017-09-21
  • 核心总结:模块化 JDK 的大版本。核心是 JPMS、jlink、jshell、集合工厂、Flow、G1 默认、内部 API 封装和多版本 JAR。
  • OpenJDK: https://openjdk.org/projects/jdk9/

升级关注

  • 模块系统会暴露 split package、非法反射访问和内部 API 依赖问题。
  • 使用 jlink 可显著缩小运行时镜像,但需要先梳理模块依赖。

JEPs

JEP状态分类标题中文描述
JEP 102正式库/APIProcess API Updates增强 Process API,可获取 PID、父子进程和进程信息。
JEP 110正式库/APIHTTP 2 Client孵化 HTTP/2 与 WebSocket 客户端,后续 Java 11 标准化。
JEP 158正式库/APIUnified JVM Logging统一 JVM 日志,使用 -Xlog。
JEP 193正式库/APIVariable HandlesVarHandle 提供比 Unsafe 更规范的变量和内存访问原语。
JEP 200正式库/APIThe Modular JDKJDK 自身模块化。
JEP 220正式库/APIModular Run-Time Images新的模块化运行时镜像布局,取消传统 rt.jar。
JEP 222正式库/APIjshell: The Java ShellJava REPL 工具。
JEP 223正式库/APINew Version-String Scheme新的版本字符串方案。
JEP 238正式库/APIMulti-Release JAR Files一个 JAR 内可放多个 Java 版本实现。
JEP 247正式库/APICompile for Older Platform Versionsjavac --release,用目标平台 API 编译,替代 source/target/bootclasspath 组合。
JEP 248正式GC/RuntimeMake G1 the Default Garbage CollectorG1 成为默认 GC。
JEP 254正式库/APICompact StringsString 内部用 byte 数组加编码标记,降低 Latin-1 文本内存占用。
JEP 260正式库/APIEncapsulate Most Internal APIs封装大部分 JDK 内部 API。
JEP 261正式库/APIModule SystemJPMS 模块系统。
JEP 266正式库/APIMore Concurrency UpdatesFlow Reactive Streams 接口、CompletableFuture 等增强。
JEP 269正式库/APIConvenience Factory Methods for CollectionsList.of、Set.of、Map.of 等不可变集合工厂。
JEP 282正式工具/平台jlink: The Java Linker按模块裁剪生成定制运行时镜像。
JEP 290正式库/APIFilter Incoming Serialization Data反序列化过滤器,降低反序列化攻击面。

Java 10

  • Release: 2018-03-20
  • 核心总结:半年节奏的第一个版本。语言层是 var,本身也完成 JDK 仓库、GC 接口、AppCDS 和版本号模型整理。
  • OpenJDK: https://openjdk.org/projects/jdk/10/

升级关注

  • var 只适合局部变量,公共 API 中不要用它表达设计意图。
  • javah 已移除,JNI 头文件生成使用 javac -h。

JEPs

JEP状态分类标题中文描述
JEP 286正式语言Local-Variable Type Inference局部变量类型推断 var,只影响局部变量声明。
JEP 296正式库/APIConsolidate the JDK Forest into a Single Repository多个 Mercurial forest 合并为单仓库,降低开发复杂度。
JEP 304正式GC/RuntimeGarbage-Collector Interface抽象 GC 接口,让 HotSpot 更容易接入和剥离 GC 实现。
JEP 307正式GC/RuntimeParallel Full GC for G1G1 Full GC 并行化,降低最坏停顿。
JEP 310正式GC/RuntimeApplication Class-Data SharingAppCDS 支持应用类共享归档,改善启动和内存。
JEP 312正式GC/RuntimeThread-Local Handshakes可只让单个线程执行 VM 回调,减少全局 safepoint 需求。
JEP 313移除/禁用库/APIRemove the Native-Header Generation Tool (javah)移除 javah,改用 javac -h。
JEP 314正式库/APIAdditional Unicode Language-Tag Extensions支持更多 Unicode locale 扩展。
JEP 316正式库/APIHeap Allocation on Alternative Memory Devices允许把堆分配到 NV-DIMM 等替代内存设备。
JEP 317实验库/APIExperimental Java-Based JIT Compiler实验性 Graal Java JIT 编译器。
JEP 319正式安全/加密Root CertificatesOpenJDK 提供默认根证书集合。
JEP 322正式库/APITime-Based Release Versioning时间驱动发布版本号模型。

Java 11

  • Release: 2018-09-25
  • LTS
  • 核心总结:Java 8 后第一个 LTS。HTTP Client 标准化,Java EE/CORBA 移除,Flight Recorder 开源,ZGC/Epsilon 进入实验。
  • OpenJDK: https://openjdk.org/projects/jdk/11/

升级关注

  • Java EE/CORBA 模块移除是从 Java 8 升级的最大断点之一,需要显式引入 JAXB/JAX-WS 等依赖。
  • HTTP Client、JFR、TLS 1.3 是长期可用能力。

JEPs

JEP状态分类标题中文描述
JEP 181正式库/APINest-Based Access Control支持 nestmate 访问控制,嵌套类可直接访问彼此私有成员。
JEP 309正式工具/平台Dynamic Class-File ConstantsCONSTANT_Dynamic,支持动态计算类文件常量。
JEP 315正式库/APIImprove Aarch64 Intrinsics优化 AArch64 字符串、数组和数学 intrinsics。
JEP 318正式GC/RuntimeEpsilon: A No-Op Garbage Collector不回收内存的 GC,适合测试、短生命周期任务和性能基线。
JEP 320移除/禁用库/APIRemove the Java EE and CORBA Modules移除 Java EE 与 CORBA 模块和相关工具。
JEP 321正式库/APIHTTP Client (Standard)java.net.http 标准 HTTP/2 和 WebSocket 客户端。
JEP 323正式语言Local-Variable Syntax for Lambda ParametersLambda 参数允许使用 var,便于添加注解。
JEP 324正式安全/加密Key Agreement with Curve25519 and Curve448支持 X25519/X448 密钥协商。
JEP 327正式库/APIUnicode 10升级 Unicode 10。
JEP 328正式工具/平台Flight RecorderJFR 开源并进入 OpenJDK。
JEP 329正式安全/加密ChaCha20 and Poly1305 Cryptographic Algorithms支持 ChaCha20-Poly1305 加密算法。
JEP 330正式工具/平台Launch Single-File Source-Code Programsjava 可直接运行单文件源码。
JEP 331正式库/APILow-Overhead Heap Profiling低开销堆分配采样分析。
JEP 332正式安全/加密Transport Layer Security (TLS) 1.3支持 TLS 1.3。
JEP 333实验GC/RuntimeZGC: A Scalable Low-Latency Garbage Collector (Experimental)实验性 ZGC,目标大堆低延迟。
JEP 335废弃工具/平台Deprecate the Nashorn JavaScript Engine废弃 Nashorn JS 引擎。
JEP 336废弃工具/平台Deprecate the Pack200 Tools and API废弃 Pack200 工具和 API。

Java 12

  • Release: 2019-03-19
  • 核心总结:小版本中引入 Switch Expressions 预览,默认 CDS 归档和 G1 改进,Shenandoah 首次实验进入。
  • OpenJDK: https://openjdk.org/projects/jdk/12/

升级关注

  • Switch Expressions 仍是预览,生产代码需谨慎依赖。

JEPs

JEP状态分类标题中文描述
JEP 189实验GC/RuntimeShenandoah: A Low-Pause-Time Garbage Collector (Experimental)实验性 Shenandoah 低停顿 GC。
JEP 230正式工具/平台Microbenchmark SuiteJDK 源码内置 JMH 微基准套件。
JEP 325预览语言Switch Expressions (Preview)switch 可作为表达式并返回值,预览。
JEP 334正式库/APIJVM Constants API标准化描述 class-file 和运行时常量的 API。
JEP 340正式工具/平台One AArch64 Port, Not Two保留一个 AArch64 port,移除重复实现。
JEP 341正式GC/RuntimeDefault CDS Archives默认生成 CDS 归档,改善启动时间。
JEP 344正式GC/RuntimeAbortable Mixed Collections for G1G1 mixed collection 可中止,降低超预算停顿。
JEP 346正式GC/RuntimePromptly Return Unused Committed Memory from G1G1 更快把未用 committed 内存还给 OS。

Java 13

升级关注

  • Text Blocks 仍是预览,语法最终在 Java 15 转正。

JEPs

JEP状态分类标题中文描述
JEP 350正式GC/RuntimeDynamic CDS Archives应用退出时可动态归档类数据,简化 AppCDS 使用。
JEP 351正式GC/RuntimeZGC: Uncommit Unused MemoryZGC 可把未用内存归还给 OS。
JEP 353正式库/APIReimplement the Legacy Socket API重写旧 Socket API 实现,降低维护成本并适配新线程模型。
JEP 354预览语言Switch Expressions (Preview)switch 表达式继续预览。
JEP 355预览语言Text Blocks (Preview)文本块预览,简化多行字符串。

Java 14

  • Release: 2020-03-17
  • 核心总结:Switch Expressions 转正,Records、instanceof 模式匹配、Text Blocks 继续预览,CMS 与 Pack200 移除。
  • OpenJDK: https://openjdk.org/projects/jdk/14/

升级关注

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

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 早期能力。

Java 15

  • Release: 2020-09-15
  • 核心总结:Text Blocks、ZGC、Shenandoah 转正,Nashorn/Solaris/SPARC 移除,Sealed Classes 首次预览。
  • OpenJDK: https://openjdk.org/projects/jdk/15/

升级关注

  • Nashorn 已移除,脚本场景迁移到 GraalJS 或其他引擎。
  • ZGC 和 Shenandoah 转正,但仍需按业务延迟/吞吐目标压测。

JEPs

JEP状态分类标题中文描述
JEP 339正式安全/加密Edwards-Curve Digital Signature Algorithm (EdDSA)支持 EdDSA 数字签名。
JEP 360预览语言Sealed Classes (Preview)密封类预览,限制可继承层次。
JEP 371正式库/APIHidden Classes隐藏类,支持框架生成不可发现类。
JEP 372移除/禁用工具/平台Remove the Nashorn JavaScript Engine移除 Nashorn JS 引擎。
JEP 373正式库/APIReimplement the Legacy DatagramSocket API重写旧 DatagramSocket API。
JEP 374废弃GC/RuntimeDisable and Deprecate Biased Locking默认禁用并废弃偏向锁。
JEP 375第二次预览语言Pattern Matching for instanceof (Second Preview)instanceof 模式匹配第二次预览。
JEP 377正式GC/RuntimeZGC: A Scalable Low-Latency Garbage CollectorZGC 转正。
JEP 378正式语言Text Blocks文本块转正。
JEP 379正式GC/RuntimeShenandoah: A Low-Pause-Time Garbage CollectorShenandoah 转正。
JEP 381移除/禁用工具/平台Remove the Solaris and SPARC Ports移除 Solaris 和 SPARC port。
JEP 383第二次孵化Panama/向量/原生Foreign-Memory Access API (Second Incubator)外部内存访问 API 第二次孵化。
JEP 384第二次预览语言Records (Second Preview)Records 第二次预览。
JEP 385废弃库/APIDeprecate RMI Activation for Removal废弃 RMI Activation。

Java 16

  • Release: 2021-03-16
  • 核心总结:Records 和 instanceof 模式匹配转正,jpackage 转正,JDK 开发迁到 Git/GitHub,内部 API 默认强封装。
  • OpenJDK: https://openjdk.org/projects/jdk/16/

升级关注

  • Records、instanceof pattern 已可正式使用。
  • 默认强封装内部 API,非法反射访问需要迁移或加显式 --add-opens。

JEPs

JEP状态分类标题中文描述
JEP 338孵化Panama/向量/原生Vector API (Incubator)Vector API 首次孵化,提供可移植 SIMD 表达。
JEP 347正式库/APIEnable C++14 Language FeaturesJDK native 代码允许使用 C++14。
JEP 357正式工具/平台Migrate from Mercurial to GitJDK 源码从 Mercurial 迁到 Git。
JEP 369正式工具/平台Migrate to GitHubJDK 开发迁移到 GitHub。
JEP 376正式GC/RuntimeZGC: Concurrent Thread-Stack ProcessingZGC 并发处理线程栈,进一步降低停顿。
JEP 380正式Panama/向量/原生Unix-Domain Socket ChannelsNIO 支持 Unix domain socket。
JEP 386正式工具/平台Alpine Linux Port支持 Alpine Linux musl port。
JEP 387正式GC/RuntimeElastic MetaspaceMetaspace 更弹性地归还内存。
JEP 388正式工具/平台Windows/AArch64 Port支持 Windows AArch64。
JEP 389孵化Panama/向量/原生Foreign Linker API (Incubator)外部函数链接 API 孵化。
JEP 390正式库/APIWarnings for Value-Based Classes对 value-based class 的不当同步等用法发出警告。
JEP 392正式工具/平台Packaging Tooljpackage 转正。
JEP 393第三次孵化Panama/向量/原生Foreign-Memory Access API (Third Incubator)外部内存访问 API 第三次孵化。
JEP 394正式语言Pattern Matching for instanceofinstanceof 模式匹配转正。
JEP 395正式语言RecordsRecords 转正。
JEP 396正式库/APIStrongly Encapsulate JDK Internals by Default默认强封装 JDK 内部 API,sun.misc.Unsafe 等关键 API 例外。
JEP 397第二次预览语言Sealed Classes (Second Preview)密封类第二次预览。

Java 17

  • Release: 2021-09-14
  • LTS
  • 核心总结:LTS。Sealed Classes 转正,JDK 内部强封装正式推进,Security Manager/Applet/RMI Activation 进入移除阶段。
  • OpenJDK: https://openjdk.org/projects/jdk/17/

升级关注

  • LTS 升级重点是内部 API 强封装、Security Manager 废弃、RMI Activation/AOT/Graal JIT 移除。
  • Sealed Classes、增强 PRNG、macOS/AArch64 是长期稳定能力。

JEPs

JEP状态分类标题中文描述
JEP 306正式库/APIRestore Always-Strict Floating-Point Semantics恢复始终严格浮点语义。
JEP 356正式库/APIEnhanced Pseudo-Random Number Generators增强伪随机数生成器 API。
JEP 382正式工具/平台New macOS Rendering PipelinemacOS 使用 Metal 渲染管线。
JEP 391正式工具/平台macOS/AArch64 Port支持 macOS Apple Silicon。
JEP 398废弃库/APIDeprecate the Applet API for Removal废弃 Applet API,准备移除。
JEP 403正式库/APIStrongly Encapsulate JDK Internals强封装 JDK 内部 API。
JEP 406预览语言Pattern Matching for switch (Preview)switch 模式匹配预览。
JEP 407移除/禁用库/APIRemove RMI Activation移除 RMI Activation。
JEP 409正式语言Sealed Classes密封类转正。
JEP 410移除/禁用GC/RuntimeRemove the Experimental AOT and JIT Compiler移除实验 AOT 和 Graal JIT 编译器。
JEP 411废弃安全/加密Deprecate the Security Manager for Removal废弃 Security Manager,准备移除。
JEP 412孵化Panama/向量/原生Foreign Function & Memory API (Incubator)外部函数和内存 API 孵化。
JEP 414第二次孵化Panama/向量/原生Vector API (Second Incubator)Vector API 第二次孵化。
JEP 415正式安全/加密Context-Specific Deserialization Filters上下文相关反序列化过滤器。

Java 18

  • Release: 2022-03-22
  • 核心总结:UTF-8 成为默认字符集,简单 Web 服务器和 Javadoc 代码片段加入,Finalization 开始废弃。
  • OpenJDK: https://openjdk.org/projects/jdk/18/

升级关注

  • 默认 UTF-8 可能改变依赖系统默认编码的旧程序行为。
  • Finalization 已进入移除路线,新代码避免依赖 finalize。

JEPs

JEP状态分类标题中文描述
JEP 400正式库/APIUTF-8 by Default标准 Java API 默认字符集改为 UTF-8。
JEP 408正式工具/平台Simple Web Serverjdk.httpserver 提供命令行简单静态 Web 服务器。
JEP 413正式库/APICode Snippets in Java API DocumentationJavadoc 支持更好的代码片段。
JEP 416正式库/APIReimplement Core Reflection with Method Handles用 Method Handles 重实现核心反射,降低维护成本。
JEP 417第三次孵化Panama/向量/原生Vector API (Third Incubator)Vector API 第三次孵化。
JEP 418正式库/APIInternet-Address Resolution SPI互联网地址解析 SPI。
JEP 419第二次孵化Panama/向量/原生Foreign Function & Memory API (Second Incubator)FFM API 第二次孵化。
JEP 420第二次预览语言Pattern Matching for switch (Second Preview)switch 模式匹配第二次预览。
JEP 421废弃库/APIDeprecate Finalization for Removal废弃 Finalization,准备移除。

Java 19

升级关注

  • Virtual Threads/Structured Concurrency/FFM 仍是预览或孵化。

JEPs

JEP状态分类标题中文描述
JEP 405预览语言Record Patterns (Preview)Record 模式预览,支持解构记录。
JEP 422正式工具/平台Linux/RISC-V Port支持 Linux RISC-V。
JEP 424预览Panama/向量/原生Foreign Function & Memory API (Preview)FFM API 进入预览。
JEP 425预览并发/LoomVirtual Threads (Preview)虚拟线程首次预览。
JEP 426第四次孵化Panama/向量/原生Vector API (Fourth Incubator)Vector API 第四次孵化。
JEP 427第三次预览语言Pattern Matching for switch (Third Preview)switch 模式匹配第三次预览。
JEP 428孵化并发/LoomStructured Concurrency (Incubator)结构化并发首次孵化。

Java 20

升级关注

  • 主要是预览/孵化迭代,适合跟踪 Loom/Panama API 变化。

JEPs

JEP状态分类标题中文描述
JEP 429孵化并发/LoomScoped Values (Incubator)Scoped Values 首次孵化,作为 ThreadLocal 的结构化替代。
JEP 432第二次预览语言Record Patterns (Second Preview)Record 模式第二次预览。
JEP 433第四次预览语言Pattern Matching for switch (Fourth Preview)switch 模式匹配第四次预览。
JEP 434第二次预览Panama/向量/原生Foreign Function & Memory API (Second Preview)FFM API 第二次预览。
JEP 436第二次预览并发/LoomVirtual Threads (Second Preview)虚拟线程第二次预览。
JEP 437第二次孵化并发/LoomStructured Concurrency (Second Incubator)结构化并发第二次孵化。
JEP 438第五次孵化Panama/向量/原生Vector API (Fifth Incubator)Vector API 第五次孵化。

Java 21

  • Release: 2023-09-19
  • LTS
  • 核心总结:LTS。虚拟线程、Record Patterns、switch 模式匹配转正,Sequenced Collections 加入,Generational ZGC 可用。
  • OpenJDK: https://openjdk.org/projects/jdk/21/

升级关注

  • LTS。Virtual Threads 已转正,但 pinning、ThreadLocal、连接池容量等仍需重新评估。
  • String Templates 后续路线变化,避免过早固化。

JEPs

JEP状态分类标题中文描述
JEP 430预览语言String Templates (Preview)字符串模板预览,后续路线发生变化,使用前需关注状态。
JEP 431正式库/APISequenced Collections统一有序集合接口。
JEP 439正式GC/RuntimeGenerational ZGC分代 ZGC。
JEP 440正式语言Record PatternsRecord 模式转正。
JEP 441正式语言Pattern Matching for switchswitch 模式匹配转正。
JEP 442第三次预览Panama/向量/原生Foreign Function & Memory API (Third Preview)FFM API 第三次预览。
JEP 443预览语言Unnamed Patterns and Variables (Preview)未命名模式和变量预览,用 _ 表示不用的值。
JEP 444正式并发/LoomVirtual Threads虚拟线程转正。
JEP 445预览语言Unnamed Classes and Instance Main Methods (Preview)未命名类和实例 main 方法预览,降低入门样板。
JEP 446预览并发/LoomScoped Values (Preview)Scoped Values 进入预览。
JEP 448第六次孵化Panama/向量/原生Vector API (Sixth Incubator)Vector API 第六次孵化。
JEP 449废弃工具/平台Deprecate the Windows 32-bit x86 Port for Removal废弃 Windows 32-bit x86 port。
JEP 451迁移预告库/APIPrepare to Disallow the Dynamic Loading of Agents准备限制运行时动态加载 Agent。
JEP 452正式库/APIKey Encapsulation Mechanism APIKEM 密钥封装机制 API。
JEP 453预览并发/LoomStructured Concurrency (Preview)结构化并发进入预览。

Java 22

  • Release: 2024-03-19
  • 核心总结:FFM、未命名变量和多文件源码启动转正,Class-File API 和 Stream Gatherers 首次预览。
  • OpenJDK: https://openjdk.org/projects/jdk/22/

升级关注

  • FFM API 转正,可逐步替代 JNI/JNA 场景。
  • Class-File API、Stream Gatherers 仍为预览。

JEPs

JEP状态分类标题中文描述
JEP 423正式GC/RuntimeRegion Pinning for G1G1 区域固定,降低 JNI 临界区导致的停顿。
JEP 447预览语言Statements before super(...) (Preview)构造函数 super 前语句预览。
JEP 454正式Panama/向量/原生Foreign Function & Memory APIFFM API 转正。
JEP 456正式语言Unnamed Variables & Patterns未命名变量和模式转正。
JEP 457预览工具/平台Class-File API (Preview)标准 Class-File API 预览。
JEP 458正式工具/平台Launch Multi-File Source-Code Programsjava 直接启动多文件源码程序。
JEP 459第二次预览语言String Templates (Second Preview)字符串模板第二次预览。
JEP 460第七次孵化Panama/向量/原生Vector API (Seventh Incubator)Vector API 第七次孵化。
JEP 461预览库/APIStream Gatherers (Preview)Stream Gatherers 预览,允许自定义中间操作。
JEP 462第二次预览并发/LoomStructured Concurrency (Second Preview)结构化并发第二次预览。
JEP 463第二次预览库/APIImplicitly Declared Classes and Instance Main Methods (Second Preview)隐式声明类和实例 main 第二次预览。
JEP 464第二次预览并发/LoomScoped Values (Second Preview)Scoped Values 第二次预览。

Java 23

  • Release: 2024-09-17
  • 核心总结:Markdown Javadoc、分代 ZGC 默认进入,模块导入和原始类型模式预览,Unsafe 内存方法开始移除路线。
  • OpenJDK: https://openjdk.org/projects/jdk/23/

升级关注

  • Unsafe 内存访问方法进入移除路线,应迁移到 VarHandle/FFM。

JEPs

JEP状态分类标题中文描述
JEP 455预览语言Primitive Types in Patterns, instanceof, and switch (Preview)模式匹配支持原始类型预览。
JEP 466第二次预览工具/平台Class-File API (Second Preview)Class-File API 第二次预览。
JEP 467正式工具/平台Markdown Documentation CommentsJavadoc 注释支持 Markdown。
JEP 469第八次孵化Panama/向量/原生Vector API (Eighth Incubator)Vector API 第八次孵化。
JEP 473第二次预览库/APIStream Gatherers (Second Preview)Stream Gatherers 第二次预览。
JEP 471废弃Panama/向量/原生Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal废弃 sun.misc.Unsafe 内存访问方法。
JEP 474正式GC/RuntimeZGC: Generational Mode by DefaultZGC 默认使用分代模式。
JEP 476预览语言Module Import Declarations (Preview)模块导入声明预览。
JEP 477第三次预览库/APIImplicitly Declared Classes and Instance Main Methods (Third Preview)隐式声明类和实例 main 第三次预览。
JEP 480第三次预览并发/LoomStructured Concurrency (Third Preview)结构化并发第三次预览。
JEP 481第三次预览并发/LoomScoped Values (Third Preview)Scoped Values 第三次预览。
JEP 482第二次预览语言Flexible Constructor Bodies (Second Preview)灵活构造函数体第二次预览。

Java 24

  • Release: 2025-03-18
  • 核心总结:Class-File API 和 Stream Gatherers 转正,Security Manager 永久禁用,虚拟线程同步 pinning 问题修复,AOT 启动链路开始落地。
  • OpenJDK: https://openjdk.org/projects/jdk/24/

升级关注

  • Security Manager 永久禁用;依赖 Security Manager 沙箱模型的系统必须调整。
  • 虚拟线程 synchronized pinning 问题改善,适合重新评估虚拟线程阻塞场景。

JEPs

JEP状态分类标题中文描述
JEP 404实验GC/RuntimeGenerational Shenandoah (Experimental)分代 Shenandoah 实验。
JEP 450实验GC/RuntimeCompact Object Headers (Experimental)紧凑对象头实验,目标降低对象内存开销。
JEP 472迁移预告Panama/向量/原生Prepare to Restrict the Use of JNI准备限制 JNI 使用,推动显式授权和 FFM 迁移。
JEP 475正式GC/RuntimeLate Barrier Expansion for G1G1 屏障后期展开,改善编译和性能。
JEP 478预览Panama/向量/原生Key Derivation Function API (Preview)KDF API 预览。
JEP 479移除/禁用工具/平台Remove the Windows 32-bit x86 Port移除 Windows 32-bit x86 port。
JEP 483正式库/APIAhead-of-Time Class Loading & LinkingAOT 类加载和链接,改善启动。
JEP 484正式工具/平台Class-File APIClass-File API 转正。
JEP 485正式库/APIStream GatherersStream Gatherers 转正。
JEP 486移除/禁用安全/加密Permanently Disable the Security Manager永久禁用 Security Manager。
JEP 487第四次预览并发/LoomScoped Values (Fourth Preview)Scoped Values 第四次预览。
JEP 488第二次预览语言Primitive Types in Patterns, instanceof, and switch (Second Preview)原始类型模式第二次预览。
JEP 489第九次孵化Panama/向量/原生Vector API (Ninth Incubator)Vector API 第九次孵化。
JEP 490移除/禁用GC/RuntimeZGC: Remove the Non-Generational ModeZGC 移除非分代模式。
JEP 491正式并发/LoomSynchronize Virtual Threads without Pinning虚拟线程在 synchronized 中不再 pin carrier thread。
JEP 492第三次预览语言Flexible Constructor Bodies (Third Preview)灵活构造函数体第三次预览。
JEP 493正式工具/平台Linking Run-Time Images without JMODs不依赖 JMOD 链接运行时镜像。
JEP 494第二次预览语言Module Import Declarations (Second Preview)模块导入声明第二次预览。
JEP 495第四次预览库/APISimple Source Files and Instance Main Methods (Fourth Preview)简单源文件和实例 main 第四次预览。
JEP 496正式安全/加密Quantum-Resistant Module-Lattice-Based Key Encapsulation MechanismML-KEM 后量子密钥封装。
JEP 497正式安全/加密Quantum-Resistant Module-Lattice-Based Digital Signature AlgorithmML-DSA 后量子数字签名。
JEP 498迁移预告Panama/向量/原生Warn upon Use of Memory-Access Methods in sun.misc.Unsafe使用 Unsafe 内存访问方法时发出警告。
JEP 499第四次预览并发/LoomStructured Concurrency (Fourth Preview)结构化并发第四次预览。
JEP 501废弃库/APIDeprecate the 32-bit x86 Port for Removal废弃 32-bit x86 port。

Java 25

  • Release: 2025-09
  • LTS
  • 核心总结:LTS。Scoped Values、模块导入、紧凑源文件、灵活构造函数体、KDF、紧凑对象头和分代 Shenandoah 转正。
  • OpenJDK: https://openjdk.org/projects/jdk/25/

升级关注

  • LTS。Scoped Values、紧凑源文件、模块导入、KDF、紧凑对象头等转正,但 Structured Concurrency 仍是预览。

JEPs

JEP状态分类标题中文描述
JEP 470预览安全/加密PEM Encodings of Cryptographic Objects (Preview)PEM 编码加密对象 API 预览。
JEP 502预览库/APIStable Values (Preview)Stable Values 预览,提供一次初始化后稳定读取的值容器。
JEP 503移除/禁用库/APIRemove the 32-bit x86 Port移除 32-bit x86 port。
JEP 505第五次预览并发/LoomStructured Concurrency (Fifth Preview)结构化并发第五次预览。
JEP 506正式并发/LoomScoped ValuesScoped Values 转正。
JEP 507第三次预览语言Primitive Types in Patterns, instanceof, and switch (Third Preview)原始类型模式第三次预览。
JEP 508第十次孵化Panama/向量/原生Vector API (Tenth Incubator)Vector API 第十次孵化。
JEP 509实验工具/平台JFR CPU-Time Profiling (Experimental)JFR CPU 时间 profiling 实验。
JEP 510正式Panama/向量/原生Key Derivation Function APIKDF API 转正。
JEP 511正式语言Module Import Declarations模块导入声明转正。
JEP 512正式语言Compact Source Files and Instance Main Methods紧凑源文件和实例 main 转正。
JEP 513正式语言Flexible Constructor Bodies灵活构造函数体转正。
JEP 514正式库/APIAhead-of-Time Command-Line ErgonomicsAOT 命令行体验改进。
JEP 515正式库/APIAhead-of-Time Method ProfilingAOT 方法 profiling。
JEP 518正式工具/平台JFR Cooperative SamplingJFR 协作式采样。
JEP 519正式GC/RuntimeCompact Object Headers紧凑对象头转正。
JEP 520正式工具/平台JFR Method Timing & TracingJFR 方法计时和追踪。
JEP 521正式GC/RuntimeGenerational Shenandoah分代 Shenandoah 转正。

Java 26

  • Release: 2026-03-17
  • 核心总结:非 LTS。HTTP/3、AOT 对象缓存、G1 吞吐优化、Applet API 移除,语言预览继续推进。
  • OpenJDK: https://openjdk.org/projects/jdk/26/

升级关注

  • Applet API 已移除;仍引用 java.applet / javax.swing.JApplet 的旧代码需要清理。
  • final 字段语义开始进入收紧路线,反射/Unsafe/序列化框架对 final 字段的写入能力需要关注后续兼容性。
  • HTTP Client 引入 HTTP/3 支持,可评估对高延迟/移动网络场景的收益。
  • Structured Concurrency、Lazy Constants、Primitive Types in Patterns 仍是预览;Vector API 仍是孵化。

JEPs

JEP状态分类标题中文描述
JEP 500迁移预告语言Prepare to Make Final Mean Final准备强化 final 字段语义,减少深反射等机制对 final 字段的随意修改。
JEP 504移除/禁用库/APIRemove the Applet API移除 Applet API,完成长期废弃路线。
JEP 516正式GC/RuntimeAhead-of-Time Object Caching with Any GCAOT 对象缓存扩展到任意 GC,改善启动与预热。
JEP 517正式库/APIHTTP/3 for the HTTP Client APIjava.net.http HTTP Client 支持 HTTP/3。
JEP 522正式GC/RuntimeG1 GC: Improve Throughput by Reducing Synchronization通过减少同步开销提升 G1 吞吐。
JEP 524第二次预览安全/加密PEM Encodings of Cryptographic Objects (Second Preview)PEM 编码加密对象 API 第二次预览。
JEP 525第六次预览并发/LoomStructured Concurrency (Sixth Preview)结构化并发第六次预览。
JEP 526第二次预览语言Lazy Constants (Second Preview)懒常量第二次预览,用于延迟计算并稳定发布常量值。
JEP 529第十一次孵化Panama/向量/原生Vector API (Eleventh Incubator)Vector API 第十一次孵化。
JEP 530第四次预览语言Primitive Types in Patterns, instanceof, and switch (Fourth Preview)原始类型模式、instanceofswitch 第四次预览。

参考