客户端
游戏
无障碍

7

评论

30

44

手机看

微信扫一扫,随时随地看

Java 24正式发布,引入数千项改进!开发者:你发任你发,我用Java 8

AI划重点 · 全文约3220字,阅读需10分钟

1.本周,甲骨文发布了Java的最新版本——Java 24,引入数千项改进和20多项新特性。

2.其中,JEP 488、492、494等特性提升了Java语言的一致性、表达能力和生产力。

3.同时,Java 24还提供了对AI和后量子加密的支持,为开发者提供了强大的工具。

4.然而,尽管Java 24已发布,仍有不少开发者坚持使用Java 8。

5.未来,Java 24将继续推进安全性和稳定性,逐步弃用和移除不安全的功能。

以上内容由腾讯混元大模型生成,仅供参考

【CSDN 编者按】作为全球最受欢迎的编程语言之一,本周 Java 24 正式发布。Java 24不仅延续了其卓越的传统,而且通过引入一系列创新性的特性和改进,再次证明了自己在推动现代软件开发进步方面的核心地位。从支持AI和后量子加密的新功能到对开发者生产力的显著提升,Java 24展示了Oracle与全球Java社区紧密合作的成果。

作者 | Oracle 官网      翻译 | 郑丽媛
出品 | CSDN(ID:CSDNnews)

本周,甲骨文正式发布了 Java 的最新版本——Java 24(Oracle JDK 24)!

据官方介绍,Java 24 引入了数千项改进,以及 20 多项涵盖 Java 各个方面的新特性,包括 AI 支持和后量子加密能力,为开发者提供了构建创新型 AI 应用的强大工具。正如 IDC 软件开发研究副总裁 Arnal Dayaratna 所说:“Java 24 再次证明,Java 在企业级、关键任务应用的开发领域拥有无可匹敌的优势。”

下面,让我们一起来看看 Java 24 都带来了哪些新功能。


图片

语言特性

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

该特性提升了 Java 语言的一致性和表达能力,提高了开发者的编程效率。通过消除模式匹配、instanceof 和 switch 语句中对原始类型的限制,使模式匹配更加灵活。开发者可以在所有模式上下文中使用原始类型模式,并扩展了 instanceof 和 switch 以支持所有原始类型。对于涉及 AI 推理(AI inferencing)的应用开发者而言,这一改进尤为重要。

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

通过在构造函数体中引入两个独立的“前序(prologue)”和“后序(epilogue)”阶段,提升代码的可靠性。这使得开发者能够更自然地组织构造方法中的逻辑,而无需依赖辅助的静态方法、中间构造方法或额外的构造参数。此外,该特性保留了现有的保护机制,确保子类代码不会干扰父类的实例化,从而增强类的可靠性,特别是在方法被重写时。

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

该特性提升了开发者的生产力,使其可以快速导入模块导出的所有包,而无需强制导入代码本身位于模块内。这简化了对模块化库的复用,让所有开发者(尤其是初学者)可以更轻松地使用第三方库和 Java 基础类,无需了解其复杂的包层级结构。此外,该特性还便于开发者快速集成业务逻辑,与 AI 推理、库或服务调用进行对接。

  • JEP 495:简化源文件与实例 main 方法(第四次预览版)

该特性降低了 Java 学习门槛,让初学者也能在不了解复杂语言特性的情况下编写第一个 Java 程序。因此,教育者和培训讲师可以循序渐进地引导学生学习 Java 语言,学生则可以编写简化的单类程序声明,并随着技能提升逐步扩展程序,引入更高级的语言特性。此外,经验丰富的 Java 开发者可以简洁高效地编写小型程序,而无需使用为大型项目设计的工具。


图片

  • JEP 485:流收集器(Stream Gatherers)

增强 Stream API,以支持自定义中间操作,使数据流管道能够以更灵活的方式转换数据,从而提升代码的可读性、可维护性和效率。

  • JEP 484:类文件 API

提供标准 API,用于解析、生成和转换 Java 类文件,确保与 Java 虚拟机(JVM)规范的类文件格式保持一致,帮助开发者提高生产力。

  • JEP 487:作用域值(Scoped Values,第四次预览版)

支持在多线程环境下共享不可变数据,提升代码的可读性、可维护性和性能。

  • JEP 489:向量 API(第九次孵化)

引入向量计算 API,能够在支持的 CPU 架构上将代码即时编译为高效的向量指令,从而提升 AI 推理和计算密集型应用的性能。

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

优化多线程代码的可维护性、可靠性和可观测性。通过结构化并发 API,将多个相关线程视为 一个工作单元,减少线程泄漏和取消延迟等常见并发问题。


图片

安全库

  • JEP 478:密钥派生函数 API(预览)

提升数据在传输中的加密安全性,助力 Java 应用适应未来量子计算时代的安全挑战,同时也提高了机密性和通信完整性。

  • JEP 496:抗量子模块格基密钥封装机制(ML-KEM)

