始终严格的浮点语义、外部函数和内存 API 以及伪随机数生成器的统一 API 计划用于 9 月发布的 Java 长期支持版本。
Java 17 的功能集现已冻结,标准 Java 的下一版本将拥有 10 个新功能以及两个功能删除和两个功能弃用。为版本 17 设置的功能包括上下文特定的反序列化过滤器支持,这是一项安全增强,以及 switch 语句和表达式的模式匹配预览。
Java Development Kit (JDK) 17 将于 9 月 14 日发布生产版本,将成为长期支持 (LTS) 版本,预计 Oracle 将提供数年的扩展支持。该功能集在 6 月 10 日被冻结,当时 JDK 17 达到初始斜降阶段。稳定存储库jdk17已开放用于选择错误修复,并在获得批准后进行后期增强。作为 OpenJDK JDK 17 的一部分提交的功能包括:
-
特定于上下文的反序列化过滤器允许应用程序通过调用 JVM 范围的过滤器工厂来配置特定于上下文和动态选择的反序列化过滤器,以便为每个序列化操作选择一个过滤器。在解释该提议背后的动机时,
Oracle
表示反序列化不受信任的数据是一种固有的危险活动,因为传入数据流的内容决定了创建的对象、其字段的值以及它们之间的引用。在许多用途中,流中的字节是从未知、不受信任或未经身份验证的客户端接收的。通过仔细构建流,攻击者可以导致恶意执行任意类中的代码。如果对象构造具有改变状态或调用其他操作的副作用,则这些操作可能会危及应用程序对象的完整性,库对象和 Java 运行时。禁用序列化攻击的关键是防止任意类的实例被反序列化,从而防止直接或间接执行它们的方法。反序列化过滤器被引入Java 9使应用程序和库代码能够在反序列化之前验证传入的数据流。此代码java.io.ObjectInputFilter
在创建反序列化流时提供验证