Java 23 发布,一文了解全部新特性
Java 23 发布,一文了解全部新特性
最近 Oracle 发布了Java 编程语言和虚拟机的最新版本:Java 23。作为 Java 21 之后的第一个非 LTS 版本,最终的JEP 特性共有 12 个。
通过 Project Amber 提供的语言特性
JEP 455:Primitive Types in Patterns, instanceof, and switch(预览版)
通过使语言更加统一且更具表达能力,帮助提高 Java 编程的工作效率。通过消除与开发人员在使用模式匹配、instanceof 和 switch 时遇到的基元类型限制,该 JEP 支持所有模式情景的基元类型模式,有助于增强模式匹配,并扩展 instanceof 和 switch,使其能够与所有基元类型一起使用。
JEP 476:Module Import Declarations(预览版)
开发人员可以轻松快速地导入由模块导出的所有程序包,无需将导入代码放到模块中,从而提高工作效率。这简化了所有开发人员对模块化库的重用,让初学者能够更轻松地使用第三方库和基本 Java 类,无需了解它们在程序包层次结构中的位置。
JEP 477:Implicitly Declared Classes and Instance Main Methods(第三预览版)
通过 Java 编程入门教程,学生无需了解为大型程序而设计的语言功能,即可顺利编写第一个程序,加快了上手速度和技能培养速度。有鉴于此,教育工作者和导师可以循序渐进地介绍概念,学生也可以编写简化的单类程序声明,并随着个人技能的提升,无缝扩展程序并使用更高级的功能。此外,经验丰富的 Java 开发人员也可以以简洁的方式编写小程序,无需使用为大型项目设计的工具。
JEP 482:Flexible Constructor Bodies(第二预览版)
允许语句在显式构造器调用之前出现,例如 super(..) 或 this(..),从而帮助开发人员提高工作效率。这些语句无法引用正在构建的实例,但在调用另一个构造器之前可以对其字段进行初始化,这使得方法被覆盖时,类会更加可靠。这不仅让开发人员有更大的自由来表达构造函数的行为,还能够延续现有保证,即允许构造器在类实例化期间按自上而下的顺序运行。
库
JEP 466:Class-File API(第二预览版)
通过提供用于解析、生成和转换 Java 类文件的标准 API,帮助开发人员提高工作效率。
JEP 469:Vector API (八次孵化阶段)
新推出的 API 允许以一种在运行时,可靠地编译为支持的 CPU 架构上的向量指令方式表达向量计算,帮助开发人员提高生产力。因此,开发人员可以实现优于等效标量计算的表现。
JEP 473:Stream Gatherers(第二预览版)
通过增强 Stream API 来支持自定义中间操作,让流管道以现有内置中间操作无法轻松实现的方式转换数据,从而帮助开发人员提高工作效率。此特性能够使流管道更灵活、更具表达力,允许自定义中间操作处理大小不限的流,帮助开发人员高效读取、写入和维护 Java 代码。
JEP 480:Structured Concurrency(第三预览版)
通过面向结构化并发的新 API 简化并发编程,帮助开发人员提高多线程代码的可维护性、可靠性和可观察性。通过将在不同线程中运行的相关任务组合并为单个工作单元,结构化并发可以消除因取消和关闭而产生的常见风险,例如线程泄漏和取消延迟。
JEP 481:Scoped Values(第三预览版)
支持开发人员在线程内和线程之间共享不可变数据,从而提高项目的易用性、可理解性、性能和稳健性。
性能和运行时更新
JEP 474:ZGC:Generational Mode by Default
通过将 Z Garbage Collector (ZGC) 的默认模式切换到层代模式,帮助开发人员提高效率,从而降低支持两种不同模式所需的资源和维护成本。
工具
JEP 467:Markdown Documentation Comments
通过启用 Javadoc 文档注释以 Markdown 编写而不是仅以 HTML 和 Javadoc @-tags 编写,帮助开发人员提高效率和生产力。通过在文档注释中使用 Markdown 语法以及 HTML 元素和 JavaDoc 标记,开发人员可以更轻松地以源形式编写和读取 API 文档注释,而不会对现有文档注释的解释产生不利影响。
管理职责
JEP 471:Deprecate the Memory-Access Methods in sun.misc.unsafe for Removal
通过帮助开发人员了解其应用何时直接或间接依赖于 sun.misc.Unsafe 中的内存访问方法,该方法计划在将来的版本中删除,从而为开发人员提供了简化的工具集。