通过提供抗量子攻击的模块格基密钥封装机制(ML-KEM)实现,增强了Java应用的安全性。该功能是迈向后量子准备的重要一步,并最终为 Java 平台提供后量子加密(PQC)支持。

  • JEP 497:抗量子模块格基数字签名算法(ML-DSA)

提供抗量子攻击的模块格基数字签名算法(ML-DSA),防止数据篡改并确保签名者身份安全,进一步提升 Java 应用的安全性。ML-DSA 旨在抵御未来的量子计算攻击,并已获得美国国家标准与技术研究院(NIST)FIPS 204 认证。


图片

工具

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

即使没有 JMOD 文件,也可以通过启用 jlink 工具创建自定义运行时镜像。这不仅能帮助开发者提高效率,还可以将 JDK 的大小减少约 25%。因此,无论模块是独立的 JMOD 文件、模块化的 JAR 文件,还是先前链接的运行时镜像的一部分,开发者都可以从模块创建运行时镜像。注意,此功能必须在构建 JDK 时启用;默认情况下不会启用,有些 JDK 供应商可能会选择不启用。


图片

性能与运行时更新

  • JEP 450:紧凑对象头(实验性)

减少 HotSpot JVM 对象头大小,从 96-128 位缩小到 64 位,帮助开发者提高生产力,优化内存占用,提高数据局部性。

  • JEP 475:G1 的延迟屏障扩展

将 G1 垃圾收集器的屏障扩展从 C2 JIT 编译管道的早期阶段转移到后期阶段,帮助开发者提高效率并减少了开销。这简化了 G1 垃圾收集器障碍的实现,提高了 C2 生成代码的效率、可理解性、弹性和质量。

  • JEP 483:提前类的加载与链接

在 HotSpot Java 虚拟机启动时立即提供应用程序的类,使其处于已加载和已链接状态,提高开发者生产力并改善了启动时间。此功能不需要使用 jlink 或 jpackage 工具,不需要更改命令行启动应用程序的方式,也不需要更改应用程序、库或框架的代码。

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

移除 Z 垃圾收集器(ZGC)的非分代模式,降低了维护两种不同模式的成本。

  • JEP 491:同步虚拟线程而不锁定

扩展使用同步方法和语句的 Java 代码和库的可扩展性,帮助开发者提高生产力。该功能允许虚拟线程释放其底层平台线程,让开发者能够访问更多的虚拟线程来管理应用程序的工作负载。


图片

源代码

  • JEP 404:分代 Shenandoah(实验性)

该特性增强了 Shenandoah 垃圾回收器(GC),引入实验性的分代回收机制,以提高 Java 应用的持续吞吐能力,增强负载波动的适应性并优化内存使用。这一改进帮助开发者更高效地管理 Java 应用的内存回收,使系统在高负载情况下依然保持稳定。

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

移除了 Windows 32 位 x86 端口的源码和构建支持,简化了 JDK 的构建和测试流程,有助于提高开发效率,并减少对旧架构的维护成本。

  • JEP 501:弃用 32 位 x86 端口以准备移除

该提案将 32 位 x86 端口标记为弃用,计划在未来版本中彻底移除。这一决策有助于 Java 生态逐步转向现代硬件架构,使开发者能够更快地采用新特性,而无需考虑对 32 位 x86 体系结构的兼容性。

此外,Oracle 将继续推进 Java 的安全性和稳定性,包括引入现代、安全的功能,同时逐步弃用和移除不安全的功能。据悉 Java 24 版本之后,以下功能将在未来版本中被移除:

(1)JEP 472:准备限制 JNI(Java Native Interface)的使用;

(2)JEP 486:永久禁用 Java 安全管理器(Security Manager);

(3)JEP 498:对 sun.misc.Unsafe 中的内存访问方法发出警告。

至此,更多关于 Java 24 的最新发布内容,将在 2025 年 3 月 18-20 日于加州红木海岸举行的 JavaOne 2025大会上揭晓。


图片

开发者:你发任你发,我用 Java 8

颇为有趣的是,尽管 Java 24 已经发布,目前仍有不少开发者在依旧坚持使用 Java 8:你发任你发,我用 Java 8”,“用啥 Java 24Java 8 用到世界毁灭”。

不过,也有许多人指出 Java 8 已经过于落后,相比之下 Java 17、Java 21 是更多人的选择

  • Java 8 只支持到 springboot2,但是 springboot2 里面很多组件有漏洞,已经不能通过公司的安全审计了。

  • 开源三方件都慢慢不支持 Java 8 了,除非你开源三方件也不准备更新了。

  • 现在新项目都是 17、21 起步了,别说 8 了,11 都不考虑了,太老了实在是。

那么,你现在用的又是哪个版本的 Java 呢?

免责声明:本内容来自腾讯平台创作者,不代表腾讯新闻或腾讯网的观点和立场。
举报
评论 0文明上网理性发言,请遵守《新闻评论服务协议》
请先登录后发表评论~
查看全部0条评论
首页
刷新
反馈
顶部