OpenJDK 23 新特性介绍

OpenJDK 23 将于 2024 年 9 月 17 号正式发布。目前 JDK 23 处于 Rampdown Phase One 阶段。在这个阶段,JDK 23 的功能集已经被冻结,不再添加新的 JEP。GitHub 上已经创建了 JDK 23 的分支,接受 bug 修复。JDK 23 的 Early-Access 版本也已经提供了下载。

e325d3843992ad5b1c0fe3eff1c8501e.png

下面介绍一下 JDK 23 中的新特性。作为一个非 LTS 版本,JDK 23 中的功能以预览功能为主,只有少量正式功能。完整的 JEP 列表见下图。

1e4e73d546aa2b71631b55bf0c9d77a4.png

首先介绍 JDK 23 中新增的功能。

第一个是在模式匹配中使用 Java 的基本类型,允许基本类型出现在全部的模式上下文中,包括类型模式,instanceof 和 switch 中。这是一个预览功能。

下面是一些代码示例。

基本类型作为类型模式出现在 instanceof 中。

if (i instanceof byte b) {
    
}

在 switch 中使用 long、float 和 boolean 类型。

long v = ...;
switch (v) {
    case 1L              -> ...;
    case 2L              -> ...;
    case 10_000_000_000L -> ...;
    case 20_000_000_000L -> ...;
    case long x          -> ... x ...;
}
float v = ...
switch (v) {
    case 0f -> 5f;
    case float x when x == 1f -> 6f + x;
    case float x -> 7f + x;
}
boolean v = ...
switch (v) {
    case true -> ...
    case false -> ...
}

第二个是使用Markdown编写JavaDoc的文档注释。目前在编写Java的文档注释时,只能使用 HTML 和 JavaDoc 内置的标签。如果文档有复杂的格式化需求,包含代码、列表和表格,使用 HTML 和 JavaDoc 标签来编写会很繁琐。

Markdown 使用简单的语法来编写格式化的文档,可以转换成 HTML 格式。Markdown的语法简单易懂,很多人都会写 Markdown 文档。使用 Markdown 编写 Java 文档更加简单。

下面是 Java 中 Object 类的 hashCode 方法的注释,使用的是旧的语法。

b38854808ef3d9aa4f6ba30a11ac3c96.png

改成使用 Markdown之后的注释如下所示。Markdown 注释以三个斜杠作为起始。

f2b5fc0e366ee16762a2686647998f5a.png

第三个是废弃 Unsafe 类中与内存访问相关的方法,并计划在后续 JDK 版本中移除。Unsafe类一般用在库中,对于应用开发的影响很小。不过 Unsafe 在库中的使用非常多,JDK 23 只是废弃,离正式删除 Unsafe 中的相关方法,还有很长的一段时间。

第四个是模块导入声明,可以导入一个模块所导出的全部包。这是一个预览功能。使用 import module 来导入一个模块。导入一个模块,会自动导入该模块所导出的全部公开的类和接口,同时也会导入该模块所传递依赖的其他模块。

import module java.base;

第五个是默认启用垃圾回收器 ZGC 的分代模式,同时废弃非分代模式。


除了这5个全新的功能之外,还有几个继续预览的功能。

  • Class File API,这是解析、生成和转换 Java 类文件的标准 API。

  • 流收集器,允许创建自定义的流中间处理操作。

  • 隐式声明的类和实例 main 方法,这个功能简化了Java入口类的写法。

  • 灵活的构造器内容,构造器的 super 和 this 之前可以添加语句。

  • 结构化并发和 Scoped Values 这两个功能在 JDK 23 中继续预览。

最后的最后,是从 Java 16 以来的钉子户,矢量 API,在 JDK 23 中已经来到了第8个孵化版本

以上就是 Java  23 的全部新功能了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值