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 中默认启用。