程序员不得不了解的Java 23

    随着 Java 于 2024 年 9 月 17 日实施其第 23 个主要版本,开发人员将享受到许多新功能和改进。Oracle 的最新版本有望使开发更加高效和愉快,同时增强平台的性能、稳定性和安全性。让我们深入了解开发人员在 Java 23 中应该感到兴奋的关键方面。

52aa90ec8f3eb308d7cf974abfc9983d.png

六个月的发布节奏仍在继续

    Oracle 坚持其 6 个月的 Java 发布周期,现在已经是第七个年头了。这种方法成功地为 Java 生态系统提供了定期更新和创新。长期支持 (LTS) 版本每两年发布一次,为喜欢不频繁更新的企业提供稳定性。Java 23 是这六个月周期中的第 14 个版本。

Java 23 中的关键主题

Java 23 侧重于几个关键领域:

  1. 语言改进

  2. 库增强功能

  3. 工具更新

  4. 运行时优化

  5. 完整性功能

    该版本提供了 12 个针对这些主题的 JDK 增强提案 (JEP)。让我们更详细地探讨这些领域中的每一个。

1. 语言改进

    Java 23 继续发展语言本身,专注于使 Java 更易于小型程序和脚本访问,同时保持其在大型应用程序中的优势。

Patterns、instanceof 和 switch 中的基元类型(预览版):JEP 455

    此功能旨在通过使语言更加统一和富有表现力来提高 Java 编程效率。它消除了模式匹配、实例和 switch 语句中对基元类型的限制,通过允许在所有上下文中使用基元类型模式来增强模式匹配。

模块导入声明(预览版):JEP 476

    此功能使开发人员能够快速轻松地导入模块导出的所有包,而无需将导入代码位于模块中。这简化了模块化库的重用,并帮助初学者更轻松地使用第三方库和基本 Java 类。

隐式声明的类和实例主方法(第三次预览):JEP 477

    此功能不断发展,为 Java 编程提供了平稳的入口。它允许学生和开发人员编写他们的第一个程序,而无需了解为大型程序设计的语言功能。例如,您现在可以编写:

void main() {


    System.out.println("Hello, World!");


}

    此更改消除了在简单程序中对显式类声明和访问修饰符的需要,使 Java 更易于初学者使用,对于处理小型脚本的经验丰富的开发人员来说也更方便。

灵活的构造函数主体(第二次预览):JEP 482

    此功能允许语句出现在显式构造函数调用(例如 or )之前。这为开发人员提供了更大的自由来表达构造函数的行为,并保留了构造函数在类实例化期间以自上而下的顺序运行的现有保证。super(..)this(..)

2. 库增强功能

Java 23 包括几个重要的库更新:

类文件 API(第二预览版):JEP 466

    这为解析、生成和转换 Java 类文件提供了一个标准 API,帮助开发人员提高涉及字节码操作的任务的工作效率。

Vector API(第八个培养箱):JEP 469

    此 API 允许开发人员表达向量计算,这些计算在运行时可靠地编译为受支持的 CPU 架构上的向量指令,与等效的标量计算相比,有可能实现卓越的性能。

流收集器(第二次预览版):JEP 473

    Stream API 的这一增强功能支持自定义中间操作,允许流管道以现有内置中间操作无法轻松实现的方式转换数据。这使得流管道更加灵活和富有表现力。

结构化并发(第三预览版):JEP 480

    此功能引入了一个用于结构化并发的新 API,旨在简化多线程编程。它将在不同线程中运行的相关任务整合到一个工作单元中,有助于消除因取消和关闭而产生的常见风险。

范围值(第三个预览版):JEP 481

此功能支持在线程内部和线程之间共享不可变数据,旨在提高并发程序的易用性、可理解性、性能和健壮性。

3. 工具更新

Markdown 文档注释:JEP 467

    此功能使 Javadoc 文档注释能够用 Markdown 编写,而不仅仅是用 HTML 和 Javadoc @-tag 编写。此更改使开发人员可以更轻松地以源形式编写和阅读 API 文档注释。

4. 运行时优化

ZGC:默认分代模式:JEP 474

    Java 23 将 Z 垃圾回收器 (ZGC) 的默认模式切换到分代模式。此更改减少了支持两种不同模式所需的资源和维护成本,并有望提高许多应用程序的效率。

