博主猫头虎的技术世界
🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能!
专栏链接
:
🔗 精选专栏:
- 《面试题大全》 — 面试准备的宝典!
- 《IDEA开发秘籍》 — 提升你的IDEA技能!
- 《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师!
- 《100天精通Golang(基础入门篇)》 — 踏入Go语言世界的第一步!
- 《100天精通Go语言(精品VIP版)》 — 踏入Go语言世界的第二步!
- 《21天精通IPV4 To IPV6》 — 踏入新IP时代的大门!
领域矩阵:
🌐 猫头虎技术领域矩阵:
深入探索各技术领域,发现知识的交汇点。了解更多,请访问:
JDK 17新更新的 14个新特性 🎉🚀
目录 📚
- JDK 17新更新的 14个新特性 🎉🚀
- 特性介绍
- 1. **306: 恢复始终严格模式的浮点语义** 🧮
- 2. **356: 增强型伪随机数发生器** 🎲
- 3. **382: 新增 macOS 渲染管道** 🍏
- 4. **391: 支持将 JDK 移植到 macOS 或 AArch64** 💻
- 5. **398: 弃用待移除的 Applet API** 🗑️
- 6. **403: 强封装 JDK 内部 API** 🔒
- 7. **406: switch 模式匹配进入预览阶段** 🔀
- 8. **407: 移除 RMI(远程方法调用)激活机制** 🚫
- 9. **409: 密封类** 🔏
- 10. **410: 移除实验性 AOT 和 JIT 编译器** ❌
- 11. **411: 弃用待移除的安全管理器** 🛑
- 12. **412: 外部函数和内存 API(孵化器)** 🌐
- 13. **414: Vector API(第二孵化器)** 📊
- 14. **415: 上下文特定的反序列化过滤器** 🛡️
- Spring Boot 3.0 最低只支持JDK 17,已经不再向下兼容,这就意味着未来很多的开发者必定逐步从JDK8 转到JDK17。
特性介绍
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
- 公众号: 猫头虎技术团队
⚠️ 版权声明:
本文为原创文章,版权归作者所有。未经许可,禁止转载。更多内容请访问猫头虎的博客首页。
点击
下方名片
,加入猫头虎领域社群矩阵。一起探索科技的未来,共同成长。