Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >JDK 17新更新的 14个新特性

JDK 17新更新的 14个新特性

作者头像
猫头虎
发布于 2024-04-08 02:00:31
发布于 2024-04-08 02:00:31
2.2K00
代码可运行
举报
运行总次数:0
代码可运行

JDK 17新更新的 14个新特

特性介绍

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

图片
图片

306:恢复始终严格模式(Always-Strict)的浮点语义

Restore Always-StrictFloating-Point Semantics0

恢复始终执行严格模式的浮点定义,修复25年前英特尔的浮点指令存在的一些问题;

356:增强型伪随机数发生器

EnhancedPseudo-Random Number Generators

增加了伪随机数相关的类和接口来让开发者使用stream流进行操作,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Old code
if (o instanceof String) {
    String s = (String)o;
    ... use s ...
}

// New code
if (o instanceof String s) {
    ... use s ...
}

switch的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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。

PS: 2023.1.28 添加

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 17 新特性,快到起飞?惊呆了!
本书最新版,主要更新了在JDK 17发布的的新特性,JDK 17是继JDK11之后的一个新的长期支持版本,免费使用至2024年9月,同时会持续更新到2029年9月。下面就一起来看看,到底更新了些什么内容:
公众号:大数据羊说
2022/07/07
1.5K0
Java 17 新特性,快到起飞?惊呆了!
JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK17特性讲解】
  JDK 16 刚发布半年(2021/03/16),JDK 17 又如期而至(2021/09/14),这个时间点特殊,蹭苹果发布会的热度?记得当年 JDK 15 的发布也是同天
