13426109659
webmaster@21cto.com

Java 25 LTS 版本正式发布

编程语言 0 29 8小时前
图片

导读:Oracle正试图让初学者更简单地学习这个编程语言,为让它变得更流行而努力,但目前看不太可能提高它的受欢迎程度。

Oracle 近日发布了 JDK(Java 开发工具包)v25,这是两年前 JDK 21 发布以来的首个长期支持 (LTS) 版本。

Java 25 新功能包括适合初学者的紧凑型源代码与简洁的模块导入以及更灵活的构造函数。

Java 25 中的简化代码

图1 Java 简化代码编写

每次发布的LTS 版本都意义重大,这是因为许多企业或组织都不会选择使用支持周期较短的版本。

如果我们将“新功能”列表扩展到 JDK 22、23 和 24,会发现许多重要的更新,包括外部函数和内存 (FFM) API 的完整发布,它将逐步取代 JNI(Java 原生调用),以便与原生库进行互操作。根据 JDK 22 预览版中发布的官方增强方案, FFM API将“用简洁、易读且纯 Java 的 API 取代原生方法和 JNI 的脆弱机制”。

JDK 25 中的全部新功能都在Oracle 的帖子中,并且现在可以使用GPL(通用公共许可证)下的 OpenJDK 版本的发布版本

帖子地址:

https://blogs.oracle.com/java/post/the-arrival-of-java-25

Java 在企业信息技术中扎实牢固,是最受欢迎的编程语言之一;

Redmonk 的数据分析师将Java排在 JavaScript 和 Python 之后,位居第三,领先于 PHP、C# 和 TypeScript。

图片

图2 Redmonk的编程语言排行榜

图片
图3 Remonk按项目使用度的排行

然而,编程新手更有可能选择 Python、PHP 或 JavaScript,而 AI 编程工具如果没有特别说明,往往会默认使用 JavaScript 或 TypeScript,这可能对 Java 的使用构成长期威胁。

Java 编译器小组是旨在提升 Java 语言效率之 Amber 项目的一部分,他们希望让 Java 平台更易于初学者使用,并在JEP(Java 增强提案)495中提出了现在称为“简单源文件和实例主方法”的方案,该方案已在 JDK 25 中发布。

以前,Java初学者的第一个 Java 程序需要一个类声明,其中包含一个声明为 public static void main(String[] args) 的长方法。

新提案中指出:“这太混乱了——代码太多、概念太多、结构太多。”

现在的Java25,能够使用简单的语法,只需编写以下代码即可:

void main() {   IO.println("Hello World!");}

上面这段代码将编译并运行。加上简洁的模块导入功能(可根据导入模块所使用的其他模块,使用单个导入语句可导入多个包),Java 程序员现在可以更轻松地上手,经验丰富的开发者也可以编写更简洁的代码。

这能否大幅提升 Java 在新程序员中的受欢迎程度尚不能确定。

新方法隐藏了 Java 的关键概念,但并未完全移除它们;一些概念需要以后再学习。这其中就包括面向对象,它在 30 年前 Java 发明时曾被认为是现代的编程方式,但现在却受到了质疑;例如,Rust 实现了一些面向对象特性,但并没有实现继承,至少方式不同。

内存效率提升

紧凑对象头是这次更新的一个小小技术细节,但此功能确实能够显著降低基础设施成本。通过将对象头大小从 16 字节或 12 字节(在 64 位平台上)减少到仅 8 字节,紧凑对象头能够显著减少应用程序的堆大小。性能分析显示,在常见基准测试中,堆大小最多可减少 22%,CPU 时间减少 8%。

这些数学计算结果看一下,一个拥有 1 亿个市场数据对象的金融交易系统可以节省 400MB 的堆空间,而一个拥有 20 个实例、1000 万个产品对象的电商平台可以减少 800MB 的内存使用量。这些节省直接转化为降低云基础设施成本并实现更高的容器密度。

除了降低成本之外,紧凑的对象头还能提升 CPU 缓存效率,通常可为对象密集型工作负载带来 5% 到 10% 的吞吐量提升。该功能无需任何应用程序更改,且完全符合 JVM 规范。

AI 相关功能

Oracle还指出,JDK 25 中的五项功能可助力 AI 应用开发:

  • 基础类型匹配(patterns、instanceof、switch):提升与 AI 相关业务逻辑集成效率;

  • 模块导入声明:简化业务逻辑与 AI 推理、库或服务调用的整合;

  • 向量 API:常用于 AI 推理与计算场景;

  • 结构化并发:便于同时运行多个 AI 任务,提高开发可靠性;

  • 作用域值(Scoped Values):支持跨线程高效共享不可变数据,降低成本。


其他关键新特性

JDK 25 带来的其他主要功能和改进包括:

  • JFR CPU 时间分析:增强 JDK Flight Recorder(JFR),在 Linux 上捕获更准确的 CPU 时间信息,帮助优化应用性能;

  • 加密对象 PEM 编码:提供简洁 API,实现加密密钥、证书及吊销列表在 PEM 格式与标准二进制格式间的转换;

  • Shenandoah 分代垃圾回收器:从实验功能转为正式产品特性,提升内存利用率与系统稳定性;

  • 提前编译(AOT)功能增强:包括命令行优化与方法分析,加快应用启动与热身过程;

  • 模式匹配增强:进一步支持基础类型,提高 Java 语言表达力;

  • 向量 API:第十次孵化,性能优化并改进底层实现;

  • 密钥派生函数 API:支持 HMAC、Argon2 等算法,面向未来量子计算安全环境;

  • 结构化并发:第五次预览,改进并发编程可观测性与错误处理;

  • 灵活构造方法体:允许构造函数在调用 super (...) 或 this (...) 之前执行语句,提升代码安全性;

  • 模块导入声明:可一次性引入整个模块导出的包,简化代码;

  • 简化源文件与实例 main 方法:让初学者更容易编写第一个 Java 程序,同时为小型应用提供更简洁语法;

  • 稳定值(Stable Values):支持一次性初始化的不可变数据对象,提升应用启动效率;

  • 移除 32 位 x86 移植支持:精简维护成本,集中资源推动新功能开发。


结语

回顾此次发布,开发者们称赞 Java 是一个“极其稳定和成熟的生态系统” ,并且“几乎无处不在”。

但是也有负面评价,一些人认为“老旧的 Java 程序仍然冗余漫长” ,而另一些人,比如 JVM(Java 虚拟机),则更倾向于使用在其上运行的其他语言进行编码,例如函数式编程语言 Clojure,以及已被谷歌采用为 Android 开发主要语言(之前是 Java)的 JetBrains Kotlin。

从此次的发布来看,事实证明Oracle 对 Java 的管理是有效的,但对于那些无法避免该公司商业许可证构建软件的组织来说,成本也很高。

虽然如此,Java 仍在不断地成熟,并继续为大量企业应用程序提供支持,而 Java 25 是其一系列渐进式改进中的最新版本!

作者:洛逸

参考:

https://blogs.oracle.com/java/post/the-arrival-of-java-25

https://jdk.java.net/25/

https://openjdk.org/jeps/511

评论