首页 AI科技文章正文

“我用Java 8”已成过去式!Java 25正式发布:Oracle提供八年更新、18项新功能上线

AI科技 2025年09月24日 05:57 2 aa
“我用Java 8”已成过去式!Java 25正式发布:Oracle提供八年更新、18项新功能上线

编译 | 苏宓

出品 | CSDN(ID:CSDNnews)

作为曾经的编程语言王者,如今 Java 的更新速度令无数开发者望尘莫及,转瞬间,其版本已经来到了 25。

值得注意的是,Oracle 最新发布的 Java 25 是最新的长期支持(LTS)版本,回看上一版 LTS 还是 2023 年 9 月推出的 JDK 21。相比常规的半年期版本,LTS 版本将获得更长周期的维护与支持——JDK 25 将获得至少 8 年的 Oracle Premier 商业支持。

简单来说,按照 Oracle 的计划,JDK 25 会在 2028 年 9 月之前,按季度提供免费的安全和性能更新,遵循 NFTC(No-Fee Terms and Conditions)许可;在那之后,更新会转到 Java SE OTN(Oracle Technology Network License Agreement)许可下继续提供,预计至少会持续到 2033 年 9 月。

在此,我们也稍作解释:相比 NFTC,OTN 是一个更严格的免费使用许可。它允许开发者在开发和测试中免费使用 Java SE,但如果要在生产环境、大规模商用部署中长期使用,就需要从 Oracle 购买商业支持。换句话说,OTN 更像是一个“开发免费、商用需付费”的模式。

“我用Java 8”已成过去式!Java 25正式发布:Oracle提供八年更新、18项新功能上线

据 Oracle 公告显示,此番 Java 25 共计带来了 18 项功能更新,其中 5 项 Oracle 宣称可以助力 AI 开发。

接下来,我们不妨看看这些值得开发者关注的新功能。

“我用Java 8”已成过去式!Java 25正式发布:Oracle提供八年更新、18项新功能上线

语言的改进

在语言层面,JDK 25 带来了第三次预览的原始类型模式匹配,拓展了 instanceof 和 switch 对原始类型的支持。开发者可以在各种模式上下文中直接操作原始类型,这让 Java 语法更一致、更具表达力,也减少了因强制类型转换带来的风险。该特性最早在 JDK 23 提出,并在 JDK 24 跟进,如今依然处于预览阶段。

在模块化方面,模块导入声明能让开发者一次性导入整个模块输出的所有包,减少大量重复的 import 声明。这一设计对初学者尤为友好,也能简化第三方库的使用。

简化源码文件与实例化 main 方法也将在 JDK 25 正式定型。它让初学者能用最简单的方式编写 Java 程序,无需一开始就理解复杂的语言特性。对有经验的开发者来说,这一机制同样方便编写小型程序,减少不必要的样板代码。

灵活构造函数体也将在 JDK 25 中定型。该特性允许开发者在显式调用 super(...) 或 this(...) 之前编写安全语句(如字段初始化),从而让构造函数表达更自然,也能确保对象在对外可见前已经被安全初始化。

“我用Java 8”已成过去式!Java 25正式发布:Oracle提供八年更新、18项新功能上线

Oracle JDK 25 库更新

结构化并发在 JDK 25 进入第五次预览。它将一组相关的并发任务视为一个整体进行管理,能简化错误处理和任务取消,提升可靠性和可观测性。新版本中,StructuredTaskScope 的创建方式改为静态工厂方法,简化了常见使用场景的书写。

作用域值在 JDK 25 中也终于将定型。这个特性允许方法在同一线程及其子线程之间共享不可变数据,相比传统的线程局部变量更轻量,也更容易推理和理解。它经过多轮预览(从 JDK 21 到 JDK 24)不断打磨,在 JDK 25 中会被正式确定,同时对 API 做了小幅调整,例如 ScopedValue.orElse 方法将不再接受 null 参数。

稳定值(Stable Values) 作为预览特性,则提供了一种更灵活的方式来处理不可变数据。它们被 JVM 视为常量,因此能够启用类似 final 字段的性能优化,同时又允许在初始化时机上更自由。这不仅能改进应用启动性能,还能保证多线程下数据的安全初始化。

向量 API 再次进入孵化阶段,这是它在 JDK 中的第十次亮相。该 API 旨在让 Java 能够利用 CPU 的向量指令,从而比标量计算更高效。在 JDK 25 中,它进行了两项重要改进:其一,底层数学函数的实现从 HotSpot JVM 内部的 C++ 代码迁移到通过外部函数与内存 API调用原生数学库,提升了可维护性;其二,在支持的 x64 CPU 上,Float16 类型的加减乘除、平方根和乘加运算现在能自动向量化。此外,VectorShuffle 也新增了与 MemorySegment 的互操作。

安全库

在安全与加密方面,JDK 25 预览了 PEM(Privacy-Enhanced Mail)加密对象编码的简洁 API。通过这一功能,开发者可以更方便地在常见的 PEM 格式与 Java 加密对象之间进行转换,例如密钥、证书以及证书吊销列表。过去,Java 平台并没有易用的 PEM 编解码 API。新特性的目标之一就是提升易用性,同时也支持与标准二进制格式的互转,包括 PKCS(私钥)、X.509(公钥、证书与吊销列表)以及 PKCS v2.0(加密私钥与非对称密钥)。