用户4919348
2022/12/28
2.7K0
JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK17特性讲解】
重磅!JDK 17 发布,Oracle 宣布 JDK 17 可以免费商用了。。
果然,JDK 17 还是如期发布了,2021年09月14日。巧了,和苹果发布会是一天,不知道是不是互相在蹭热度,哈哈哈~~~
沉默王二
2021/09/24
9.6K0
《JDK17新特性和代码案例演示》
🐯猫头虎博主在此! 本篇文章深入挖掘了JDK 17的新特性并通过代码案例为大家展示了如何使用这些新特性。对于所有希望在Java开发中保持前沿技术的小伙伴来说,这是一篇不容错过的文章。你想了解JDK 17吗?想知道它与JDK 8有何不同吗? JDK 17新特性,JDK 17代码案例。
猫头虎
2024/04/09
4910
Java 17 新功能介绍(LTS)
Java 17 在 2021 年 9 月 14 日正式发布,Java 17 是一个长期支持(LTS)版本,这次更新共带来 14 个新功能。
未读代码
2021/12/13
1.1K0
JDK的第三个LTS版本JDK17来了
2021年9月JDK17发布了,JDK17是最新的一个LTS版本。所谓LTS版本就是可以得到至少八年产品支持的版本。从2014年的JDK8,到2018年的JDK11,再到2021年的JDK17。
程序那些事
2021/11/15
1.5K0
JDK/Java 17 马上来袭,看看带来哪些新特性?
JDK/Java 16 已于今年 3 月份正式 GA,这是一个短期维护版本,仅有 6 个月的技术支持。下一个版本 JDK/Java 17 计划于今年 9 月 14 日发布,这是一个长期支持(LTS)版本,预计 Oracle 将提供数年的扩展支持。
终码一生
2022/04/15
1.1K0
JDK/Java 17 马上来袭,看看带来哪些新特性?
JDK 17
本篇博客将深入探讨JDK 17,这是Java编程语言的最新版本,带来了许多新功能、改进和增强。通过了解JDK 17的更新内容,您将能够更好地利用新特性来提升Java应用程序的开发和性能。
猫头虎
2024/04/07
2520
Java17来了!YYDS!
上个周末我发了一篇名为:Spring 官宣,干掉 Spring 5.3.x! 的技术快报,这篇文章主要介绍了 Spring Framework 6 和 Spring Boot 3 的最新消息。
Guide哥
2021/10/11
1.4K0
Java17的新特性
上面列出的是大方面的特性,除此之外还有一些api的更新及废弃,主要见JDK 17 Release Notes,这里举几个例子。
code4it
2021/09/16
1.1K0
Java17的新特性
JDK的版本迭代(JDK9 - JDK20)
这意味着Java的更新从传统的以特性驱动的发布周期,转变为以时间驱动的发布模式,并且承诺不会跳票。通过这样的方式,开发团队可以把一些关键特性尽早合并到 JDK 之中,以快速得到开发者反馈,在一定程度上避免出现像 Java 9 两次被迫延迟发布的窘况。
鱼找水需要时间
2023/05/11
1.7K0
JDK的版本迭代(JDK9 - JDK20)
生产升级JDK 17 必读手册
因为我们引入了sealed class或interfaces,这些class或者interfaces只允许被指定的类或者interface进行扩展和实现。
鲁大猿
2023/12/29
4350
Java17,有史以来最快 JDK
都说Java 8 是YYDS,那你注意到 Java 17 已经正式发布了吗?目前Java 18 也已经进入早期开发阶段。
程序员小猿
2021/10/12
1.9K0
4.6 W 字总结!Java 11—Java 17特性详解
来源 | https://mp.weixin.qq.com/s/SVleHYFQeePNT7q67UoL4Q
用户1516716
2021/10/12
1.5K0
3分钟带你品尝新鲜出炉的Java 17,看完就知道香不香!
Java已经过了20个年头了,Java8之后,JDK的发行计划变了不少,半年一小聚,三年一大闹。根据Oracle官方的的文档,长期支持的Java版本是Java11 和 Java17。其中Java17计划在2021年9月14号发布,Java17 将是一个长期支持的版本(Long Terms Support)。既然长期支持,作为Java程序员就必须重视并搞起来。那么让我们来阅览一下二十年陈酿 Java17 。文木附送OpenJDK 17 Earily Access 版本下载地址,还不玩起来!
纯洁的微笑
2021/09/15
1.7K0
3分钟带你品尝新鲜出炉的Java 17,看完就知道香不香!
JDK 15 要来了,新特性尝鲜。
Java Development Kit 15是甲骨文公司发布 Java SE(标准版)的最新版本,它在6月11日进入缓降阶段,系列功能现在被冻结。JDK 15的亮点包括文本块、隐藏类、外部内存访问API以及密封类和记录的预览。 Java升级的下一个阶段是另一个缓降阶段,从现在起到8月20日有两个可选版本。预计9月15日正式上市。JDK15紧随3月17日发布的JDK14。甲骨文公司遵循标准Java六个月的发布计划,新版本每年发布两次。 第二个孵化器外部内存访问API,它可以使Java程序安全、高效地访问Java堆栈之外的外部内存。API应该能够对各种类型的外部内存进行操作,例如本机内存、持久内存和托管堆。许多Java程序访问外存,如Ignite和MapDB。API将有助于避免垃圾收集相关的成本和不可预测性,跨进程共享内存,并通过将文件映射到内存来序列化和反序列化内存内容。javaAPI目前还没有为访问外存提供令人满意的解决方案。但有了新的提议,即API不应该破坏JVM的安全性。这个功能在jdk14中经历了早期的孵化阶段,在jdk15中进行了改进。 密封类的预览。与接口一起,密封类限制了那些可以扩展或执行的其它类或接口。此特性的目标包括允许类或接口的作者控制由哪些代码负责实现它,并提供比访问修饰符更具声明性的方式来限制超类的使用,还有通过支持对模式的详尽分析来支持模式匹配的未来方向。 删除对Solaris/SPARC、Solaris/x64和Linux/SPARC端口的源代码和构建支持,而在JDK 14中不赞成删除这些端口,但可在将来的版本中删除它们。许多正在开发的项目和功能(如Valhalla、Loom和Panama)需要进行重大更改以适应CPU架构和操作系统特定代码。放弃对Solaris和SPARC端口的支持将使OpenJDK社区的贡献者加快开发新特性,从而推动平台向前发展。近年来,Solaris和SPARC都被Linux操作系统和Intel处理器所取代。 记录作为不可变数据的透明载体的类,在jdk14中作为早期预览发布之后,将被包含在jdk15的第二个预览版本中。该计划的目标包括设计一个面向对象构造来表达一个简单的值聚合。以协助程序员专注于不可变数据的建模,而非扩展性行为。自动实现数据驱动的方法,如equals和assessors,并保留Java中长期存在的原则,如名义类型和迁移兼容性。记录可以看作是名义元组。 基于爱德华曲线数字签名算法(EdDSA)的密码签名。EdDSA是一种现代的椭圆曲线方案,对比JDK中现有的签名方案更具有优势。EdDSA将仅在SunEC提供程序中执行。与其他签名方案相比,EdDSA具有更高的安全性和性能,因此受到人们的青睐;加密库中已经支持EdDSA,如OpenSSL和BoringSSL。 通过替换java.net.datagram.Socket和java.net.MulticastSocket APIs的实现以更简单和更现代的方式重新实现以前的DatagramSocket API。且易于调试和维护使用项目中当前正在探索的虚拟线程。新计划是JDK增强建议353的后续,该提议重新实现了遗留的Socket API。当前java.net.datagram.Socket和java.net.MulticastSocket的实现可以回溯到jdk1.0,那时IPv6还在开发中。因此,当前的MulticastSocket执行试图以难以维护的方式调节IPv4和IPv6。 默认情况下禁用偏向锁定并弃用所有相关的命令行选项。其目标是确定是否需要继续支持高代价维护,及偏向锁的遗留同步优化,该优化用于热点虚拟机,以减少竞争性锁定的开销。尽管某些Java应用程序可能会在禁用偏向锁定的情况下出现性能的回归,但是偏向锁的性能增益通常不如以前那么明显。instanceof匹配第二个预览模式,紧随JDK 14中之前的预览。模式匹配允许程序中的通用逻辑,主要是从对象中有条件地提取组件,以更简洁地表达。Haskell和C等语言因其简洁和安全而采用了模式匹配。 隐藏类,即不能被其他类字节码直接使用的类,倾向于借助框架使用,框架会在运行时生成类并通过反射间接使用它们。隐藏类可被定义为访问控制嵌套的成员,并且可以独立于其他类进行卸载。这项提议将提高JVM上所有语言的效率,方法是使用标准API定义不可发现且生命周期有限的隐藏类。
用户2781897
2020/09/10
8080
拥抱变化,面向Java17,Java8-18全系列特性详解
当我们大部分Javaer还沉浸在Java 8 的特性中时,Java 19 预计在2022年9月20号发布,现在半年发布一次的节奏真让人应接不暇,况且Spring Boot 3.0开始最低版本为Java 17,Spring Security、KafKa等也都宣布在后期版本最低需要Java 17 ,所以我们恶补一下Java 8-18的特性很有必要。
阿提说说
2022/11/18
2.5K0
拥抱变化,面向Java17,Java8-18全系列特性详解
JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK15特性讲解】
2020年9月15日,java15正式发布,(风平浪静的一个版本)共有14个JEP,是时间驱动形式发布的第六个版本.相关文档: https://openjdk.java.net/projects/jdk/15/
用户4919348
2022/12/15
1K0
JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK15特性讲解】
Java 17 更新(12):支持上下文的序列化过滤器,又一次给序列化打补丁
接下来我们介绍 Java 17 合入的最后一个还没介绍的提案:JEP 415: Context-Specific Deserialization Filters,这是一条对于反序列化的更新。
bennyhuo
2021/10/19
1K0
Java 17 更新(12):支持上下文的序列化过滤器,又一次给序列化打补丁
Java9-17新特性总结
Java 9 模块的重要特征是在其工件的根目录中包含了一个描述模块的 module-info.java 文 件通过exports向外开放接口/类, 限定模块使用范围同时通过requires定义该模块所需依赖
code-x
2022/06/21
6610
相关推荐
Java 17 新特性,快到起飞?惊呆了!
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验