Java Development Kit (JDK) 23 将于2024年9月17日发布,带来了11项新特性和改进,包括模块导入声明、流收集器、结构化并发和灵活的构造函数体的预览。
Java 23
模块导入声明JDK 23 引入了模块导入声明,简化了模块化库的重用。开发者可以更简洁地导入整个模块,而无需逐一声明每个包。这一特性有助于初学者更容易使用第三方库和基本的Java类。
流收集器流收集器在JDK 22中首次预览,此次在JDK 23中进行了第二次预览。该功能增强了流API,支持自定义中间操作,使得流管道在处理数据时更加灵活和可表达。
结构化并发结构化并发在JDK 23中进行第三次预览,旨在简化并发编程。通过将不同线程中的相关任务作为单一工作单元来处理,结构化并发可以改进错误处理和取消操作,提高代码的可靠性和可观察性。
灵活的构造函数体灵活的构造函数体在JDK 23中进行第二次预览。这个特性允许在显式调用构造函数之前初始化字段,使得构造函数的逻辑表达更为自然,同时保证构造函数在类实例化时按自上而下的顺序运行。
Markdown 文档注释JDK 23 引入了 Markdown 文档注释,允许JavaDoc文档注释使用Markdown语法。此改进使得API文档注释的编写和阅读更加简洁易懂,并扩展了编译器树API,以便其他工具可以处理Markdown内容。
Z 垃圾收集器(ZGC)JDK 23 将 Z 垃圾收集器的默认模式切换为分代模式。分代ZGC通过更频繁地收集年轻对象,提升了Java应用程序的性能。非分代模式将被弃用,以便未来专注于分代ZGC的发展。
向量API向量API在JDK 23中继续孵化,目标是提供一个清晰简洁的API,在运行时可靠地编译为最佳向量指令。向量API旨在支持x64和AArch64架构,并与Valhalla项目保持一致。
类文件API类文件API旨在提供一个跟踪Java虚拟机规范中定义的类文件格式的API,并最终移除JDK内部使用的ASM库的副本。此API增加了对类签名模型的改进,使其能够更准确地建模超类和超接口的泛型签名。
原始类型模式、instanceof和switch这一特性增强了模式匹配,允许在所有模式上下文中使用原始类型模式,并扩展instanceof和switch以处理所有原始类型。目标是提供易于使用的结构,消除由于不安全的类型转换而丢失信息的风险。
其他预览特性此外,JDK 23 还包括一些在 JDK 22 中预览的特性,如:
在 super(...) 前声明语句:允许开发者在构造函数中表达更自由的行为。字符串模板:简化了包含运行时计算值的字符串表达。作用域值:使得在跨线程之间共享不可变数据成为可能。派生记录创建和热代码堆提案:可能进一步减少应用程序的执行时间。未来展望Oracle 还透露了2024年Java的改进计划,涉及OpenJDK的多个项目,如Amber、Babylon和Valhalla,这些项目旨在提升Java的生产力和性能。Amber项目专注于开发较小的、提高生产力的特性;Babylon项目则扩展Java以支持如GPU等外部编程模型;Valhalla项目则旨在通过值对象增强Java对象模型,消除长期存在的性能瓶颈。
结语JDK 23 的新特性和改进反映了Java社区对简化开发、提高性能和增强可维护性的持续追求。从模块导入声明到结构化并发,再到更灵活的构造函数体和更强大的流API,Java开发者将能够利用这些工具和特性来构建更高效、更可靠的应用程序。未来,随着Java的不断演进,我们可以期待更多创新和改进,使Java继续保持其在现代编程语言中的领先地位。
还在用java8