08、Java15 新特性 - 其他增强功能

JEP 383 : 外部内存访问 API

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

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

Java 15 继续此功能作为孵化器并向 API 添加了新的改进。

  • 引入了 VarHandle API 以自定义内存访问 var 句柄。
  • 使用 Spliterator 接口支持内存段的并行处理。
  • 映射内存段支持增强。
  • 本机调用地址可以被操纵和取消引用。

JEP 339 : Edwards-Curve数字签名算法(EdDSA)

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

JEP 373 : 重新实现旧版 DatagramSocket API

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

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

文本块作为标准

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

有用的空指针异常

有用的NullPointerException 现在在 Java 15 中默认启用。