当前位置:首页 > 科技资讯 > 正文

Java 25震撼发布:全新功能与长期支持登场

作为编程语言界的昔日霸主,Java如今正以惊人的速度更新,其最新版本已跃升至25。

值得注意的是,Oracle最新发布的Java 25是一款长期支持(LTS)版本,与前一个LTS版本JDK 21相比,它提供了更长时间的维护与支持。根据Oracle的计划,JDK 25将在2028年9月前提供免费的季度安全及性能更新,遵循NFTC(无费用条款和条件)许可。之后,更新将转移到Java SE OTN(Oracle技术网络许可证协议)下,预计至少支持至2033年9月

相较于NFTC,OTN是一种更严格的免费使用许可。开发者可在开发和测试中使用Java SE免费,但在生产环境及大规模商用部署中则需购买Oracle的商业支持。简而言之,OTN采用了“开发免费、商用付费”的模式。

Java 25震撼发布:全新功能与长期支持登场 25 长期支持 新功能 Oracle 第1张

据Oracle公告显示,Java 25共带来18项功能更新,其中5项专为AI开发而设。

接下来,让我们探索这些值得开发者关注的新功能。

语言改进

在语言层面,JDK 25引入了第三次预览的原始类型模式匹配,扩展了instanceof和switch对原始类型的支持。开发者可在各种模式上下文中直接操作原始类型,使Java语法更加一致、更具表达力,并减少因强制类型转换带来的风险。该特性自JDK 23提出后,于JDK 24跟进,目前仍处于预览阶段。

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

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

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

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的互操作。

安全与性能提升

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

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