• Arthur

Java代写 JDK 15:Java 15中的新功能



即将进行的标准Java更新,现在处于候选发布阶段,具有文本块,垃圾收集器,隐藏的类以及模式匹配和记录的预览。


OpenJDK 15中的新功能和更改:

  • 外部存储器访问API的第二个孵化器,它将使Java程序安全有效地访问Java堆外部的外部存储器。该API应该能够在各种外部内存上进行操作,例如本机,持久性和托管堆。许多Java程序都访问外部存储器,例如Ignite和MapDB。该API将有助于避免与垃圾回收相关的成本和不可预测性,跨进程共享内存以及通过将文件映射到内存来序列化和反序列化内存内容。Java API当前无法提供令人满意的访问外部内存的解决方案。但是,通过新提议,API不可能破坏JVM的安全性。此功能正在JDK 14中的早期孵化器阶段中进行,并在JDK 15中进行了改进。 

  • 密封类的预览。与接口一起,密封类限制了哪些其他类或接口可以扩展或实现它们。此功能的目标包括允许类或接口的作者控制负责实现该代码的代码,提供比访问修饰符更具声明性的方式来限制超类的使用,并通过支持详尽的内容来支持模式匹配的未来方向。模式分析。

  • 删除源代码并构建对Solaris / SPARC,Solaris / x64和Linux / SPARC端口的支持,JDK 14中已弃用了这些源,目的是在将来的发行版中将其删除。开发中的许多项目和功能(例如Valhalla,Loom和Panama)都需要对CPU体系结构和特定于操作系统的代码进行重大更改。不再支持Solaris和SPARC端口,将使OpenJDK社区的贡献者能够加快新功能的开发,从而使平台向前发展。近年来,Solaris OS和SPARC被Linux OS和Intel处理器所取代。

  • Records是充当不可变数据的透明载体的类,将在JDK 14中作为早期预览首次亮相后,将包含在JDK 15的第二个预览版本中。该计划的目标包括设计一个表示对象的构造,以表达简单的值聚合,帮助程序员专注于对不可变数据进行建模,而不是对可扩展行为进行建模,自动实现数据驱动的方法(例如equals和评估者),并保留长期的Java原则(例如标称类型和迁移兼容性)。记录可以被视为名义元组。 

  • 基于爱德华兹曲线数字签名算法(EdDSA)的密码签名。EdDSA是一种现代的椭圆曲线方案,具有优于JDK中现有签名方案的优势。EdDSA将仅在SunEC提供者中实施。与其他签名方案相比,EDDSA具有更高的安全性和性能,因此备受青睐。加密库(例如OpenSSL和BoringSSL)已经支持该功能。

  •  通过用更简单,更现代的实现来替换java.net.datagram.Socket和java.net.MulticastSocketAPI 的基础实现,从而重新实现旧的DatagramSocket API,这些实现  1.易于调试和维护,并且2.使用Project Loom中正在探索的虚拟线程。新计划是对JDK增强建议353的后续,该建议重新实现了旧版Socket API。目前实现java.net.datagram.Socket和java.net.MulticastSocket可追溯至JDK 1.0和IPv6时是仍处于开发阶段的时间。因此,当前的实现  MulticastSocket 尝试以难以维护的方式协调IPv4和IPv6。

  • 默认情况下禁用偏向锁定,并弃用所有相关的命令行选项。目的是确定是否需要继续支持昂贵且易于维护的有偏锁定的传统同步优化,该优化在HotSpot虚拟机中用于减少无竞争锁定的开销。尽管某些Java应用程序可能会在禁用偏置锁定的情况下看到性能下降的趋势,但是偏置锁定的性能提升通常不如从前那样明显。

  • JDK 14中的先前预览之后,第二个模式匹配instanceof预览。模式匹配使程序中的通用逻辑(主要是从对象中有条件地提取组件)得以更简洁地表达。Haskell和C#等语言因其简洁性和安全性而接受了模式匹配。

  • 隐藏的类,即不能被其他类的字节码直接使用的类,供在运行时生成类并通过反射间接使用它们的框架使用。可以将隐藏类定义为访问控制嵌套的成员并且可以独立于其他类进行卸载。该提案将通过启用标准API来定义无法发现且生命周期有限的隐藏类,从而提高JVM上所有语言的效率。JDK内部和外部的框架将能够动态生成可以代替定义隐藏类的类。基于JVM构建的许多语言都依靠动态类生成来提高灵活性和效率。该提案的目标包括:允许框架将类定义为框架的不可发现的实现细节,因此它们不能被其他类链接,也不能通过反射来发现;支持使用不可发现的类扩展访问控制嵌套;并支持积极卸载不可发现的类,因此,框架可以灵活地定义所需的数量。另一个目标是弃用非标准API, misc.Unsafe::defineAnonymousClass,目的是不建议在以后的版本中将其删除。另外,由于此提议,Java语言也不会更改。

  • 根据该提议,Z垃圾收集器(ZGC)将从实验功能升级为产品。ZGC已集成到2018年9月发布的JDK 11中,是一个可扩展的低延迟垃圾回收器。引入ZGC是一项实验功能,因为Java的开发人员决定应谨慎而逐步地引入这种大小和复杂性的功能。从那时起,已添加了许多改进,从并发类卸载,未使用内存的未提交,对类数据共享的支持到改进的NUMA意识和多线程堆预触。此外,最大堆大小已从4 TB增加到16 TB。支持的平台包括Linux,Windows和MacOS。

  • 文本块,在JDK 14和JDK 13中都已预览旨在简化表示跨几行源代码的字符串的过程,从而简化了编写Java程序的任务,同时避免了常见情况下的转义序列。文本块是一种多行字符串文字,它避免了大多数转义序列的需要,以可预测的方式自动设置字符串格式,并在需要时为开发人员提供了对该格式的控制权。文本块建议的目标是增强Java程序中字符串的可读性,这些Java程序表示用非Java语言编写的代码。另一个目标是通过规定任何新构造都可以表示与字符串文字相同的字符串集,解释相同的转义序列并以与字符串文字相同的方式进行操作来支持从字符串文字的迁移。

  • 在雪兰低暂停时间的垃圾收集器将成为一个生产特点和移动实验阶段的出来。一年前已将其集成到JDK中。

  • Nashorn的删除于2014年3月在JDK 8中首次亮相,但此后由于诸如GraalVM之类的技术而过时了。OpenJDK 15提案要求删除Nashorn API和用于调用Nashorn的jjs命令行工具。

  • 弃用RMI激活机制,以备将来删除。RMI激活机制是RMI的过时部分,自Java 8开始,RMI激活机制是可选的。RMI激活带来了持续的维护负担。不建议弃用RMI的其他部分。

可以在java.jdk.net上找到JDK 15的早期访问版本。根据Oracle六个月的发布节奏,JDK 15将是一个短期功能发布,支持六个月  。下一个长期支持(LTS)版本将获得几年的支持,它将是JDK 17,该版本将于2021年9月到货。当前LTS版本是JDK 11,该版本于2018年9月发布。

CS代写|Python代写|机器学习代写|代码代写|程序代写|C++代写|java代写