JDK 23(Java Development Kit 23)是Oracle发布的Java编程语言和开发平台的最新版本,它包含了多项新特性和改进,旨在提高开发人员的生产力,推动创新,并增强平台的性能、稳定性和安全性。
主要新特性
模块导入声明(JEP 476):
- 简化了模块化库的重用,允许开发者更简洁地导入整个模块,而无需逐一声明每个包。
- 有助于初学者更容易地使用第三方库和基本的Java类。
流收集器(JEP 473):
- 在JDK 22中首次预览,此次在JDK 23中进行了第二次预览。
- 增强了流API,支持自定义中间操作,使得流管道在处理数据时更加灵活和可表达。
结构化并发(JEP 480):
- 在JDK 23中进行第三次预览,旨在简化并发编程。
- 通过将不同线程中的相关任务作为单一工作单元来处理,结构化并发可以改进错误处理和取消操作,提高代码的可靠性和可观察性。
灵活的构造函数体(JEP 482):
- 在JDK 23中进行第二次预览。
- 允许在显式调用构造函数之前初始化字段,使得构造函数的逻辑表达更为自然,同时保证构造函数在类实例化时按自上而下的顺序运行。
Markdown文档注释(JEP 467):
- 允许JavaDoc文档注释使用Markdown语法。
- 使得API文档注释的编写和阅读更加简洁易懂,并扩展了编译器树API,以便其他工具可以处理Markdown内容。
Z垃圾收集器默认模式切换(JEP 474):
- 将Z垃圾收集器的默认模式切换为分代模式。
- 通过更频繁地收集年轻对象,提升了Java应用程序的性能。非分代模式将被弃用,以便未来专注于分代ZGC的发展。
向量API(JEP 469):
- 在JDK 23中继续孵化,目标是提供一个清晰简洁的API,在运行时可靠地编译为最佳向量指令。
- 旨在支持x64和AArch64架构,并与Valhalla项目保持一致。
类文件API(JEP 466):
- 提供了跟踪Java虚拟机规范中定义的类文件格式的API。
- 增加了对类签名模型的改进,使其能够更准确地建模超类和超接口的泛型签名。
模式匹配增强(JEP 455):
- 允许在所有模式上下文中使用原始类型模式,并扩展instanceof和switch以处理所有原始类型。
- 增强了模式匹配的能力,提供了易于使用的结构,消除了由于不安全的类型转换而丢失信息的风险。
其他特性
弃用sun.misc.Unsafe中的内存访问方法(JEP 471):
- 这些方法之前被用于直接访问内存,在未来的版本中将它们移除。
- 鼓励开发者迁移到VarHandle API和外部函数及内存API,为未来的JDK版本做好了准备。
作用域值(JEP 481):
- 提供了在线程内和跨线程共享不可变数据的方式。
- 简化了线程局部变量的使用,降低了空间和时间成本,提高了程序的可读性和效率。
隐式声明的类和实例主方法(JEP 477):
- 第三次预览,简化初学者编写第一个程序的学习曲线。
字符串模板和super(...)前声明语句:
- 简化了包含运行时计算值的字符串表达。
- 允许开发者在构造函数中表达更自由的行为。