Java 22正式发布,一文相识全部新特性
就在昨晚,Java 22正式发布!该版本提供了 12 项功能增强,此中包罗 7 项预览功能和 1 项孵化器功能。它们涵盖了对 Java 语言、API、性能以及 JDK 中包罗的工具的改进。下面就来一起学习一下该版本都更新了哪些新特性!
Unnamed Variables & Patterns - JEP 456
JEP 456 - 未命名变量和模式:当需要但未使用变量声明或嵌套模式时,提高了可读性。两者都由下划线字符表现。
价值
[*]捕捉开发人员的意图,即未使用给定的绑定或 lambda 参数,并强制执行该属性以澄清步调并减少出错的机会。
[*]通过识别必须声明(例如,在 catch 子句中)但未使用的变量,提高全部代码的可维护性。
[*]答应多个模式出现在单个 case 标签中,如果它们都没有声明任何模式变量。
[*]通过消除不须要的嵌套类型模式来提高记载模式的可读性。
Statements before super (…) - JEP 447
在构造函数中,答应不引用正在创建的实例的语句出现在显式构造函数调用之前。
价值
[*]为开发人员提供了更大的自由来表达构造函数的行为,从而可以更天然地放置目前必须纳入辅助静态方法、辅助中间构造函数或构造函数参数中的逻辑。
[*]保留构造函数在类实例化期间按自上而下顺序运行的现有包管,确保子类构造函数中的代码不会干扰超类实例化。
[*]不需要对 Java 虚拟机进行任何更改。此 Java 语言功能仅依赖于 JVM 验证和执行构造函数中显式构造函数调用之前出现的代码的当前本领。
String Templates (2nd Preview) - JEP 459
字符串模版的第2个预览版,关于该功能之前DD给大家先容过,更多细节可以看看之前的这篇文章String Templates(字符串模版)
价值
[*]通过轻松表达包罗运行时计算值的字符串,简化了 Java 步调的编写。
[*]增强混合文本和表达式的表达式的可读性,无论文本恰当单个源行(如字符串文字)还是超过多个源行(如文本块)。
[*]通过支持模板及其嵌入表达式的值的验证和转换,提高 Java 步调的安全性,这些步调从用户提供的值组成字符串并将其转达到其他系统(例如,构建数据库查询)。
[*]通过答应 Java 库界说字符串模板中使用的格式化语法来保留灵活性。
[*]简化了接受非 Java 语言(例如 SQL、XML 和 JSON)编写的字符串的 API 的使用。
[*]答应创建根据文字文本和嵌入表达式计算的非字符串值,而无需通过中间字符串表现情势进行传输。
Implicitly Declared Classes and Instance Main Methods (2nd Preview) - JEP 463
隐式声明的类和实例重要方法(2nd 预览)- JEP 463
门生可以编写他们的第一个 Java 步调,而无需相识为大型步调设计的语言功能。门生无需使用单独的语言方言,而是可以为单类步调编写简化的声明,然后随着技能的增长无缝扩展他们的步调以使用更高级的功能。关于该特性,之前DD也先容过,更多细节可见这篇文章未命名类和实例的Main方法
价值
[*]加快 Java 学习
[*]为 Java 编程提供了一个平滑的入门通道,以便教师可以循序渐进地先容概念。
[*]资助门生以简便的方式编写基本步调,并随着他们的技能增长而优雅地扩展他们的代码。
[*]减少编写简朴步调(例如:脚本和命令行实用步调)的方式。
[*]不引入单独的初学者工具链;门生步调应该使用与编译和运行任何 Java 步调相同的工具来编译和运行。
Foreign Function & Memory API - JEP 454
外部函数和内存 API - JEP 454
答应 Java 步调与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即 JVM 外部的代码),并安全地访问外部内存(即不受 JVM 管理的内存),API 使 Java 步调能够调用本机库并处理本机数据,而不会出现脆弱性和危险。 JNI。
价值
[*]生产力:用简便、可读且纯 Java API 取代脆弱的本机方法和 Java 本机接口 (JNI)。
[*]性能:提供对外部函数和内存的访问,其开销与 JNI 和 sun.misc.Unsafe 相称(如果不是更好的话)。
[*]广泛的平台支持:答应在 JVM 运行的每个平台上发现和调用本机库。
[*]同等性:提供在多种内存(例如本机内存、长期内存和托管堆内存)中操作无穷大小的结构化和非结构化数据的方法。
[*]健全性:包管没有释放后使用错误,即使在多个线程之间分配和释放内存时也是如此。
[*]完整性:答应步调使用本机代码和数据执行不安全的操作,但默认警告用户此类操作。
Class-File API (Preview) - JEP 457
类文件 API(预览版)- JEP 457,提供用于解析、生成和转换 Java 类文件的尺度 API。
价值
[*]该API答应依赖它的框架和步调自动支持最新JDK中的最新类文件,以便可以快速、轻松地采用以类文件表现的新语言和VM功能。
Stream Gatherers (Preview) - JEP 461
Stream Gatherers(预览版)- JEP 461,增强了 Stream API 以支持自界说中间操作。这将答应流管道以现有内置中间操作不易实现的方式转换数据。
价值
[*]通过使流中的常见自界说操作更加灵活和富有表现力,提高开发人员的工作效率和代码可读性。尽可能答应中间操作操作无穷大小的流。
Structured Concurrency (2nd Preview) - JEP 462
结构化并发(2nd 预览版)- JEP 462,简化并发编程。结构化并发将在不同线程中运行的相关任务组视为单个工作单位,从而简化错误处理和取消、提高可靠性并增强可观察性。
价值
[*]通过推广一种编程风格来简化并发代码的开发,这种编程风格可以消除因取消和关闭而产生的常见风险(例如线程泄漏和取消延迟),并提高并发代码的可观察性。
Scoped Values (2nd Preview) - JEP 464
范围值(2nd 预览)- JEP 464,实现线程内和线程间不可变数据的高效共享。
价值
[*]易于使用 - 提供一个编程模型来在线程内以及与子线程共享数据,以简化有关数据流的推理。
[*]可理解性——使共享数据的生命周期从代码的语法结构中可见。
[*]鲁棒性——确保调用者共享的数据只能由合法的被调用者检索。
[*]性能——将共享数据视为不可变,以答应大量线程共享,并实现运行时优化。
Vector API (7th Incubator) - JEP 460
矢量 API(7th 孵化器)- JEP 460,一个用于表达向量计算的 API,可在运行时可靠地在支持的 CPU 架构上编译为最佳向量指令,从而实现优于等效标量计算的性能。此 JEP 发起在 JDK 22 中重新孵化该 API,相对于JDK 21。该实现包罗错误修复和性能增强。我们包罗以下显着变化:
[*]支持使用任何原始元素类型的数组支持的堆 MemorySegments 进行向量访问。从前的访问仅限于由字节数组支持的堆 MemorySegment。
价值
[*]提供清晰简便的 API,能够清晰简便地表达各种向量计算,这些向量计算由循环内组成的向量运算序列组成,并且可能还包罗控制流。
[*]该 API 设计为与 CPU 架构无关,可在支持向量指令的多种架构上实现。
[*]在 x64 和 AArch64 架构上提供可靠的运行时编译和性能。
Regional Pinning for G1 - JEP 423
G1 的区域固定 - JEP 423,通过在 G1 中实现区域固定来减少延迟,以便在 Java 本机接口 (JNI) 关键区域期间无需禁用垃圾网络。
价值
[*]使用 JNI 时,Java 线程无需在 G1 GC 操作完成之前等候,从而提高开发人员的工作效率。
Launch Multi-File Source-Code Programs - JEP 458
启动多文件源代码步调 - JEP 458,答应用户运行作为多个 Java 源代码文件提供的步调,而无需先辈行编译。
价值
[*]通过使从小步调到大型步调的过渡更加渐进,提高开发人员的工作效率,使开发人员能够选择是否以及何时设置构建工具。
[*]请注意,预览功能已完全指定并完全实现了 Java SE 平台的语言或 VM 功能,但它们是暂时的。它们在 JDK 功能版本中提供,以便开发人员根据实际使用情况提供反馈,然后再在将来版本中永世保留。这也为工具供应商提供了在终极确定为 Java SE 尺度之前致力于支持功能的机会。
[*]孵化器模块中的 API 将非终极 API 和非终极工具交给开发人员和用户,以网络反馈,终极提高 Java 平台的质量。
[*]除了 JEP 中描述的更改之外,发行阐明中还列出了许多较小的更新,许多应用步调开发人员和系统管理员都会对此感兴趣。此中包罗弃用过时的 API 和删除从前弃用的 API。
其他更新
Java 22 发行阐明中还有一些其他关键更新:
[*]向 keytool 和 jarsigner 添加附加算法。
[*]垃圾网络器吞吐量的提高,尤其是与“年轻”垃圾相关的情况。
[*]更好的系统模块描述符版本报告。
[*]改进了本机代码的“wait”处理选项。
[*]Unicode 通用区域设置数据存储库已更新至版本 44。
[*]类型注释支持从字节码加载的类型。
[*]ForkJoinPool 和 ForJoinTasks 现在可以更好地处理不中断任务。
[*]设置客户端与服务器 TLS 连接属性的额外灵活性。
[*]改进了本机内存跟踪,包罗报告峰值使用情况的本领
最后注意:JDK 22 是通过六个月的发布节奏按时交付的 13th 功能版本。由于预期改进源源不绝,这种程度的可预测性使开发人员能够轻松管理创新的采用。Oracle 不会为 JDK 22 提供长期支持,在 2023 年 9 月之前提供更新,之后它将被 Oracle JDK 23 取代。最近的长期维护版本是Java 21,更多关于Java新特性的解读和学习接待关注《Java 新特性解读》。
https://img2024.cnblogs.com/other/626506/202403/626506-20240320111922020-1465741727.png
接待关注我的公众号:步调猿DD。第一时间相识前沿行业消息、分享深度技术干货、获取优质学习资源
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]