17611538698
webmaster@21cto.com

Java 24 新功能来了

编程语言 49 1093 2025-02-05 01:50:31

图片

Java 24 是一个短期 JDK 版本,将获得为期六个月的高级支持。它将于2025 年 3 月 18 日由Oracle 发布。Java 24 包含 24 个实验性、孵化器、预览和永久功能。 

继续阅读以详细了解这些 JEP 中包含的内容以及 Java 24 之后 Oracle 路线图的下一步计划。 

目录


  1. 什么是 Java 24?

  2. 什么是 JEP?

  3. Java 24 中的实验性 JEP

  4. Java 24 中的孵化器 JEP 

  5. Java 24 中的 JEP 预览 

  6. Java 24 中的永久 JEP

  7. Java 24 之后会出现什么? 

  8. 对 Java 24 的最终思考 


什么是 Java 24?

Java 24 是一个短期 JDK 版本,将于 2025 年 3 月发布。Java 25 是一个长期支持 JDK,将于 2025 年 9 月取代 Java 24。  

Java 24 也称为 JDK 24,代表 Java 开发工具包 (JDK)。Java 24 将包括两个实验性 JEP、一个孵化器 JEP、七个预览 JEP 和 14 个永久 JEP。 

什么是 JEP?

JEP(Java 增强提案)是新 Java 特性从初步介绍和实际测试进展到成为 JDK 中永久组成部分的手段。 

JEP 主要有四种类型:实验性 JEP、孵化器 JEP、预览 JEP 和永久 JEP。

Java 24 中的实验性 JEP

实验性 JEP 是尚未最终确定且仍在开发中的增强提案。通过将这些功能作为实验性 JEP 发布,Oracle 可以征求具有实际场景的用户反馈。 

Java 24 中有两个实验性的 JEP。 

JEP 404:一代 Shenendoah


此实验性 JEP 的主要目的是探索分代模式的可能性,而不会破坏非分代 Shenendoah。


Oracle 打算在未来版本中将分代模式设为默认模式。 

 

JEP 450:紧凑对象头 


此实验性 JEP 的目标是将HotSpot JVM 中的对象头大小从 96 到 128 位减少到 64 位架构上的 64 位。这将减少堆大小、提高部署密度并增加数据局部性。 


Java 24 中的孵化器 JEP 


孵化器 JEP 指的是仍在开发中且尚未最终确定的功能。孵化器 JEP 是一种将实验性功能引入社区进行早期测试和反馈的方式,之后这些功能将成为语言的标准部分。


Java 24 中有1个孵化器 JEP。 


JEP 489:Vector API(第九个孵化器) 


如果向量 API 功能你听起来很熟悉,那是因为它最初是在 Java 16 中作为孵化 API 引入的。


向量API 被提议在 Java 17、Java 18、Java 19、Java 20、Java 21、Java 22 和 Java 23 中进行进一步的孵化。 


现在,向量 API 再次被提议作为孵化器功能,并进行了一些显著的变化:

 

  • selectFrom跨车道操作的新变体接受两个输入向量,用作查找表。 

  • selectFrom和重新排列跨通道操作现在包装索引而不是检查越界索引。 

  • ARM 和 RISC-V 上的超越和三角通道运算现在通过内部函数实现。 

  • 新的基于值的类 Float16 表示 IEEE 754 二进制 16 格式的 16 位浮点数。 

  • 增加了算术积分车道运算。 


Java 24 中的 JEP 预览 

预览功能是已完全开发的功能,但在作为永久功能引入 JDK 之前仍可能会发生变化。Java 24 包含七个预览功能,下面将详细介绍。   

JEP 478:密钥派生函数 API


此 JEP 引入了密钥派生函数 (KDF) 的 API,KDF 是一种加密算法,用于从密钥和其他数据中派生出其他密钥。它使应用程序能够使用 KDF 算法,例如基于 HMAC 的提取和扩展密钥派生函数和 Argon2。 


JEP 487:范围值(第四个预览版) 


此 JEP 允许方法与线程内的调用方以及子线程共享不可变数据。作用域值比线程局部变量更容易推断。 


这是范围值的第四次预览;它最初在 Java 20中作为孵化器 JEP提出,随后在 Java 21、Java Java 22 和 Java 23中作为预览功能重新引入。它在 Java 24 中再次被重新引入,以征求更多反馈。 


JEP 488:模式中的原始类型、instanceof和 switch(第二个预览) 


此预览语言功能通过允许所有模式上下文中的原始类型来增强模式匹配,并扩展instanceof和 switch 以使用所有原始类型。它是在 Java 23 中引入的,并且正在重新引入,没有变化。 


JEP 492:灵活的构造函数主体(第三次预览) 


该 JEP 重新构想了构造函数在对象初始化过程中的作用,使开发人员能够更自然地将他们当前必须考虑的逻辑放入辅助静态方法、辅助中间构造函数或构造函数参数中。 


JEP 494:模块导入声明(第二预览版) 


通过简洁地导入模块导出的所有包来增强 Java 编程语言。这简化了模块库的重用,但不要求导入代码位于模块本身中。 


JEP 495:简单源文件和实例主要方法(第四个预览版) 


该 JEP 改进了 Java 编程语言,以便初学者无需了解为大型程序设计的语言功能即可编写他们的第一个程序。 


JEP 499:结构化并发(第四个预览版) 


该 JEP 将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消、提高可靠性并增强可观察性。 


Java 24 中的永久 JEP


以前的 JDK 中已经引入了永久功能,经过迭代和改进后已准备好永久发布。Java 24 中的所有 14 个永久 JEP 都出现在以前的 JDK 中。


这些永久功能包括: 

  • JEP 472:准备限制 JNI 的使用 

  • JEP 475:G1 的后期屏障扩展 

  • JEP 479:删除 Windows 32 位 x86 端口 

  • JEP 483:提前类加载和链接 

  • JEP 484:类文件 API

  • JEP 485:流收集器 

  • JEP 486:永久禁用安全管理器 

  • JEP 490:ZGC:删除非分代模式 

  • JEP 491:无需固定即可同步虚拟线程 

  • JEP 493:无需 JMOD 即可链接运行时图像 

  • JEP 496:基于抗量子模块格的密钥封装机制 

  • JEP 497:基于模块格的抗量子数字签名算法 

  • JEP 498:在sun.misc.Unsafe中使用内存访问方法时发出警告 

  • JEP 501:弃用 32 位 x86 端口并将其删除 


Java 24 之后会出现什么? 

Java 24 不是长期支持的JDK,Oracle 只会支持六个月。它将被 Java 25 取代,后者将是一个长期支持版本。这是 Oracle 每两年发布一个 LTS版本的承诺的延续,比之前每三年发布一次的节奏有所加快。 

对 Java 24 的最终思考 

Java 24 可能只是一个小版本,但它包含了很多功能。即使不打算在业务中采用 Java 24,Java 开发人员也应该注意,因为其中许多功能将在 Java 25 中规范化。 

希望对大家有价值,欢迎留言。

编辑:跨年的大雄
参考:
https://www.jrebel.com/blog/whats-new-java-24

评论