3 月 19 日消息,Oracle 官宣正式发布 Java 24,这是 Java 编程语言和开发平台推出的全新版本。
Java 24(Oracle JDK 24)提供了数千项改进,拥有 20 多项涵盖了 Java 方方面面的新功能,包括新的 AI 和后量子密码功能,为开发人员提供了构建 AI 应用所需的工具。
Oracle 会在 3 月 18 日至 20 日在美国加利福尼亚州红木海岸举办的 JavaOne 2025 会议公布关于 Java 24 的更多信息。
语言特性
JEP 488:Primitive Types in Patterns, instanceof, and switch(第二预览版)— 通过使语言更加统一且更具表达能力,帮助开发人员提高 Java 编程的工作效率。此功能可帮助开发人员消除他们在使用模式匹配、instanceof 和 switch 时遇到的基元类型的限制,从而增强模式匹配。该功能还在所有模式上下文中支持基元类型模式,并扩展 instanceof 和 switch,使其能够与所有基元类型一起使用。集成 AI 推理的应用开发人员将能够从原始类型的支持中大大受益。
JEP 492:Flexible Constructor Bodies(第三预览版)— 在构造函数主体中引入两个不同的序言和表述阶段,帮助开发人员提高代码的可靠性。开发人员能够更自然地将他们当前必须考虑的逻辑融入辅助静态方法、辅助中间构造函数或构造函数参数中。此外,该功能还保留了现有的保证,即子类构造函数中的代码不能干扰超类实例化,能够在重写方法时使类更加可靠。
JEP 494:Module Import Declarations(第二预览版)— 开发人员可以轻松快速地导入由模块导出的所有程序包,无需将导入代码放到模块中,从而提高工作效率。这简化了所有开发人员对模块化库的重用,让初学者能够更轻松地使用第三方库和基本 Java 类,无需了解它们在程序包层次结构中的位置。该功能还可以帮助开发人员快速将业务逻辑与原生 AI 推理、库或服务调用集成在一起。
JEP 495:Simple Source Files and Instance Main Methods(第四预览版)— 帮助学生无需了解为大型程序而设计的语言功能,即可顺利编写第一个程序,加快了上手 Java 编程的速度。有鉴于此,教育工作者和导师可以循序渐进地介绍概念,学生也可以编写简化的单类程序声明,并随着个人技能的提升,无缝扩展程序并使用更高级的功能。此外,经验丰富的 Java 开发人员也可以以简洁而高效的方式编写小程序,无需使用为大型项目设计的工具。
库
JEP 485:Stream Gatherers — 通过增强 Stream API 来支持自定义中间操作,让流管道以现有内置中间操作无法轻松实现的方式转换数据,从而帮助开发人员提高阅读、编写和维护 Java 代码的效率。
JEP 484:Class-File API — 通过提供用于解析、生成和转换 Java 类文件的标准 API,以及跟踪 Java Virtual Machine 规范定义的类文件格式,帮助开发人员提高工作效率。
JEP 487:Scoped Values(第四预览版)— 支持开发人员在线程内和线程之间共享不可变数据,从而提高项目的易用性、可理解性、性能和稳健性。
JEP 489:Vector API (九次孵化阶段)— 新推出的 API 允许以一种在运行时,可靠地编译为支持的 CPU 架构上的向量指令方式表达向量计算,帮助开发人员提高生产力。因此,开发人员可以实现优于等效标量计算的表现,这些计算通常用于 AI 推理和计算场景。
JEP 499:Structured Concurrency(第四预览版)— 通过面向结构化并发的新 API 简化并发编程,帮助开发人员提高多线程代码的可维护性、可靠性和可观察性。通过将在不同线程中运行的相关任务组视为单个工作单元,结构化并发可以减少因取消和关闭而产生的常见风险,例如线程泄漏和取消延迟。
安全库
JEP 478:Key Derivation Function API(预览版)— 通过为传输中的数据提供加密安全,帮助开发人员为新兴的量子计算环境做好准备。这有助于提高保密性和通信完整性。
JEP 496:Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism — 支持实施抗量子的基于模块晶格的密钥封装机制 (ML-KEM),帮助提高 Java 应用的安全性。此功能是 Java 平台朝着后量子就绪以及最终交付后量子加密 (PQC) 技术支持迈出的重要一步,因为密钥封装机制用于通过公钥加密技术通过不安全的通信通道保护对称密钥。
JEP 497:Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm — 支持实施抗量子的基于模块晶格的数字签名算法 (ML-DSA),帮助提高 Java 应用的安全性。与 JEP 496 一样,此功能是 Java 平台迈向后量子就绪以及最终交付 PQC 技术支持的重要举措,因为数字签名主要用于检测未经授权的数据修改和验证签字人的身份。ML-DSA 旨在防止未来的量子计算攻击,目前已被美国国家标准与技术研究所 (NIST) 列为 FIPS 204 中的标准化项目。
工具
JEP 493:Linking Run-Time Images without JMODs — jlink 工具无需使用 JDK 的 JMOD 文件,即可创建定制运行时映像,能够将 JDK 的大小缩减约 25%,进而帮助开发人员提高效率。有鉴于此,开发人员可以从模块链接运行时映像,无论这些模块是独立的 JMOD 文件、模块化 JAR 文件还是以前链接的运行时映像的一部分。构建 JDK 时必须启用此功能;此功能不会默认启用,某些 JDK 供应商可以选择不启用此功能。
性能和运行时更新
JEP 450:Compact Object Headers(实验版) — 在 64 位架构上,将 HotSpot JVM 中的对象标头大小从 96 位和 128 位缩减至 64 位,帮助开发人员提高工作效率。这有助于减少堆大小、提高部署密度和增加数据局部性。
JEP 475:Late Barrier Extension for G1 — 通过将 G1 垃圾收集器屏障从早期的 C2 JIT 编译管道扩展切换到后期屏障扩展,这意味着如果该项操作在独立于平台的优化和寄存器分配之后发生,就可以降低开销,还可以帮助开发人员提高效率。通过简化 G1 垃圾收集器屏障的实施,此功能有助于提高 C2 生成的代码的效率、可理解性、可恢复性和质量。
JEP 483:Ahead-of-Time Class Loading & Linking — 在 HotSpot Java Virtual Machine 启动时,使应用的类在加载和链接状态下立即可用,从而帮助开发人员提高工作效率并缩短启动时间。此功能不需要使用 jlink 或 jpackage 工具,不需要对从命令行启动应用的方式进行任何更改,也不需要对应用、库或框架的代码进行任何更改。因此,该功能有助于为启动和预热时间的持续进步奠定基础。
JEP 490:ZGC: Remove the Non-Generational Mode — 通过删除 Z Garbage Collector (ZGC) 的非分代模式,帮助开发人员降低支持两种不同模式的维护成本。
JEP 491:Synchronize Virtual Threads without Pinning — 提高使用同步方法和语句的 Java 代码和库的可扩展性,帮助开发人员提高工作效率。该功能允许虚拟线程释放其底层平台线程,让开发人员能够访问更多的虚拟线程来管理其应用的工作负载。
源代码
JEP 404:Generational Shenandoah(实验版) — 通过实验性的分代收集功能增强 Shenandoah 垃圾收集器,以提高可持续吞吐量、负载峰值抵抗力和内存利用率,帮助开发人员提高工作效率。
JEP 479:Remove the Windows 32-bit x86 Port — 删除对 Windows 32 位 x86 端口的源代码和构建支持,简化了 JDK 的构建和测试架构,帮助开发人员提高效率。
JEP 501:Deprecate the 32-bit x86 Port for Removal — 弃用 32 位 x86 端口,以便能够在接下来的版本中删除该端口,帮助开发人员提高工作效率。开发人员无需实施 32 位 x86 回退,即可访问需要特定平台支持的新功能。
此外,通过引入安全的现代化特性,同时逐渐弃用和删除不安全的特性,Oracle 强调致力于保持 Java 的完整性并遵循软件开发优秀实践。从公告获悉,Oracle 即将在接下来的 Java 版本中删除这三个特性:
JEP 472:Prepare to Restrict the Use of JNI;
JEP 486:Permanently Disable the Security Manager;
JEP 498:Warn upon Use of Memory-Access Methods in sun.misc.Unsafe。
该内容转自IT之家
本文共 2110 个字数,平均阅读时长 ≈ 6分钟