大家好,我是鹏磊。JDK 25 作为 2025 年 9 月发布的长期支持版本(LTS),带来了大量值得关注的新特性。从语言层面的模式匹配增强,到性能优化的 AOT 编译改进,再到并发编程的作用域值和结构化并发,这个版本在多个维度都有显著提升。
鹏磊我准备了一个完整的实战教程系列,将深入讲解 JDK 25 的 18 个主要新特性。每篇文章都会结合实战代码和实际应用场景,帮助大家快速掌握这些新特性的使用方法。无论你是想了解语言特性的改进,还是关注性能优化和安全增强,这个系列都能为你提供实用的指导。
JDK 25 主要新特性概览
这次 JDK 25 的新特性主要分几个方向,咱先大概瞅瞅都有啥:
语言特性增强
首先是语言层面的改进,这几个 JEP 还是挺实用的:
JEP 507 - 原始类型模式匹配(Third Preview):这个特性让模式匹配支持原始类型了,instanceof 和 switch 现在可以直接用原始类型,不用再手动拆箱装箱,写代码能省不少事。
JEP 511 - 模块导入声明:简化了模块的使用,可以直接导入模块的所有导出包,不用再一个个包去导入了,对于用模块化项目的兄弟们来说,这改动还是挺香的。
JEP 512 - 紧凑源文件和实例主方法:这个特性让单文件程序写起来更简单了,不用非得写 public static void main 了,直接写个实例方法就能跑,对新手友好多了。
JEP 513 - 灵活构造函数体:允许在 super() 或 this() 调用之前写语句,这样可以在调用父类构造函数之前先初始化一些字段,灵活性提高了不少。
并发和内存管理
JEP 506 - 作用域值(Scoped Values):这个特性提供了更高效的线程间数据共享方式,比 ThreadLocal 性能更好,特别是配合虚拟线程用的时候,效果明显。
JEP 505 - 结构化并发(Fifth Preview):继续完善结构化并发,把相关的并发任务当成一个工作单元来管理,错误处理更清晰,代码也更简洁。
性能优化特性
性能这块 JDK 25 也下了不少功夫:
JEP 514 - AOT 命令行人体工程学:改进了 AOT 的使用体验,通过训练运行记录应用行为,保存到 AOT 缓存,后续启动和预热时间都能缩短。
JEP 515 - AOT 方法性能分析:扩展了 AOT 缓存,在训练运行期间收集方法性能分析数据,让 JVM 能在应用启动时立即生成优化的原生代码。
JEP 519 - 紧凑对象头:把对象头从 16 或 12 字节减少到 8 字节(64位平台),堆内存占用能明显降低,缓存局部性也更好,GC 压力也能减轻。
监控和可观测性
JEP 518 - JFR 协作采样:重新设计了 JFR 的采样机制,使用协作采样在 JVM 安全点进行,稳定性和可扩展性都提升了。
JEP 520 - JFR 方法计时和追踪:增强了 JFR 的能力,可以精确记录特定 Java 方法的执行时间和追踪信息,通过字节码插桩实现。
JEP 509 - JFR CPU 时间性能分析(Experimental):实验性特性,基于 CPU 时间而不是经过时间进行线程栈采样,CPU 使用率分析的准确性更高。
垃圾收集器改进
JEP 521 - 分代 Shenandoah:给 Shenandoah 垃圾收集器引入了分代模式,对于有分代对象生命周期的应用,性能能提升不少。
安全增强
JEP 510 - 密钥派生函数 API:提供了标准的密钥派生函数 API,加密操作更方便了。
JEP 470 - PEM 编码加密对象(Preview):预览特性,支持解析和生成 PEM 格式的加密对象,简化加密操作。
其他特性
JEP 502 - 稳定值(Preview):预览特性,提供了稳定值 API,持有不可变数据的对象,性能优化效果类似声明 final 字段。
JEP 508 - 向量 API(Tenth Incubator):第十次孵化,提供 API 来表达向量计算,在支持的 CPU 架构上能可靠地编译为最优向量指令。
JEP 503 - 移除 32 位 x86 端口:这个不算新功能,但算是个重要变化,移除了对 32 位 x86 架构的支持,简化了 JDK 代码库。
教程系列规划
这个教程系列鹏磊我规划了 18 篇文章,每篇都会深入讲解一个或几个相关的特性:
- JDK 25 新特性实战教程介绍(就是这篇)
- 原始类型模式匹配(JEP 507)详解 - 深入讲解原始类型在模式匹配中的使用
- 模块导入声明(JEP 511)简化模块使用 - 简化模块化项目的导入
- 紧凑源文件和实例主方法(JEP 512)快速入门 - 让单文件程序更简单
- 灵活构造函数体(JEP 513)增强类设计 - 提高构造函数设计的灵活性
- 作用域值(JEP 506)替代 ThreadLocal - 更高效的线程间数据共享
- 结构化并发(JEP 505)简化多线程编程 - 让并发编程更清晰
- AOT 命令行人体工程学(JEP 514)优化启动性能 - 改进 AOT 使用体验
- AOT 方法性能分析(JEP 515)深度优化 - 通过 AOT 进行深度性能优化
- 紧凑对象头(JEP 519)降低内存开销 - 减少内存占用
- JFR 协作采样(JEP 518)性能监控增强 - 改进 JFR 采样机制
- JFR 方法计时和追踪(JEP 520)精确性能分析 - 精确的方法级性能分析
- JFR CPU 时间性能分析(JEP 509)实验性特性 - 基于 CPU 时间的性能分析
- 分代 Shenandoah(JEP 521)垃圾收集器优化 - GC 性能提升
- 密钥派生函数 API(JEP 510)安全增强 - 加密操作增强
- PEM 编码加密对象(JEP 470)简化加密操作 - 简化加密对象处理
- 稳定值(JEP 502)性能优化预览 - 性能优化预览特性
- 向量 API(JEP 508)第十次孵化 - 向量计算优化
每篇文章都会包含:
- 特性的背景和动机
- 详细的代码示例(带中文注释)
- 实际应用场景
- 最佳实践和注意事项
- 性能影响分析(如果适用)
学习建议
对于想深入学习 JDK 25 新特性的兄弟们,鹏磊我建议这样学:
如果你是 Java 新手:建议先看 JEP 512(紧凑源文件和实例主方法),这个特性让写 Java 程序更简单了,上手快。
如果你在做并发编程:重点关注 JEP 506(作用域值)和 JEP 505(结构化并发),这两个特性对并发编程帮助很大。
如果你在优化性能:JEP 514、515、519 这几个 AOT 和内存优化相关的特性值得深入研究,特别是 JEP 519 的紧凑对象头,能直接降低内存占用。
如果你在做监控和诊断:JEP 518、520、509 这几个 JFR 相关的特性要重点关注,能大幅提升性能分析的准确性。
如果你在做安全相关开发:JEP 510 和 JEP 470 这两个安全增强特性要好好研究。
当然,这些特性之间也有联系,比如作用域值和结构化并发可以组合使用,AOT 相关的特性也可以一起用。鹏磊我在后面的文章中会讲到这些组合使用的场景。
环境准备
要跟着这个教程系列学习,你需要:
- JDK 25:这是必须的,可以从 Oracle 官网或者 OpenJDK 下载
- IDE:推荐用 IntelliJ IDEA 或者 Eclipse,支持 JDK 25 的版本
- 基础 Java 知识:至少得熟悉 Java 8 的特性,如果了解 Java 17、21 的新特性更好
对于预览特性(Preview)和孵化特性(Incubator),需要在编译和运行时加上相应的参数:
// 编译预览特性需要加 --enable-preview
javac --enable-preview --release 25 YourClass.java
// 运行预览特性也需要加 --enable-preview
java --enable-preview YourClass
实验性特性(Experimental)可能需要额外的 JVM 参数,具体看每个特性的文档。
写在最后
JDK 25 这个版本确实有不少值得学习的新特性,不管是语言层面的改进,还是性能优化,都有很多可以深入的地方。鹏磊我这个教程系列会尽量用实战的方式来讲,代码示例都会配上详细的中文注释,让大家能真正理解这些特性的用法和原理。
当然,这些特性有些还在预览阶段,有些是实验性的,在生产环境用的时候要谨慎,先做好测试。但学习的话就没啥问题,提前了解这些特性,等它们正式发布的时候就能快速上手了。
好了,废话不多说,下一篇文章咱就开始深入讲解第一个特性:原始类型模式匹配。兄弟们准备好,咱们开始整活!