Oracle正式发布 Java 22

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 的特性

· JEP 447:Statements before super(…) — 支持开发人员自由地表达构造器的行为。对于未引用正在创建的实例的语句,该语句也可以在调用显式构造器之前出现,让开发人员可以更自然地放置逻辑。该逻辑需要纳入辅助静态方法、辅助中间构造器或构造器参数中。该特性还将延续现有保证,即允许构造器在类实例化期间按自上而下的顺序运行,以帮助确保子类构造器中的代码不会干扰超类实例化。此外,此特性不需要对 Java Virtual Machine (JVM) 进行任何更改,并且仅依赖于 JVM 的当前能力来验证和执行在构造器中显式调用之前显示的代码。

· JEP 456:Unnamed Variables & Patterns — 通过未命名的变量和模式来增强 Java 语言。在必须使用变量声明或嵌套模式,但又从未使用过的情况下,开发人员可以使用这些变量和模式来提高生产力。这种方法可以减少出错的机会,提高记录模式的可读性,并提高代码的可维护性。

· JEP 459:String Templates(第二预览版)— 使包含运行时计算值的字符串更容易表达,简化 Java 程序的开发工作,同时提高将用户提供的值编写成字符串,并将字符串传递给其他系统的程序的安全性。此外,该特性还可提高参杂了表达式和文本的可读性,创建通过文字文本和嵌入表达式计算的非字符串值,而无需通过中间字符串表示形式传递。

· JEP 463:Implicitly Declared Classes and Instance Main Methods(第二预览版)— 通过 Java 编程入门教程,学生无需了解为大型程序而设计的语言功能,即可顺利编写第一个程序,加快了上手速度。通过此特性,教育工作者可以循序渐进地介绍概念,学生也可以编写简化的单类程序声明,并随着个人技能的提升,无缝扩展程序并使用更高级的功能。

Project Loom 的特性

· JEP 462:Structured Concurrency(第二预览版)— 通过引入用于结构化并发的 API,帮助开发人员简化错误处理和取消,并提高可观测性,进而鼓励更多人选择并发编程。该编程风格可以消除因取消和关闭而产生的常见风险,例如线程泄漏和取消延迟,以此提高并发代码的可观测性。

· JEP 464:Scoped Values(第二预览版)— 支持开发人员在线程内和线程之间共享不可变数据,从而提高项目的易用性、可理解性、性能和稳健性。

Project Panama 的特性

· JEP 454: Foreign Function & Memory API — 新推出的 API 使 Java 程序更容易与 Java 运行时之外的代码和数据互操作,从而帮助开发人员提高易用性、灵活性、安全性和性能。通过有效调用外部函数(即 Java Virtual Machine (JVM) 之外的代码),以及安全地访问外部内存(即不受 JVM 管理的内存),这个新的 API 支持 Java 程序在无需 Java Native Interface 的情况下调用本地库和处理原生数据。

· JEP 460:Vector API (七次孵化阶段)— 引入 API来表达向量计算,在运行时可靠地编译为支持的 CPU 架构上的向量指令,使开发人员获得优于等效标量计算的性能。

核心库和工具功能

· JEP 457:Class-File API(预览版)— 通过提供用于解析、生成和转换 Java 类文件的标准 API,帮助开发人员提高工作效率。

· JEP 458:Launch Multi-File Source-Code Programs — 支持开发人员通过增强 Java 应用启动器,选择是否以及何时需要配置构建工具,从而运行作为多个 Java 源代码文件提供的程序。

· JEP 461:Stream Gatherers(预览版)— 通过增强 Stream API 来支持自定义中间操作,让流管道能以比现有内置中间操作更轻松的方式转换数据,从而帮助开发人员提高工作效率。此特性能够使流管道更灵活、更具表达力,允许自定义中间操作处理大小不限的流,帮助开发人员高效读取、写入和维护 Java 代码。

性能更新

· JEP 423: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 运行时和应用。有关 Java 22 特性的更多信息,请阅读 Java 22 技术博客文章。

