JDK 17新更新的 14个新特性
特性介绍
JDK 17更新了包括14个特性,具体如下表所示:

- 
306:恢复始终严格模式(Always-Strict)的浮点语义 Restore Always-StrictFloating-Point Semantics0 恢复始终执行严格模式的浮点定义,修复25年前英特尔的浮点指令存在的一些问题; 
- 
356:增强型伪随机数发生器 EnhancedPseudo-Random Number Generators 增加了伪随机数相关的类和接口来让开发者使用stream流进行操作, RandomGenerator generator = RandomGeneratorFactory.all() .filter(RandomGeneratorFactory::isJumpable) .filter(factory -> factory.stateBits() > 128) .findAny() .map(RandomGeneratorFactory::create) // if you need a `JumpableGenerator`: // .map(JumpableGenerator.class::cast) .orElseThrow();
- 
- RandomGenerator
- RandomGeneratorFactory
 
- 
382:新增macOS渲染管道 New macOS RenderingPipeline 
- 
391:支持将JDK移植到macOS或AArch64 macOS/AArch64 Port 
- 
398:弃用待移除的Applet API Deprecate the AppletAPI for Removal 弃用、删除标准 Java API 的这些类和接口: 弃用或删除任何引用上述类和接口的 API 元素,包括以下中的方法和字段: 
- 
- java.beans.Beans
- javax.swing.RepaintManager
- javax.naming.Context
- java.applet.Applet
- java.applet.AppletStub
- java.applet.AppletContext
- java.applet.AudioClip
- javax.swing.JApplet
- java.beans.AppletInitializer
 
- 
403:强封装JDK内部API Strongly EncapsulateJDK Internals 
- 
406:switch模式匹配进入预览(Preview)阶段 Pattern Matching forswitch (Preview) 引入switch模式匹配的preview版本 // Old code if (o instanceof String) { String s = (String)o; ... use s ... } // New code if (o instanceof String s) { ... use s ... }switch的写法: static String formatterPatternSwitch(Object o) { return switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); }; }
- 
407:移除RMI(远程方法调用)激活机制 Remove RMI Activation 
- 
409:密封类 Sealed Classes 密封类是由JEP 360提出的,并在JDK 15中作为预览功能提供。它们由JEP 397再次提出并进行了改进,并作为预览功能在JDK 16中提供。该JEP建议在JDK17中完成密封类,与JDK 16没有任何变化。 
- 
410:移除实验性AOT和JIT编译器 Remove theExperimental AOT and JIT Compiler 
- 
411:弃用待移除的安全管理器(Security Manager) Deprecate theSecurity Manager for Removal 弃用安全管理器,在后续版本中移除。安全管理器可追溯到Java 1.0。多年来,它一直不是保护客户端Java代码的主要手段,也很少用于保护服务器端代码。为了推动Java向前发展,Oracle打算弃用安全管理器,以便与旧Applet API(JEP 398)一起删除。 
- 
412:外部函数和内存API(孵化器)孵化阶段 Foreign Function& Memory API (Incubator) Java程序可以通过该API与Java运行时之外的代码和数据进行互操作。通过有效调用外部函数(即JVM之外的代码),以及安全地访问外部内存(即不由JVM管理的内存),API使Java程序能够调用本地库和处理本地数据,而没有JNI。[关于JDK17新特性开发应用,关注公众号Java精选,后续文章更新] 
- 
414:Vector API(第二孵化器)第二孵化阶段 Vector API (SecondIncubator) 引入一个API来表达向量计算,这些计算在运行时可靠地编译为支持的CPU架构上的最佳向量指令,从而实现优于等效标量计算的性能。 
- 
415:上下文特定的反序列化过滤器 Context-SpecificDeserialization Filters 允许应用程序通过JVM范围的过滤器工厂配置特定于上下文和动态选择的反序列化过滤器,该工厂被调用以为每个单独的反序列化操作选择一个过滤器。 
文特定的反序列化过滤器**
Context-SpecificDeserialization Filters
允许应用程序通过JVM范围的过滤器工厂配置特定于上下文和动态选择的反序列化过滤器,该工厂被调用以为每个单独的反序列化操作选择一个过滤器。
 
                             
                         
                            