Python知识分享网 - 专业的Python学习网站 学Python,上Python222
jdk17新特性说明和性能方面的提升介绍 PDF 下载
发布于:2024-01-27 15:57:18
(假如点击没反应,多刷新两次就OK!)

jdk17新特性说明和性能方面的提升介绍  PDF 下载  图1

 

 

 

资料内容:

 

 

 

概述
据 Oracle Java SE 支持路线图显示,JDK 17 是自 Java 11 以来的首个长期支持
版本。对于 JDK 17,Oracle 官宣会提供支持到 2029 年,这给了业界一个相
当长的期许。
 
新特性
Java 17 的 14 个 新特性,分别是:
306:恢复始终严格的浮点语义
356:增强型伪随机数发生器
382:新的 macOS 渲染管道
391:macOS/AArch64 端口
398:弃用即将删除的 Applet API
403:强封装 JDK 的内部 API
406:Switch 模式匹配(预览)
407:删除 RMI 激活
409:密封类
410:删除实验性 AOT 和 JIT 编译器
411:弃用即将删除安全管理器
412:外部函数和内存 API(孵化器)
414:Vector API(第二次进行特性孵化)
415:特定于上下文的反序列化过滤器
 
 
密封类(Sealed Class)
Jdk17 之前的版本带有 final 修饰符的类是不能继承的,那如果有些情况,我们还是希望能
扩展类的功能,但是限制只有某些类能继承呢?在 Java 15 和 16 中引入了 Sealed Class
的功能预览,在 Java 17 中作为标准功能提供。Sealed Class 只允许特定的类继承。
// 只允许 Bicycle, Car, Truck 继承
public abstract sealed class Vehicle permits Bicycle, Car, Truck {...}
// Car 带有 final 修饰符,防止进一步扩展
public final class Car extends Vehicle {...}
// Truck 带有 sealed 修饰符,只允许特定的类继承public sealed class Truck extends Vehicle permits PickTruck, CyberTruck {...}
// Bicycle 带有 non-sealed 修饰符,任何类都可以继续扩展
public non-sealed class Bicycle extends Vehicle {...}
// 任意扩展 Bicycle 类
public class Motor extends Bicycle {...}
使用 Sealed Class 还有几点注意事项:
被许可的子类,必须在编译时能被父类访问到。
被许可的子类,必须直接继承 Sealed 父类。
被许可的子类,必须带有 final,sealed,non-sealed 三个修饰符之一。
被许可的子类必须在同一个 Java 模块中。
 
JDK 内部元素强封装
很多程序员以损害安全性和可维护性的方式使用 JDK 的内部元素比如一些非 public 类、方
法和字段。为了继续提高 JDK 的安全性和可维护性,默认强封装 JDK 的所有内部元素,从
而限制对它们的访问,除了关键的内部 API 如 sun.misc.Unsafe。