主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
9月19日,甲骨文公布了Java21正式版和相应的JDK 21开发套件,这是继JDK 17之后最新的LTS版本,将支持至少8年。同时宣布对5年前发布的Java 11的长期支持已经延长至2032年1月。
在Java 21的最新版本中,Oracle开发团队带来了15项主要功能更新,如下所示:
1.字符串模板(预览阶段)
这个函数通过将文字文本与嵌入式表达式和处理器结合起来产生特殊的结果,从而补充了Java中现有的字符串文字和文本块。语言函数和API的目的是通过简单地表达包含运行时计算值的字符串来简化Java程序的编写。它有望增强表达式的可读性,提高程序的安全性,保持灵活性,并简化接受非Java语言编写的字符串的API的使用。
2.顺序集
有序集合提议引入了一些接口,以定义的相遇顺序来表示集合。每个集合都有明确定义的第一个和第二个元素,依此类推,直到最后一个元素。提供一致的API来接受第一个和最后一个元素,并以相反的顺序处理元素。提出这个建议的原因是,Java的集合框架缺少一个集合类型,它用定义的相遇顺序来表示元素序列。对于这些集合,它也缺乏一套一致的操作。该建议要求定义顺序收集、收集和映射的接口,并使这些接口适应现有的收集类型层次结构。所有这些新方法都有默认的实现。
3.加入ZGC时代。
分代ZGC的目的是通过扩展ZGC来维护不同代的新旧对象,从而提高应用程序的性能。年轻的对象往往死得早;保持独立的一代将允许ZGC更频繁地收集年轻的物体。使用分代ZGC运行的应用程序应该具有以下优势:降低分配停滞的风险,减少堆内存开销和垃圾收集CPU开销。与非世代ZGC相比,这些优势应该在不显著降低吞吐量的情况下实现。
4.记录方式
该函数是JDK 19和JDK 20中的预览版,主要用于解构记录值。记录模式和类型模式可以嵌套,以实现强大的、声明性的和可组合的数据导航和处理表单。该建议的目标包括扩展模式匹配以重组记录类实例和添加嵌套模式,从而实现更多可组合的数据查询。JEP的录音模式提案(JDK增强提案)将最终确定该功能,并根据积累的经验和反馈进一步完善。
5.开关模式匹配
该函数允许根据多个模式(每个模式有一个特定的操作)测试switch表达式或语句,从而可以安全、简洁地表达复杂的面向数据的查询。该功能首先在JDK 17中提出,然后在JDK 18、JDK 19和JDK 20中得到改进。最终将在JDK 21完成,并根据反馈和经验进一步完善。与以前的JEP相比,主要的变化是删除了括号模式,并允许使用限定的枚举常数(如带有开关表达式和语句的case常数)。
6.外部函数和内存API(第三版预览版)
允许Java程序与Java运行时之外的代码和数据进行互操作。该API通过有效调用外部函数和安全访问外部内存,使Java程序能够调用本地库和处理本地数据,而没有JNI(Java Native Interface,Java原生接口)的漏洞和危险。该API之前在JDK 20和JDK 19中预览过。JDK 21预览版的改进包括增强布局路径,增加解引用地址布局新元素,Arena界面集中管理本节生命周期;实现了备份本地链接器。已删除VaList。
7.未命名的模式和变量(预览)
未命名模式匹配记录组件,但不指定组件名称或类型,而未命名变量可以初始化,但不能使用。两者都用下划线_表示。该提议旨在通过省略不必要的嵌套模式来提高记录模式的可读性,并通过标识必须声明但不会使用的变量来提高所有代码的可维护性。
8.虚拟线程
虚拟线程是一种轻量级线程,有望大大减少编写、维护和观察高吞吐量并发应用的工作量。在JDK 21中,虚拟线程总是支持线程局部变量,没有这些变量就不可能创建虚拟线程。对线程局部变量的有保证的支持确保了更多的现有库可以在虚拟线程不变的情况下使用,并有助于将面向任务的代码迁移到使用虚拟线程。
9.实例的未命名类和主要方法(在预览阶段)
这个函数的作用是让学生在不了解为大型程序设计的语言函数的情况下,更容易写出第一个Java程序。学生不需要使用单独的Java方言,他们可以编写单类程序的简明语句,然后随着技能的提高,他们可以无缝地扩展程序,使用更高级的功能。这一提议不仅为学生提供了一条通往Java的坦途,还减少了编写脚本和命令行实用程序等简单Java程序的繁琐过程。
11.范围值(在预览阶段)
作用域值指的是允许不可变数据在线程内和线程间共享。范围值允许在不使用方法参数的情况下,在大型程序的组件之间安全地共享数据。该建议已在JDK 20中得到验证。该计划的目标包括可用性、可理解性、健壮性和性能。
11.Vector API(第六孵化器)
该API表达的矢量计算可以在支持的CPU架构上可靠地编译成最佳矢量指令,从而实现比等效标量计算更好的性能。此前,病媒API已在JDK 16至JDK 20孵化。最新版本包括性能增强和错误修复。这个提议的目标包括:简单性、平台独立性、可靠的运行时编译以及在x64和AArch64架构上的性能。
12.放弃Windows 32位x86端口。
此功能更新的目的是在未来版本中删除此端口。此建议旨在更新构建系统,以便在尝试为32位x86 Windows配置构建时发出错误消息。提案指出,支持32位操作的Windows操作系统最后一个版本Windows 10将于2025年10月结束生命周期。
13.禁止动态加载代理。
当代理被动态加载到正在运行的JVM中时发出警告。发出这些警告的目的是为将来发布默认禁止加载代理的版本做准备,以提高默认完整性。该提案的其他目标还包括重新评估服务(涉及运行代码的临时更改)和完整性(假设运行代码不会被随意更改)之间的平衡,以及确保大多数不需要动态加载代理的工具不受影响。从JDK 21开始,该计划要求应用程序所有者批准代理的动态加载,就像在启动时加载代理一样。这一改变将使Java平台在默认情况下更接近完整性。
14.密钥封装机制的API
这种加密技术通过公共加密来保护对称密钥。该提案的一个目标是使应用程序能够使用KEM算法,如RSA密钥封装机制(RSA-KEM)、椭圆曲线集成加密方案(ECIES)以及美国国家标准与技术研究院(NIST)后量子密码标准化进程中的候选算法。另一个目标是在更高级别的协议中使用KEM,如传输层安全性(TLS)和加密方案,如混合公钥加密(HPKE)。安全提供者可以在Java代码或本地代码中实现KEM算法,包括RFC 9180中定义的Diffie-Hellman KEM(DHKEM)的实现。
15.结构化并发(目前处于预览阶段)
通过结构化并发API简化并发编程,将不同线程中运行的相关任务组视为单个工作单元。这简化了错误处理和消除操作,提高了可靠性并增强了可观察性。结构化并发分别于2022年3月和9月在JDK 20和JDK 19中孵化,作为java.util.concurrent包中的预览版API。这次唯一的主要变化是结构化任务Scope::fork(& # 8230;)方法返回[Subtask]而不是未来。结构化并发的目标包括推广一种并发编程风格,可以消除取消和关闭带来的常见风险(如线程泄漏和取消延迟),提高并发代码的可观测性。
这几篇文章你可能也喜欢:
本文由主机参考刊发,转载请注明:Java 21正式发布了新的虚拟线程,以及支持了8年的最新LTS版AI接口。 https://zhujicankao.com/95790.html
评论前必须登录!
注册