Oracle 正式发布 JAVA 22,这是备受欢迎的编程语言和开发平台推出的全新版本。Java 22 (Oracle JDK 22) 在性能、稳定性和安全性方面进行了数千种改进,包括对Java 语言、其API 和性能,以及 Java 开发工具包 (JDK) 中工具的增强功能,以帮助开发人员提高工作效率,推动企业加速创新和发展。
+ + + + +
甲骨文公司 Java 平台高级副总裁兼 OpenJDK 管理委员会主席 Georges Saab表示:
Java 22 新的增强功能让更多开发人员能够快速、轻松地构建和交付功能丰富、可扩展且安全的应用,从而帮助全球各地的组织发展业务。这些增强功能可以简化应用开发,扩大 Java 的覆盖范围,以供不同技术水平的开发人员访问,帮助组织和开发人员创建各种新的应用和服务。
全新版本的 JDK 更新和改进了 12 项 JDK 增强建议 (JEPs) 。JDK 22 将提供 OpenJDK Project Amber 的语言改进 (Statements before super[…]、Unnamed Variables & Patterns、String Templates 以及 Implicitly Declared Classes 和 Instance MAIn Methods);Project Panama 的改进 (Foreign Function 以及 Memory API 和 Vector API);有关 Project Loom 的特性 (Structured Concurrency 和 Scoped Values);核心库和工具功能 (Class-File API、Launch Multi-File Source-Code Programs、Stream Gatherers) 以及性能更新 (Region Pinning for G1)。
IDC 软件开发研究副总裁 Arnal Dayaratna 表示:
经过近三十年发展,Java 能够支持各种用例的复杂开发任务,这种能力让该平台变得十分重要。Java 的多功能性和全面的工具集使其能够大规模支持生产级关键任务应用的开发,因此成为了生成式 AI 等创新用例的关键支持技术。
Java 22 提供的重要更新包括:
Project Amber 的特性
Statements before super(…) — 支持开发人员自由地表达构造器的行为。对于未引用正在创建的实例的语句,该语句也可以在调用显式构造器之前出现,让开发人员可以更自然地放置逻辑。该逻辑需要纳入辅助静态方法、辅助中间构造器或构造器参数中。该特性还将延续现有保证,即允许构造器在类实例化期间按自上而下的顺序运行,以帮助确保子类构造器中的代码不会干扰超类实例化。此外,此特性不需要对 Java Virtual machine (JVM) 进行任何更改,并且仅依赖于 JVM 的当前能力来验证和执行在构造器中显式调用之前显示的代码。
Unnamed Variables & Patterns — 通过未命名的变量和模式来增强 Java 语言。在必须使用变量声明或嵌套模式,但又从未使用过的情况下,开发人员可以使用这些变量和模式来提高生产力。这种方法可以减少出错的机会,提高记录模式的可读性,并提高代码的可维护性。
String Templates(第二预览版)— 使包含运行时计算值的字符串更容易表达,简化 Java 程序的开发工作,同时提高将用户提供的值编写成字符串,并将字符串传递给其他系统的程序的安全性。此外,该特性还可提高参杂了表达式和文本的可读性,创建通过文字文本和嵌入表达式计算的非字符串值,而无需通过中间字符串表示形式传递。
Implicitly Declared Classes and Instance Main Methods(第二预览版)— 通过 Java 编程入门教程,学生无需了解为大型程序而设计的语言功能,即可顺利编写第一个程序,加快了上手速度。通过此特性,教育工作者可以循序渐进地介绍概念,学生也可以编写简化的单类程序声明,并随着个人技能的提升,无缝扩展程序并使用更高级的功能。
Project Loom 的特性
Structured Concurrency(第二预览版)— 通过引入用于结构化并发的 API,帮助开发人员简化错误处理和取消,并提高可观测性,进而鼓励更多人选择并发编程。该编程风格可以消除因取消和关闭而产生的常见风险,例如线程泄漏和取消延迟,以此提高并发代码的可观测性。
Scoped Values(第二预览版)— 支持开发人员在线程内和线程之间共享不可变数据,从而提高项目的易用性、可理解性、性能和稳健性。
Project Panama 的特性
Foreign Function & Memory API— 新推出的 API 使 Java 程序更容易与 Java 运行时之外的代码和数据互操作,从而帮助开发人员提高易用性、灵活性、安全性和性能。通过有效调用外部函数(即 Java Virtual Machine (JVM) 之外的代码),以及安全地访问外部内存(即不受 JVM 管理的内存),这个新的 API 支持 Java 程序在无需 Java Native Interface 的情况下调用本地库和处理原生数据。
Vector API (七次孵化阶段)— 引入 API来表达向量计算,在运行时可靠地编译为支持的 CPU 架构上的向量指令,使开发人员获得优于等效标量计算的性能。
核心库和工具功能
Class-File API(预览版)— 通过提供用于解析、生成和转换 Java 类文件的标准 API,帮助开发人员提高工作效率。
Launch Multi-File Source-Code Programs — 支持开发人员通过增强 Java 应用启动器,选择是否以及何时需要配置构建工具,从而运行作为多个 Java 源代码文件提供的程序。
Stream Gatherers(预览版)— 通过增强 Stream API 来支持自定义中间操作,让流管道能以比现有内置中间操作更轻松的方式转换数据,从而帮助开发人员提高工作效率。此特性能够使流管道更灵活、更具表达力,允许自定义中间操作处理大小不限的流,帮助开发人员高效读取、写入和维护 Java 代码。
性能更新
Region Pinning for G1 — 在原本需要暂停收集器的本机库调用期间,允许进行某些资源回收,有助于减少延迟。其中的原理是,在本机库调用期间,对需要禁止的对象以及仅“固定”包含这些对象的区域进行跟踪。如此一来,即使是在原本会禁止本机库调用的期间,未固定的区域也可以继续正常进行资源回收。
Java 22 是 Oracle 与全球 Java 开发人员社区成员通过 OpenJDK 社区 和 Java Community Process (JCP) 共同合作的成果。
Java 22 除了推出了新的增强功能和特性,也获得 Java Management Service (JMS) 的支持,这是一项新的Oracle 云基础设施远程软件服务 (Oracle Cloud Infrastructure, OCI) 原生服务,提供统一的控制台和仪表盘,帮助企业管理本地或云端的 Java 运行时和应用。
*注:为免疑义,本新闻所用以下术语专指以下含义:
1. Oracle 专指 Oracle 境外公司而非甲骨文中国。
2. 相关 Cloud 或云术语均指代 Oracle 境外公司提供的云技术或其解决方案。