JDK 17新更新的 14个新特性

简介: JDK 17新更新的 14个新特性

JDK 17新更新的 14个新特性

特性介绍

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


22.png

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范围的过滤器工厂配置特定于上下文和动态选择的反序列化过滤器,该工厂被调用以为每个单独的反序列化操作选择一个过滤器。


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



目录
相关文章
|
7月前
|
Java 测试技术 调度
JDK21有没有什么稳定、简单又强势的特性?
这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。
JDK21有没有什么稳定、简单又强势的特性?
|
10月前
|
容器
jdk8新特性-详情查看文档
jdk8新特性-详情查看文档
153 7
|
容器
jdk8新特性-详情查看文档
jdk8新特性-详情查看文档
128 3
|
存储 安全 Java
JDK1.8 新的特性
JDK1.8 新的特性
143 0
|
Java API
JDK8到JDK25版本升级的新特性问题之使用Collectors.teeing()来计算一个列表中学生的平均分和总分如何操作
JDK8到JDK25版本升级的新特性问题之使用Collectors.teeing()来计算一个列表中学生的平均分和总分如何操作
|
Java API Apache
JDK8到JDK24版本升级的新特性问题之在Java中,HttpURLConnection有什么局限性,如何解决
JDK8到JDK24版本升级的新特性问题之在Java中,HttpURLConnection有什么局限性,如何解决
|
Oracle Java 关系型数据库
JDK8到JDK29版本升级的新特性问题之未来JDK的升级是否会成为必然趋势,如何理解
JDK8到JDK29版本升级的新特性问题之未来JDK的升级是否会成为必然趋势,如何理解
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
Java API 开发者
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
405 0
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
|
编解码 安全 Java
jdk8新特性-接口和日期处理
jdk8新特性-接口和日期处理