云技术创新赋能全球 Java 生态系统

OCI 是率先支持 Java 22 的超大规模云技术之一,部署在 OCI 中的 Java 可提供出色的性能、效率和创新。通过在 OCI 上免费提供 Oracle Java SE、Oracle GraalVM 和 Java SE Subscription Enterprise Performance Pack,Java 22 助力开发人员构建和部署速度更快、更出色且优化性价比的应用。

Oracle Java Universal SE Subscription 是一个按量计费产品,可为客户提供优秀的支持服务。该产品提供对整个 Java 产品组合的支持、GraalVM 授权、Java SE Subscription Enterprise Performance Pack、Java Management Service 增强功能以及按业务计划进行升级的灵活性,有助于 IT 组织管理复杂性、控制成本并降低安全风险。

JavaOne 将于 2025 年回归

全球 Java 社区的旗舰活动 JavaOne 将于 2025 年重返美国旧金山湾区。JavaOne 2025 将于 2025 年 3 月 17 日至 20 日在加利福尼亚州红木海岸举行,参会者将有机会了解Java 开发并与 Oracle 的 Java 专家和行业人士互动。欲了解更多信息,请访问Inside Java 博客文章。

TJC 社区负责人 Evren Tan 表示:“在 Türkiye Java Community (TJC) 的动态生态系统中,Oracle 的持续支持推动了我们的发展。随着 Java 22 的推出,我们可以使用一系列的现代化功能,进一步提高开发人员效率,加强我们对在土耳其发展 Java 技术的承诺。我们也欢迎全球的 Java 开发人员参加 TJC 的活动,共同培养友好的社区精神,助力 Java 蓬勃发展。”

xHub 创始人兼首席信息官 Badr El Hourari 表示:“Java 将作为一种热门的编程语言、平台和开发人员社区,在摩洛哥和非洲地区持续发展。在 Java 22 中,我很高兴看到 Oracle Java 团队专注于创新,通过 JEP 463 等增强功能帮助新的开发人员更快地上手 Java。对新一代程序员来说,经过简化后的 Java 语言降低了门槛。同时,在摩洛哥,我们将在年度 Devoxx 摩洛哥会议上继续强调 Java 的重要性,欢迎所有开发人员踊跃参加今年10月2-4日的活动,听 Java 社区中的全球高影响力人物分享真知灼见。”

JetBrains 的 Java 开发人员倡导者 Mala Gupta 表示:“Java 22 捆绑包特性让我感到惊叹,该产品的受众面很广泛,包括了从学生到高级开发人员,再从爱探险的 Java 爱好者到追求性能稳定的组织。Java 采用了极简主义理念,持续通过实例主要方法和隐式类来简化编写初始代码的‘仪式’,让大家可以更轻松地开始学习 Java。通过重塑构造器 (statements before super[…]),Java 再次证明了其对负责任的创新的支持,在不破坏现有的代码的情况下,放宽了自 Java 1.0 版本以来的语言约束,这一点非常令人兴奋。IntelliJ IDEA 2024.1 已准备好支持 Java 22 的特性,以便 Java 开发人员可以轻松使用这些功能。”

甲骨文公司企业云原生Java工程副总裁 Tom Snyder 表示:“虚拟线程一经发布,Helidon 团队就意识到了它们的价值。借助 Helidon 4,该团队重写了 Helidon Web 服务器,以原生使用虚拟线程,从而提高了性能和开发人员的生产力。有了 Java 22,我们看到虚拟线程再一次实现了性能提升,让所有 Helidon 用户都可以从显著的进步中受益。”

Oracle 产品管理总监 Kuassi Mensah 表示:“与Java 创新的无缝集成正在帮助 Oracle 数据库提供世界上先进的数据库技术,用于开发和运行现代应用。Oracle Java Database Connectivity (JDBC) 驱动程序已被重写,可以无缝支持 Java 虚拟线程。 Java 虚拟线程与 Oracle Database 23c 中新的管道数据库操作的结合有助于提高 Java 应用程序端到端的可扩展性。”