JDK 25发布
JDK 25已经于2025年9月16日正式发布,新版本包含18项 JDK 增强提案(JEP),旨在改进 Java 语言、拓展其人工智能能力,并帮助开发者提升工作效率。JDK 25是Java SE平台的最新长期支持(LTS)版本。本文总结了JDK 25发布的新特性。
安装包下载
主要分为OpenJDK版本和Oracle版本,下载地址如下:
- OpenJDK版本:https://jdk.java.net/25/
- Oracle版本:https://www.oracle.com/java/technologies/downloads/
上述版本,如果是个人学习用途,则差异不大。但如果是用于商业用途,则需要仔细看好相关的授权。Oracle JDK商用需要遵循 Oracle No-Fee Terms and Conditions (NFTC)协议,而OpenJDK根据GPL v2许可获得许可。
更多有关Java的基本知识,可以参阅《Java核心编程》这本书,描述的非常详细。
JDK 25 新特性说明
JDK 25 语言特性
- JEP 507:模式、instanceof 与 switch 中的基本类型(第三次预览):通过增强 Java 语言的统一性与表达性,提升开发者编程效率。例如,开发者可突破在使用模式匹配、instanceof 与 switch 时遇到的基本类型限制,进一步完善模式匹配功能;同时,该提案允许在所有模式上下文中使用基本类型模式,并扩展 instanceof 与 switch 的功能,使其支持所有基本类型。对基本类型的支持,将特别有利于开发集成人工智能推理功能的应用。
- JEP 511:模块导入声明:开发者无需将导入代码置于模块内部,即可轻松导入某个模块导出的所有包,大幅提升工作效率。这一功能简化了所有开发者对模块化库的复用流程,也让新手无需了解第三方库与 Java 基础类在包层级中的位置,就能直接使用这些资源。此外,当开发者使用某个模块导出的 API 中不同部分时,无需再编写多个按需类型导入声明,这对于整合热门库的人工智能推理与工作流的简单应用而言,十分实用。
- JEP 512:紧凑源文件与实例主方法:为 Java 编程提供更便捷的入门路径,让新手、系统管理员与 IT 管理员更容易掌握 Java 语言。学生无需理解为大型程序设计的语言特性,就能用简洁的代码编写首个程序,且随着技能提升,可轻松扩展代码规模。同时,非 Java 专业的系统管理员与 IT 管理员,在编写脚本、命令行工具等小型程序时,也能减少繁琐的代码步骤。
- JEP 513:灵活的构造函数体:允许开发者在显式调用构造函数前进行输入验证与安全计算,从而提升代码的安全性与可靠性。这一功能支持更自然的构造函数表达式,确保字段在被其他类代码(如超类构造函数调用的方法)访问前完成初始化;同时,它能防止子类构造函数干扰超类实例化,进一步增强代码可靠性。
JDK 25 库特性
- JEP 505:结构化并发(第五次预览):简化并发编程流程,提升多线程代码的可维护性、可靠性与可观测性。通过将不同线程中运行的相关任务组视为单一工作单元,结构化并发能减少因取消操作与关闭操作引发的常见风险,如线程泄漏、取消延迟等。这一特性对人工智能开发尤为重要,因为人工智能开发常需并行运行多个任务。
- JEP 506:作用域值:支持在线程内部及线程之间共享不可变数据,提升项目的易用性、可理解性、性能与稳健性。该特性对使用人工智能平台、Web 框架与微服务的应用帮助显著。此外,与线程局部变量(thread-local variables)相比,作用域值更易于推理,且在空间与时间成本上更具优势,尤其与虚拟线程、结构化并发结合使用时,效果更为明显。
- JEP 502:稳定值(预览):引入稳定值 API,稳定值是存储不可变数据的对象,为开发者提供更高灵活性。由于 Java 虚拟机(JVM)将稳定值视为常量,因此它能实现与声明 final 字段相同的性能优化,同时在初始化时机上具备更高灵活性。
- JEP 508:向量 API(第十次孵化):提供一种可在运行时可靠编译为目标 CPU 架构最优向量指令的 API,帮助开发者提升工作效率。通过该 API,开发者能实现比同等标量计算更出色的性能,而标量计算在人工智能推理与计算场景中应用广泛。
JDK 25 安全库特性
- JEP 470:加密对象的 PEM 编码(预览):新增编码 API,助力开发者提升效率。该 API 可将表示加密密钥、证书与证书吊销列表的对象,编码为广泛使用的隐私增强邮件(PEM)传输格式,也能将 PEM 格式解码回对应对象。这一功能让开发者更容易将 Java 应用与 YubiKey 等安全认证系统及设备集成。
- JEP 510:密钥派生函数 API:提供密钥派生函数(KDF)API,该函数是一种从密钥与其他数据中派生额外密钥的加密算法,帮助开发者为新兴的量子计算环境做好准备。这一 API 为支持混合公钥加密提供了必要基础,而混合公钥加密能助力实现向量子安全加密的平稳过渡。
JDK 25 性能更新
- JEP 519:紧凑对象头:在64位架构上将对象头大小缩减至64位,帮助开发者提升工作效率。这一改进能提高部署密度、增强数据局部性,同时在实际工作负载中减小对象大小与内存占用。
- JEP 514:提前编译(AOT)命令行易用性优化:简化常见场景下创建提前编译缓存的操作,且不影响功能表达,助力开发者提升效率。通过简化常用场景所需命令,该特性加快了 Java 应用的启动速度。
- JEP 515:提前编译方法分析:将初始方法执行分析从生产运行阶段转移到训练运行阶段,并通过提前编译缓存传递分析结果,缩短应用预热时间,进而提升应用性能与开发者效率。这使得即时编译器(JIT)能在应用启动时立即生成本地代码,无需等待分析结果收集;同时,无需修改应用、库或框架的代码,也不对应用运行施加任何限制。
JDK 25 监控更新
- JEP 509:JFR CPU 时间分析(实验性):增强 JDK 飞行记录仪(JFR)功能,使其能在 Linux 系统上捕获更精准的 CPU 时间分析数据,帮助开发者识别需优化的程序模块,进而提升工作效率与程序运行效率。
- JEP 518:JFR 协作式采样:改进 JFR 异步采样 Java 线程栈时的稳定性,提升代码可靠性。该特性让 JFR 能最大限度减少事件采样中的安全点偏差,同时避免在安全点外生成栈跟踪时使用高风险的启发式方法;此外,它支持响应硬件事件或在信号处理器内创建采样请求,并减少采样线程需执行的工作量。
- JEP 520:JFR 方法计时与跟踪:通过字节码插桩为 JFR 扩展方法计时与跟踪功能,帮助开发者快速定位应用性能瓶颈、优化代码并排查漏洞根源,提升工作效率。
参考引用
- 本文同步至: https://waylau.com/jdk-25-released/
- https://waylau.com/jdk-24-released/
- https://waylau.com/jdk-23-released/
- https://waylau.com/jdk-22-released/
- https://waylau.com/jdk-21-released/
- https://waylau.com/jdk-17-released/
- https://waylau.com/jdk-16-released/
- https://waylau.com/jdk-15-released/
- https://waylau.com/jdk-14-released/
- 《Java核心编程》
- 开源项目“现代Java案例大全” https://github.com/waylau/modern-java-demos