Java 9 到 Java 25:核心新特性全面介绍(2026 年 1 月视角)
Java 从 2017 年 Java 9 开始采用 6 个月一次 的快速迭代发布模式(每年的 3 月和 9 月各一个版本),其中 LTS(长期支持) 版本通常每两年出现一次:Java 11 (2018)、17 (2021)、21 (2023)、25 (2025 年 9 月) 是当前最新的 LTS。
下面按版本顺序整理每个版本 最重要、最常被实际使用 的特性(聚焦语言、核心库、JVM、工具),并标注是否为最终版 / 预览 / 已移除。
Java 9 (2017-09) — 模块系统时代开启
| JEP | 特性名称 | 状态 | 实际价值与使用场景 |
|---|---|---|---|
| 261 | 模块系统 (Project Jigsaw) | 正式 | 最大特性:module-info.java + exports / requires |
| 200 | 统一 JVM 日志系统 | 正式 | -Xlog 取代了杂乱的 GC/VM 日志选项 |
| 264 | G1 成为默认垃圾收集器 | 正式 | 取代 ParallelGC(企业默认升级点) |
| 282 | jlink — 自定义运行时镜像 | 正式 | 容器时代神器:极致瘦身镜像 |
| 295 | Ahead-of-Time 编译(实验) | 实验 | GraalVM 前身 |
一句话总结:Java 9 最核心的是模块化,但企业真正大量迁移是从 Java 11 开始。
Java 10–16(2018–2021) — 快速迭代期关键积累
| 版本 | 发布日期 | 核心特性(最实用) | LTS? |
|---|---|---|---|
| 10 | 2018-03 | var 局部变量类型推断(JEP 286) | 否 |
| 11 | 2018-09 | LTS + HTTP Client (标准化) + var 在 lambda 中可用 + 移除 Java EE / CORBA 模块 | 是 |
| 12 | 2019-03 | Switch 表达式(预览) | 否 |
| 13 | 2019-09 | Text Blocks(预览) | 否 |
| 14 | 2020-03 | Records(预览) + Pattern Matching for instanceof(预览) + Helpful NullPointerExceptions | 否 |
| 15 | 2020-09 | Text Blocks 正式 + Sealed Classes(预览) | 否 |
| 16 | 2021-03 | Records / Pattern Matching for instanceof 正式 + Elastic Metaspace | 否 |
关键跃迁:Java 14–16 奠定了现代 Java 语法基础(Records + var + Text Blocks + instanceof 模式匹配)。
Java 17 (2021-09) — 第二个长期主力 LTS
| JEP | 特性 | 状态 | 实际影响 |
|---|---|---|---|
| 356 | Records 正式 | 正式 | 数据载体类告别 boilerplate |
| 406 | Pattern Matching for switch(预览) | 预览 | switch 终于能解构 |
| 382 | New macOS Rendering Pipeline | 正式 | Apple Silicon 支持更好 |
| 391 | macOS/AArch64 Port | 正式 | 原生支持 M1/M2 |
| 403 | Strongly Encapsulate JDK Internals | 正式 | 非法反射访问警告 → 错误(迁移痛点) |
企业现状(2026 年):Java 17 仍然是大量中大型系统的生产主力。
Java 18–24(2022–2025) — 语法糖与 Loom 成熟期
| 版本 | 发布日期 | 重量级特性(最实用) | 备注 |
|---|---|---|---|
| 19 | 2022-09 | Virtual Threads(预览) + Structured Concurrency(预览) + Scoped Values(预览) | Loom 项目核心 |
| 21 | 2023-09 | LTS + Virtual Threads / Structured Concurrency / Scoped Values 正式 + Sequenced Collections + String Templates(预览) + Pattern Matching for switch 正式 | 当前最推荐 LTS |
| 22 | 2024-03 | Foreign Function & Memory API 正式 + Unnamed Variables & Patterns(预览) | Panama 项目成熟 |
| 23 | 2024-09 | Stream Gatherers + Module Import Declarations(预览) + Primitive Types in Patterns(预览) | — |
| 24 | 2025-03 | Stream Gatherers 正式 + Flexible Constructor Bodies(预览) + Compact Object Headers(预览) | — |
Java 25 (2025-09) — 当前最新 LTS(2026 年 1 月已发布 4 个月)
发布日期:2025 年 9 月 16 日
支持周期:至少到 2030 年 9 月(Premier Support),之后 Extended 阶段
最重要 / 最实用特性(已正式或接近成熟的):
| JEP | 特性名称 | 状态 | 实际价值与使用场景 |
|---|---|---|---|
| 506 | Scoped Values | 正式 | 虚拟线程上下文传递(替代 ThreadLocal 的现代方案) |
| 505 | Structured Concurrency | 第五预览 | 结构化并发(任务组管理、取消传播、错误聚合) |
| 507 | Primitive Types in Patterns, instanceof, switch | 第三预览 | 基本类型也能模式匹配(switch on int/float 等更强大) |
| 512 | Compact Source Files & Instance Main Methods | 正式 | 极简 main:void main() { ... } 即可,无需 class |
| 511 | Module Import Declarations | 正式 | import module java.base; 一次性导入整个模块 |
| 513 | Flexible Constructor Bodies | 预览 | 构造器中可在 super() 之前写代码(校验、计算) |
| 519 | Compact Object Headers | 预览/实验 | 对象头从 12–16 字节压缩到 8 字节(内存节省 10–20%) |
| 509 | JFR CPU-Time Profiling | 实验 | Linux 下 JFR 支持 CPU 时间采样(性能诊断神器) |
| 514/515 | Ahead-of-Time Command-Line Ergonomics / Method Profiling | 正式 | AOT 启动更快、预热更智能 |
| 510 | Key Derivation Function API | 正式 | 密码学 KDF 支持(PBKDF2 / HKDF 等标准化) |
一句话总结 Java 25:
“更简洁的入门语法 + 更强的虚拟线程生态 + 内存与启动优化 + 更好的可观测性”,是目前最推荐的新项目 / 升级目标 LTS。
快速版本对比记忆口诀(面试/分享常用)
- Java 8 → Stream / Lambda / Optional / 默认方法 / 新日期时间
- Java 9–11 → 模块化 + var + HTTP Client + 移除旧模块
- Java 14–16 → Records + Text Blocks + instanceof 模式匹配
- Java 17 → Records / switch 模式匹配 正式 + macOS ARM
- Java 19–21 → 虚拟线程 / 结构化并发 / Scoped Values 正式
- Java 22–24 → Foreign Function & Memory API 正式 + Stream Gatherers
- Java 25 → Scoped Values 正式 + 极简 main + 构造器灵活体 + Compact Headers
如果你当前项目还在 Java 8 / 11 / 17,想升级到 21 或 25,建议优先迁移路径是:
Java 8/11 → 17(先上 Records + 虚拟线程预览) → 21(虚拟线程正式) → 25(语法糖 + 内存优化)
需要针对某个版本 / 某个 JEP 要详细代码示例(比如虚拟线程、Scoped Values、Records + Pattern Matching 组合)?
或者想看从 Java 17 → 25 的 Spring Boot 项目升级注意事项?
直接告诉我,我继续展开。