应用简介
jdk15.0.2是针对java语言打造的一款非常不错的软件开发工具包,该工具主要用于移动设备、嵌入式设备上的java应用程序,JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具,在 jdk15中标记为已修复的2,136 个JIRA 问题中,1,702 个 是由 甲骨文公司工作人员完成的,而434 个是由个人开发人员和为其他组织工作的开发人员贡献的,为了进一步展示 Java 的持续创新之路,甲骨文公司宣布jdk15将面向所有开发人员和企业。
【主要功能】
1、339:EdDSA数字签名算法
2、360:密封类(预览)
3、371:隐藏类
4、372:删除 Nashorn JavaScript 引擎
5、373:重新实现旧版 DatagramSocket API
6、374:禁用和弃用偏向锁定
7、375:instanceof 的模式匹配(第二次预览)
8、377:ZGC:可扩展的低延迟垃圾收集器
9、378:文本块
10、379:Shenandoah:一个低暂停时间的垃圾收集器
11、381:删除 Solaris 和 SPARC 端口
12、383:外内存访问API(第二孵化器)
13、384:记录(第二次预览)
14、385:弃用 RMI 激活以进行删除
【新特性】
一、新功能
1、JEP 339 Edwards-Curve 数字签名算法
此特征通过以下方式提高安全性和性能我mplementing使用Edwards-Curve 数字签名算法(EdDSA)加密签名如由RFC 8032。EdDSA 是一种现代椭圆曲线签名方案,与 JDK 中现有的签名方案相比有几个优点。此 JEP 的主要目标是实现此方案,如 RFC 8032 中标准化的那样。此新签名方案不会取代 ECDSA。
2、JEP 371隐藏类
此功能有助于需要在运行时生成类的框架。框架生成类以动态扩展其行为,但希望限制对这些类的访问。隐藏类很有用,因为它们只能通过反射访问,而不能从普通字节码访问。此外,隐藏类可以独立于其他类卸载,这可以减少框架的内存占用。
二、现已完成的预览和实验功能
1、JEP 377 ZGC:可扩展的低延迟 GC
ZGC被集成到JDK 11由JEP 333,通过降低以提高生产率的目标GC暂停时间,手柄堆从规模相对较小(几百兆),以非常大(许多兆兆字节),以及打下利用彩色指针和负载屏障为未来 GC 功能和优化奠定基础。在 JEP 377 中,ZGC 从实验功能转变为生产功能。
2、JEP 378文本块
文本块是由JEP 355在 2019 年提出的。文本块是一种多行字符串文字,它避免了大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。在 JEP 378 中,文本块成为 Java 语言的永久特性。
3、JEP 379雪兰多
Shenandoah 被JEP 189集成到 JDK 12 中。它被标记为实验性以匹配其他新 GC 的状态,特别是 Epsilon GC 和 ZGC。JEP 379将 Shenandoah 垃圾收集器从实验性功能改为产品功能但不建议更改默认 GC,继续保持 G1,也不建议更改 Shenandoah 开发流程,将继续支持最新的JDK 和流行的 LTS/STS JDK。
三、孵化和预览功能
1、JEP 360密封类 - 第一次预览
此预览功能通过使用密封类和接口增强 Java 编程来提高开发人员的生产力,这允许类或接口的作者控制负责实现它的代码,提供比访问修饰符更具声明性的方式来限制使用超类并通过支持模式的详尽分析来支持模式匹配的未来方向。
2、JEP 375模式匹配instanceof - 第二次预览
这个预览功能首先在JEP 305 中作为JDK 14 的一部分引入,它通过消除对通用样板代码的需要来提高开发人员的生产力,并且应该允许更简洁的类型安全代码。
3、JEP 384记录 - 第二次预览
Records通过为声明充当不可变数据的透明载体的类提供紧凑的语法来提高开发人员的工作效率。记录由JEP 359于 2019 年年中提出,并作为JDK 14 中的预览功能提供。该 JEP 建议重新预览 JDK 15 中的功能,既要结合基于反馈的改进,又要支持 Java 语言中的其他形式的本地类和接口。
4、JEP 383外部内存访问 API - 第二个孵化器
外部内存访问 API 是由JEP 370提出的,并于 2019 年末针对JDK 14作为孵化 API。该 JEP 建议结合基于反馈的改进并在 JDK 15 中重新孵化 API。此孵化功能定义了一个 API,以允许 Java 程序安全有效地访问 Java 堆之外的外部内存。
四、JDK 现代化
JDK 具有由数百万行代码实现的数千个功能,因此保持代码的可靠性和可维护性非常重要。过时或很少使用的功能可能会删除其代码,而其他功能可能会为了稳定性和性能而重写其代码。功能永远不会被删除,除非首先至少在一个版本中被弃用。JDK 15 弃用了两个功能,并删除了之前弃用的另外两个功能。JDK 15 还对网络堆栈的实现进行了现代化。
1、JEP 374禁用和弃用偏向锁定
JEP 374 默认禁用偏向锁定并弃用所有相关的命令行选项。
2、JEP 385弃用 RMI 激活以进行删除
JEP 385 弃用RMI 激活机制以供将来移除。RMI Activation 是 RMI 的一个过时部分,自 Java 8 以来一直是可选的。RMI 的任何其他部分都不会被弃用。
3、JEP 372删除 Nashorn JavaScript 引擎
JEP 372删除了 Nashorn JavaScript 脚本引擎和 API,以及 jjs 工具。不推荐在 JDK 11 中删除引擎、API 和工具,并明确打算在未来版本中删除它们。
4、JEP 381删除 Solaris 和 SPARC 端口
JEP 381删除了对 Solaris/SPARC、Solaris/x64 和 Linux/SPARC 端口的源代码和构建支持。这些端口在 JDK 14中已被弃用,并明确打算在未来版本中删除它们。
5、JEP 373重新实现旧的数据报套接字 API
此功能通过使用更简单、更现代的实现替换java.net.DatagramSocket和java.net.MulticastSocket API的底层实现,提高了 JDK 的可维护性和稳定性。新的实现将很容易适应虚拟线程,目前正在Project Loom 中进行探索。这是JEP 353的后续,它已经重新实现了旧的 Socket API。