Java 15 - 其他增强功能


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 - 爱德华曲线数字签名算法(EdDSA)

Edwards-Curve数字签名算法,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 的当前实现是从 1.0 开始就在 jdk 中,IPv6 仍在开发中。此 JEP 的目标是替换 MulticastSocket 的当前实现,后者以难以实现的方式协调了 IPv4 和 IPv6维持。

标准文本块

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

有用的空指针异常

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