Oracle 正式发布 Java 21,这是备受欢迎的编程语言和开发平台推出的全新版本。Java 21 (Oracle JDK 21) 在性能、稳定性和安全性方面进行了诸多改进,包括进一步优化平台的增强功能,以帮助开发人员提高工作效率,推动企业创新。
Java 21亮相甲骨文全球云大会,提供15个JDK增强建议,可有效改善Java语言并增强平台的性能、稳定性和安全性
甲骨文公司 Java 平台开发高级副总裁兼 OpenJDK Governing Board 主席 Georges Saab 表示:“Java 一直是全球企业乃至数百万名个人用户所选择的语言和平台,赋予开发人员构建新一代强大、可扩展且安全的应用的能力。Java 21 全新的增强功能可支持开发人员更快地构建应用。此外,商业支持有至少八年,客户能够按照自己的步伐进行迁移。”
全新版本的 Java 开发工具包 (JDK) 提供 15 个 JDK 增强建议 (JEPs) 的更新和改进。JDK 21 将提供来自 OpenJDK Project Amber 的语言改进(String Templates、Record Patterns、Pattern Matching for Switch、Unnamed Patterns and Variables 以及Unnamed Classes 和 Instance Main Methods);来自 Project Panama 的增强功能(Foreign Function 和 Memory API 以及 Vector API);有关 Project Loom的功能(Virtual Threads、Scoped Values 和 Structured Concurrency);以及维护和弃用功能(Deprecate the 32-bit x86 Port for Removal 以及 Prepare to Disallow the Dynamic Loading of Agents)。
RedMonk 首席分析师兼联合创始人 Stephen O'Grady 表示:“现在,尽管市面上有那么多流通的语言,但 Java 仍然无处不在。随着世界的发展,Java 的适应能力将发挥重要作用,继续为开发人员提供价值。”
Oracle 将为 Java 21 提供至少八年的长期支持。延长支持期可为企业提供一定的灵活性,在将应用保留在生产环境中时尽可能减少维护工作量,并按企业自己的方式来进行迁移。根据客户反馈和 Java 生态系统中的使用情况,Oracle 决定将 Java 11 长期支持延长至 2032 年 1 月,这意味着支持和更新服务时间增加了至少 8 年。
Java 21 提供的重要更新包括:
Project Loom 的功能
· JEP 444:Virtual Threads — 通过向 Java 平台引入轻量级虚拟线程,显著减少编写、维护和观察高吞吐量并发应用的工作量。虚拟线程让开发人员可以轻松使用现有的 JDK 工具和技术,对并发应用进行故障排除、调试、分析以及扩展,进而加快应用开发速度。
· JEP 446:Scoped Values(预览版)— 支持用户在线程内和跨线程共享不可变数据。这可提高开发项目的易用性全面性、可靠性和性能。
· JEP 453:Structured Concurrency(预览版)— 通过引入结构化并发的 API 来简化并发编程,有助于推广并发编程风格,消除取消和关闭所带来的常见风险(例如线程泄漏和取消延迟),并提高并发代码的可观测性。这可帮助开发人员简化错误处理和取消工作,并提高可靠性和可观测性。
性能更新
· JEP 439:Generational ZGC — 扩展 Z Garbage Collector (ZGC) 来区分新旧对象的层代,以提高应用性能。GenerationalZGC 可以减少应用所需的堆内存和垃圾收集 CPU 的间接费用,并降低分配停滞的风险,有助于提高开发人员的工作效率。
语言更新和改进
· JEP 430:String Templates(预览版)— 通过使包含运行时计算值的字符串更容易表达,简化 Java 程序的开发工作,并提高将用户提供的值编写成字符串,并将字符串传递给其他系统的程序的安全性。此外,该特性还可增强参杂了表达式和文本的表达式的可读性,创建通过文字文本和嵌入表达式计算的非字符串值,而无需通过中间字符串表示形式传递。通过提高 Java 语言的可读性、可写性和可维护性,开发人员的工作效率也将随之提升。
· JEP 440: Record Patterns(第三预览版)— 扩展模式匹配以解构记录类的实例,并支持添加嵌套模式,以此增强 Java 语言。这有助于开发人员扩展模式匹配,以实现更复杂和可定制的数据查询,从而提高工作效率。
· JEP 441:Pattern Matching for Switch — 支持在案例标签中显示模式,进而增强 switch 表达式和语句的表达性和适用性。此外,要求模式switch 语句包含所有可能的输入值,以提高 switch 语句的安全性;确保所有现有的 switch 表达式和语句都可以继续编译而不进行任何更改,并使用相同的语义执行。这将使 Java 语言更加语义化,以简洁、安全的方式表达面向数据的复杂查询,有助于开发人员简化项目并提高项目的可靠性。
· JEP 443:Unnamed Patterns and Variables(第三预览版)— 启用未命名模式,无需设置组件的名称或类型即可匹配记录组件,并支持可初始化但未被使用的未命名变量,以此增强Java 语言。这有助于提高记录模式的可读性以及所有代码的可维护性,进而简化开发过程。
· JEP 445:Unnamed Classes and Instance Main Methods(预览版)— 简化并提高 Java 语言的可访问性,让教育工作者可以循序渐进地讲解编程的概念。避免向初学者介绍不同的 Java 方言和工具链,并使用支持任何 Java 程序的工具来整合和运行学生程序,进而帮助学生以简洁的方式编写基础程序,并随着技能的提升,写出更好的代码。学生开发人员无需了解为大型程序设计的语言功能,即可编写他们的第一个程序,提高了工作效率。
Project Panama 预览版特性
· JEP 442: Foreign Function & Memory API(第三预览版)— 新推出的 API 使Java 程序更容易与 Java 运行时之外的代码和数据进行互操作。通过有效调用外部函数(即 Java Virtual Machine [JVM] 之外的代码),以及安全地访问外部内存(即不受JVM 管理的内存),这个新的 API 支持 Java 程序在无需 Java Native Interface 的情况下调用本地库和处理原生数据,从而为开发人员提高了易用性、灵活性、性能和安全性。
· JEP 448:Vector API (六次孵化阶段)— 新推出的 API 允许以一种在运行时,可靠地编译为支持的 CPU 架构上的向量指令方式表达向量计算,为开发人员提供能够清晰和简洁地表达各种矢量计算的API,进而提高项目性能。
Java 21 是Oracle 工程师与全球 Java 开发人员社区成员通过 OpenJDK 社区 和 Java Community Process (JCP) 共同合作的成果。Java21 除了推出了新的增强功能,也获得 Java Management Service (JMS) 的支持,这是一项新的 Oracle 云基础设施远程软件服务(Oracle Cloud Infrastructure, OCI)原生服务,提供统一的控制台和仪表盘,帮助企业管理本地或云端的 Java 运行时和应用程序。
云技术创新赋能全球 Java 生态系统
部署在 OCI 中的 Java 可提供出色的性能、效率和创新,而 OCI 也是率先支持 Java21 的大规模云技术平台。通过在 OCI 上运行 Java,企业上下都可以享有优势,包括降低运营成本,无需支付额外费用即可提高性能,以及对现有 Java 应用进行现代化或利用新的特性和功能来构建新应用。OracleJava SE、Oracle Graal VM 和 Java SE Subscription Enterprise Performance Pack 通过OCI 免费为客户提供服务,助力开发人员构建和部署速度更快、更出色且经过优化的应用。
Oracle Java Universal SE Subscription 是一种按量计费产品,为客户提供优质的服务,包括对整个Java 产品组合的分类支持,GraalVM 授权、Java SE Subscription Enterprise Performance Pack、访问 Java Management Service 增强功能以及按业务计划进行升级的灵活性。这有助于 IT 组织管理复杂性、控制成本并降低安全风险。
全球 Java 社区喜迎 Java 21
Agile Developer创始人 Venkat Subramaniam 博士表示:“Java21 是 Java 非常重要的版本之一,虚拟线程将改变我们开发和部署异步应用的方式,其中包括从微服务到企业应用。开发人员只需进行少量的编码工作,就可以扩展所开发的应用,以支持大量IO 操作和服务调用,并且不会产生不当的资源需求。对于在生产环境中依赖 Java 的企业而言,能够以更低的成本扩展规模是一大优势。”
美国德鲁大学(Drew University)教授 Barry Burd 表示:“我对 Java21 中的 'Unnamed Classes and Instance Main Methods' 预览功能感到很激动。在我的概况课程中,学生可以快速、轻松地开始学习。在我的书中,我可以提供完整的例子,而不是样板代码。特别是这些新功能与Java 的总体设计理念相呼应。未命名的类将加入未命名的程序包和模块表的行列,而且还可以向后兼容。”
Java Champion 获奖者 Jeanne Boyarsky 表示:“Java 21 的顺序集合 (sequenced collections) 功能,对开发人员社区而言是重要的补充。开发人员再也不需要担心依赖JUnit 测试中的出现顺序 (encounter order),他们只需在构建服务器、升级或其他地方寻找问题源头。顺序集合将能够定义顺序— 这意味着不会出现意外状况。”
Java Playground 和社区贡献合力扩展 Dev.java
Dev.java 是面向 Java 开发人员的官方网站。Oracle 将在内容目录中再添加 Java Playground 和新的社区贡献。
Java Playground 是一个在线沙盒,无需本地运行时或 IDE 即可键入和运行小型Java 代码片段。现在,开发人员可以通过浏览器,快速试用由 OCI 提供支持的 Java 21 中的新功能。
Dev.java 提供了由Oracle Java 团队精心准备的数百个高质量 Java 教程,适合所有技能级别的开发人员。Dev.java 也通过 Java GitHub 组织内部一个新的公共存储库接受社区贡献。
开发人员可以享有众多业界名人的社区贡献,其中包括 Venkat Subramaniam 博士、Cay Horstmann、Jeanne Boyarsky、Heinz Kabutz、Paul Anderson 以及 Gail Anderson 等人。
(8334426)