JDK 17新更新的 14个新特性

博主猫头虎的技术世界

🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能!

专栏链接

🔗 精选专栏

领域矩阵

🌐 猫头虎技术领域矩阵
深入探索各技术领域,发现知识的交汇点。了解更多,请访问:

在这里插入图片描述

JDK 17新更新的 14个新特性 🎉🚀

特性介绍

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

新特性概览

1. 306: 恢复始终严格模式的浮点语义 🧮

Restore Always-Strict Floating-Point Semantics

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

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

Enhanced Pseudo-Random Number Generators

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

RandomGenerator generator = RandomGeneratorFactory.all()
    .filter(RandomGeneratorFactory::isJumpable)
    .filter(factory -> factory.stateBits() > 128)
    .findAny()
    .map(RandomGeneratorFactory::create)
    .orElseThrow();
  • RandomGenerator
  • RandomGeneratorFactory

3. 382: 新增 macOS 渲染管道 🍏

New macOS Rendering Pipeline

4. 391: 支持将 JDK 移植到 macOS 或 AArch64 💻

macOS/AArch64 Port

5. 398: 弃用待移除的 Applet API 🗑️

Deprecate the Applet API for Removal

弃用、删除标准 Java 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

6. 403: 强封装 JDK 内部 API 🔒

Strongly Encapsulate JDK Internals

7. 406: switch 模式匹配进入预览阶段 🔀

Pattern Matching for switch (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();
    };
}

8. 407: 移除 RMI(远程方法调用)激活机制 🚫

Remove RMI Activation

9. 409: 密封类 🔏

Sealed Classes

密封类是由 JEP 360 提出的,并在 JDK 15 中作为预览功能提供。它们由 JEP 397 再次提出并进行了改进,并作为预览功能在 JDK 16 中提供。该 JEP 建议在 JDK 17 中完成密封类,与 JDK 16 没有任何变化。

10. 410: 移除实验性 AOT 和 JIT 编译器

Remove the Experimental AOT and JIT Compiler

11. 411: 弃用待移除的安全管理器 🛑

Deprecate the Security Manager for Removal

弃用安全管理器,在后续版本中移除。安全管理器可追溯到 Java 1.0。多年来,它一直不是保护客户端 Java 代码的主要手段,也很少用于

保护服务器端代码。为了推动 Java 向前发展,Oracle 打算弃用安全管理器,以便与旧 Applet API(JEP 398)一起删除。

12. 412: 外部函数和内存 API(孵化器) 🌐

Foreign Function & Memory API (Incubator)

Java 程序可以通过该 API 与 Java 运行时之外的代码和数据进行互操作。通过有效调用外部函数(即 JVM 之外的代码),以及安全地访问外部内存(即不由 JVM 管理的内存),API 使 Java 程序能够调用本地库和处理本地数据,而没有 JNI。

13. 414: Vector API(第二孵化器) 📊

Vector API (Second Incubator)

引入一个 API 来表达向量计算,这些计算在运行时可靠地编译为支持的 CPU 架构上的最佳向量指令,从而实现优于等效标量计算的性能。

14. 415: 上下文特定的反序列化过滤器 🛡️

Context-Specific Deserialization Filters

允许应用程序通过 JVM 范围的过滤器工厂配置特定于上下文和动态选择的反序列化过滤器,该工厂被调用以为每个单独的反序列化操作选择一个过滤器。

关于 JDK 17 新特性开发应用,关注公众号 猫头虎技术团队,后续文章更新!

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

PS: 2023.1.28 添加

更多新特性测试代码请参考: https://blog.csdn.net/qq_44866828/article/details/128601472

在这里插入图片描述

👉 更多信息:有任何疑问或者需要进一步探讨的内容,欢迎点击下方文末名片获取更多信息。我是猫头虎博主,期待与您的交流! 🦉💬

🚀 技术栈推荐
GoLang, Git, Docker, Kubernetes, CI/CD, Testing, SQL/NoSQL, gRPC, Cloud, Prometheus, ELK Stack

💡 联系与版权声明

📩 联系方式

  • 微信: Libin9iOak
  • 公众号: 猫头虎技术团队

⚠️ 版权声明
本文为原创文章,版权归作者所有。未经许可,禁止转载。更多内容请访问猫头虎的博客首页

点击下方名片,加入猫头虎领域社群矩阵。一起探索科技的未来,共同成长。

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫头虎

一分也是爱,打赏博主成就未来!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值