Java15 - 其他增强功能

JEP 383 - 外部内存访问 API

Java 14 允许 Java 程序安全高效地访问 Java 堆之外的外部内存。 早期的 mapDB、memcached、ignite java 库提供了外部内存访问。 它是一个更简洁的 API,可以无缝地操作所有类型的外部内存(本机内存、持久内存、托管堆内存等)。 无论外部内存类型如何,它还负责 JVM 的安全性。 还应明确提及垃圾收集/内存释放操作。

此 API 基于三个主要的抽象 MemorySegment、MemoryAddress 和 MemoryLayout,是访问堆内存和非堆内存的安全方式。

Java15 在孵化过程中继续此功能,并为 API 添加了新的改进。

  • 引入了用于自定义内存访问变量句柄的 VarHandle API。

  • 使用 Spliterator 接口支持内存段的并行处理。

  • 映射内存段支持得到增强。

  • 本机调用地址可以被操纵和取消引用。


JEP 339 − Edwards 曲线数字签名算法 (EdDSA)

Edwards-Curve Digital Signature Algorithm,EdDSA是一种先进的椭圆曲线方案,优于JDK中已有的签名方案。 与其他签名方案相比,它提高了安全性和性能。 它受流行的加密库(如 OpenSSL、BoringSSL 等)的支持。EdDSA 将仅在 SunEC 提供程序中的 Java15 中实现。


JEP 373 − 重新实现遗留 DatagramSocket API

java.net.DatagramSocket 和 java.net.MulticastSocket API 的遗留实现被更简单、更现代的实现所取代,这些实现易于维护和调试。

java.net.datagram.Socket 和 java.net.MulticastSocket 目前的实现是从 1.0 开始在 jdk 中,IPv6 还在开发中。这个 JEP 旨在取代 MulticastSocket 的当前实现,它以难以维护的方式协调了 IPv4 和 IPv6。


标准文本块

Java15 中的文本块不再是预览版。 现在它们是标准 JDK 的一部分。


Helpful NullPointerException

Helpful NullPointerException 现在在 Java15 中默认启用。