Graal JIT 编译器集成

    从 Java 23 开始,Oracle 将 Graal JIT 编译器作为 Oracle JDK 中的一个选项包含在内。这种集成使开发人员能够在 JIT 编译器之间轻松切换,从而有可能为某些工作负载获得性能优势,尤其是那些需要更快启动时间的工作负载。

5. 完整性功能

弃用 sun.misc.unsafe 中的 memory-access 方法以删除:JEP 471

    此更改可帮助开发人员了解其应用程序何时直接或间接依赖于 中的内存访问方法,这些方法计划在将来的发行版中删除。这是 Oracle 为提高 Java 平台的安全性和完整性而不断努力的一部分。sun.misc.Unsafe

Java 和 AI

虽然并非 Java 23 所特有,但值得注意的是 AI 在 Java 生态系统中的重要性日益增加。Oracle 概述了 Java 和 AI 的三管齐下战略:

  1. 与企业数据和云服务的集成包括 OCI AI 服务和适用于 Java 的 OCI SDK。

  2. 使 Java 平台更适合原生 AI 涉及原生 Java 框架,例如 Tribuo、LangChain4j 和 CoreNLP。

  3. 将业务逻辑连接到原生 AI 库:这是通过 Panama 和 GraalPy 等项目实现的。

    Java 的许多正在进行的项目(例如 Valhalla 项目和 Panama 项目)与 AI 和机器学习工作负载的需求非常吻合。这些项目旨在通过值类型、更好的原生互操作性和矢量 API 来提高 Java 的性能,所有这些都对 AI 开发至关重要。

Java 管理服务和 Oracle Java SE 通用订阅

    除了 Java 23,Oracle 还发布了 Java 管理服务 (JMS) 9.0,这是一项 Oracle 云基础设施 (OCI) 原生服务,可提供统一的控制台和仪表盘来帮助组织在本地或任何云中管理 Java 运行时和应用。

    Oracle Java SE 通用订阅提供同类最佳的支持,包括对整个 Java 产品组合的分类支持、对 Oracle GraalVM 的授权、Java SE 订阅企业性能包、对 JMS 高级特性的访问以及根据客户业务节奏进行升级的灵活性。

展望未来:JavaOne 2025

    Oracle 宣布 JavaOne 回归,这是全球 Java 社区的旗舰活动。JavaOne 2025 将于 2025 年 3 月 17 日至 20 日在加利福尼亚州 Redwood Shores 举行。该活动将使开发人员能够了解最新的 Java 开发成果,并与 Oracle 的 Java 专家和行业杰出人士互动。

这对开发人员意味着什么

    Java 23 代表了该语言和平台向前迈出的重要一步。以下是开发人员应牢记的事项:

  1. 简化编码:隐式声明的类和实例 main 方法等功能将使编写小型 Java 程序和脚本变得更加容易。

  1. 提高性能:通过 ZGC 改进和 Graal JIT 编译器的集成,应用程序可以期待更好的性能和更可预测的行为。

  1. 增强的工具:Markdown 对文档的新支持和对开发工具的持续改进将使 Java 的使用变得更加容易。

  1. 平台完整性:虽然弃用不安全的 API 可能需要一些代码调整,但最终会带来更安全、更稳定的平台。

  1. AI 就绪性:Java 的持续改进使其成为 AI 和机器学习工作负载越来越可行的平台。

  1. 更好的库支持:Stream API 的增强功能和 Vector API 的引入为开发人员提供了更强大的工具。

  2. 改进的并发性:结构化并发和范围值功能(尽管仍处于预览阶段)有望使 Java 中的并发编程更易于管理且不易出错。

 

    Java 23 延续了该语言深思熟虑的进化传统,在创新与兼容性之间取得平衡。这些新功能和改进表明了 Oracle 致力于在不断变化的技术环境中保持 Java 的相关性和影响力。无论您是在开发大型企业应用程序、小型脚本还是尖端 AI 项目,Java 23 都能为每位 Java 开发人员提供有价值的东西。

    自 2024 年 9 月 17 日发布日期起,我们鼓励开发人员试用预览版,提供有关新功能的反馈,并为即将到来的更改准备其代码库。Java 23 融合了创新与稳定性,将成为世界上最流行的编程语言之一发展过程中的另一个重要里程碑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨曦_子画

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值