在加密领域,JDK 25 将正式提供密钥派生函数 API(Key Derivation Function API)。它支持通过算法从已有的秘密密钥和数据中派生新密钥,这对于面向量子计算的未来安全环境尤其重要。该 API 支持包括 HMAC 基础的密钥派生函数(HKDF)和 Argon2 等算法,还能用于密钥封装机制(如 ML-KEM)、TLS 1.3 中的混合密钥交换,以及混合公钥加密等高级协议。它在 JDK 24 曾经预览,如今在 JDK 25 中正式落地。

“我用Java 8”已成过去式!Java 25正式发布:Oracle提供八年更新、18项新功能上线

安全、性能的提升

另一个正式登场的功能是紧凑对象头(Compact Object Headers)。它最初在 JDK 24 以实验形式出现,如今已经被证明在稳定性和性能上表现出色。该功能将 HotSpot JVM 中对象头的大小,从原本的 96 位到 128 位压缩到 64 位(在 64 位架构上),从而减小堆内存占用,提高部署密度和数据局部性。

为了进一步改善应用的启动体验,JDK 25 还引入了提前编译命令行改进提前方法分析。前者让开发者更容易创建提前编译(AOT)缓存,从而加快 Java 应用启动速度,同时避免新增复杂的工作流,保持使用体验的简洁一致。后者则通过复用应用在上一次运行时收集到的方法执行信息,让即时编译器(JIT)在应用启动时就能立刻生成高效的本地代码,而不用等待新的性能数据积累。这意味着应用可以更快“热身”,并且无需修改现有代码或框架。实际上,这一特性是对 JDK 24 中 AOT 缓存机制的扩展。

在性能分析方面,JDK 25 对 JDK Flight Recorder(JFR)进行了重要增强,引入了CPU 时间分析功能。JFR 是 JDK 的性能监测与分析工具。新版本利用 Linux 内核的 CPU 计时器,能够更精确地生成 Java 程序的 CPU 时间分析报告,帮助开发者优化在 Linux 上运行的应用效率。这一特性目前属于实验性质,未来有可能扩展到其他平台。值得一提的是,JDK 25 与 JFR 相关的增强共有三项:除了 CPU 时间分析之外,还有协作采样以及方法执行时序与追踪功能。

同时,JDK 25 还改进了 JDK Flight Recorder(JFR)的稳定性,推出协作采样功能。在异步采样 Java 线程栈时,新机制会选择在安全点(safepoint)执行调用栈遍历,从而减少采样误差,让性能分析结果更加可靠。

不止如此,JDK 25 为 JDK Flight Recorder(JFR)加入了新的方法执行时序与追踪功能。这意味着开发者无需通过字节码插桩,也能记录特定方法的执行时间和调用栈信息,而且不需要修改源代码。方法可以通过命令行参数、配置文件、jcmd 工具,甚至是 Java 管理扩展(JMX)API 远程指定。借助这一能力,开发者能够更轻松地定位性能瓶颈、优化代码,甚至追踪 Bug 的根源。

在垃圾回收方面,JDK 25 将分代 Shenandoah 垃圾回收器(Generational Shenandoah GC)从实验功能升级为正式特性。该回收器最早在 JDK 24 中预览,并在稳定性和性能上得到了显著提升。它的目标是提升 Java 程序的可持续吞吐量,应对负载突发带来的压力,并优化内存利用率。一些开发者已经在高负载的场景中测试过这一回收器,反馈较为积极。其实,分代 Shenandoah 原计划在 2023 年的 JDK 21 中推出,但当时因为尚未成熟而被推迟。

JDK 25 还会正式移除对 32 位 x86 的支持。这一移植版本在 JDK 24 就已经被标记为弃用,如今彻底移除后,OpenJDK 社区可以集中精力推进新特性和优化,比如外部函数与内存 API 的演进。

最后,虽然不在官方功能清单中,Oracle 还透露 JDK 25 在字符串(String)性能上也有提升,String::hashCode 方法现在能借助编译器的常量折叠优化,从而让字符串作为不可变 Map 键时获得显著的性能加速。

“我用Java 8”已成过去式!Java 25正式发布:Oracle提供八年更新、18项新功能上线

“你发任你发,我用 Java 8”已成为过去式!

对于 Java 25 的正式发布,虽然不少网友继续调侃道, “你发任你发,我用 Java 8” ,但根据今年 Azul 组织发布关于 Java 使用的最新数据显示,开发者们最关心的还是长期支持版(LTS)。Java 17 悄悄登上了使用率最高的宝座,Java 21 也紧随其后。至于刚刚登场的 Java 25,会不会像前辈一样逐步取代老版本、成为新的主力,还要看时间给出的答案了。

“我用Java 8”已成过去式!Java 25正式发布:Oracle提供八年更新、18项新功能上线

官方公告:https://www.oracle.com/news/announcement/oracle-releases-java-25-2025-09-16/

https://www.infoworld.com/article/3846172/jdk-25-the-new-features-in-java-25.html

“我用Java 8”已成过去式!Java 25正式发布:Oracle提供八年更新、18项新功能上线

发表评论

长征号 Copyright © 2013-2024 长征号. All Rights Reserved.  sitemap