Java 15功能

Java 15新特性的总体变化率多年来基本保持不变,每隔六个月就能为生产和交付提升一定的速度。

Oracle 提供了 Java 15 的两个二进制版本:

Oracle OpenJDK 15:

https://jdk.java.net/15/

Oracle JDK 15:

https://www.oracle.com/java/technologies/javase-downloads.html

JDK的总体变化速度基本保持不变,每六个月就能为生产就和交付提高一定的效率。

JDK增强是以小功能版本提供,六个月计划更容易管理、更可预测的。

Java 15 中修补程序的组织机构图表:

Java 15中的新功能

Java 15 提供了 14 个主要增强/更改,包括一个孵化器模块、三个预览功能、两个弃用功能和两个删除功能。

孵化器模块引入了一些增强功能,能够提供反馈,提升 Java 平台的质量。

一些增强功能被引入为预览功能,是JavaSE平台的语言或VM功能,在 JDK 功能版本中提供,根据实际使用来激发开发人员的反馈,可能在未来版本中成为永久版本。为开发人员提供及时反馈的机会。

最后,一些更改旨在通过弃用来缩小JDK的大小和范围,是一种传达有关API生命周期的信息的技术。

弃用鼓励应用程序从 API 迁移,阻止应用程序形成对 API 的新依赖关系,并告知开发人员继续依赖 API 的风险。

使用Jajdeprscan工具(在Java 9中引入),用户可以执行静态分析其jar文件,确定弃用API元素的用途,从而使能够提前准备未来的删除。

Java 15 交付的 14 个 JEP 可分为四种不同的类别:

新功能

Edwards-Curve数字签名算法

通过使用Edwards曲线数字签名算法(EdDSA)进行加密签名,从而提高安全性和性能。

EdDSA 是一种现代椭圆曲线签名方案,与 JDK 中现有的签名方案相比具有很多优势。JEP 的主要目标是实施 RFC 8032 中标准化方案。新的签名方案不会取代 ECDSA。

隐藏类

此功能完善在运行时需要生成类的框架。

框架生成类以动态扩展其行为,但最好限制对这些类的访问。

隐藏类非常有用,因为它们只能通过反射访问,不能从普通字节码访问。常量,隐藏类可以独立于其他类卸载,会减少框架的内存占用。

ZGC:可扩展的低延迟 GC

ZGC 由 JEP 333集成到JDK 11 中,目标是通过减少 GC 暂停时间、处理大小从相对较小(几百兆字节)到非常大的(数TB)的堆来提高工作效率,并利用彩色指针和负载障碍为未来 GC 功能和优化打下基础。

文本块

文本块是多行字符串文本,以可预测的方式自动格式化字符串,并让开发人员根据需要控制格式。

Shenandoah

被标记为实验性,以匹配其他新GC的状态,特别是EpsilonGC和ZGC。

JEP 379将 Shenandoah 垃圾收集器从实验功能更改为产品功能,目前不打算更改为默认 GC,仍保留为G1 GC。

孵化和预览功能

Sealed Classes - 首个预览

通过使用Sealed Classes和接口增强Java编程来提高开发人员的工作效率。

模式匹配

通过消除对通用样板代码的要求提高开发人员的生产率,并应允许使用更简洁的类型安全代码。

Records

Records提供了一种紧凑的语法来声明类,这些类充当不可变数据的透明载体,提高了开发人员的生产率。 

外部存储器访问API

外部存储器访问API由JEP 370提出,并于2019年末针对JDK 14作为孵化API。

在JDK 15中重新孵化该API。此孵化功能定义了一个API,以允许Java程序安全有效地访问Java堆之外的外部内存。

禁用和弃用偏置锁定

JEP 374默认情况下禁用偏向锁定,并弃用所有相关的命令行选项。

弃用RMI激活以进行删除

JEP 385弃用RMI激活机制,以备未来删除。 RMI激活是RMI的过时部分,自Java 8开始,RMI激活是可选的。不会弃用RMI的其他部分。

删除Nashorn JavaScript引擎

删除了Nashorn JavaScript脚本引擎和API,以及jjs工具。

删除Solaris和SPARC端口

删除了源代码并建立了对Solaris / SPARC,Solaris / x64和Linux / SPARC端口的支持。 并明确打算在将来的版本中删除它们。

重新实现旧版Datagram Socket API

通过使用更简单,更现代的实现替换java.net.DatagramSocket和java.net.MulticastSocket API的基础实现,此功能提高了JDK的可维护性和稳定性。

新的实现将更容易适应虚拟线程的工作,当前正在Project Loom中进行探索。 是JEP 353的后续产品,该产品已经重新实现了旧版Socket API。

工具支持

当前的工具支持有助于提高开发人员的生产力。

使用Java 15,支持ide供应商提供的工具解决方案,为开发人员提供对当前Java版本的支持。 开发人员可以通过以下IDE获得Java 15支持:

JetBrains IDEA

Apache NetBeans

Eclipse