• JDK 17新更新的 14个新特性


    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();
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 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 ...
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

      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();
          };
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    • 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范围的过滤器工厂配置特定于上下文和动态选择的反序列化过滤器,该工厂被调用以为每个单独的反序列化操作选择一个过滤器。

    Spring Boot 3.0 最低只支持JDK 17,已经不再向下兼容,这就意味着未来很多的开发者必定逐步从JDK8 转到JDK17。

  • 相关阅读:
    多系统-单点登录测试
    2022全网最全最细的jmeter接口测试教程以及接口测试流程详解— 使用JMeter发送一个请求
    新一代开源免费的轻量级 SSH 终端,太棒了
    WordPress实时搜索插件Ajax Search Lite,轻松替代默认搜索功能
    echarts的使用
    单例模式(懒汉式、饿汉式)
    java的8种基本数据类型-附取值范围的计算逻辑
    Cookie与Session的区别及如何选择
    PostgreSQL 修改数据库用户的密码
    Unity中Shader抓取屏幕并实现扭曲效果
  • 原文地址:https://blog.csdn.net/qq_44866828/article/details/125394663