JDK 17 – Java 17 中的新特性

简介: JDK 17 – Java 17 中的新特性


Java 17 LTS 是 Java SE 平台的最新长期支持版本。JDK 17 二进制文件可以在生产中免费使用,并且可以免费重新分发,LTS 代表长期支持,它于2021年9月15日发布 。

这意味着什么?

当人们熟悉并理解操作时,没有单调的心态和频繁的发布。基本上,JDK17 的 Open LTS 版本现已发布,它由开发工具、一组库、一个 Java 虚拟机和其他文件组成。每次发布时,我们都会看到新功能,同时检查其中一些是否被更改或删除。让我们讨论开放 LTS 版本的演变,否则直接切换到安装部分或更新到它。

Open LTS Java 版本的演变

还记得过去,我们期待新的 Java 版本,例如 2006 年到 2012 年的 Java 6,2013 年的 Java 7,然后是 2014 年的 Java 8,其中引入了最流行的概念 lambda流和流。直到现在都很好,因为新版本可以解释为 Java 正在成为 IT 行业的热门产品。现在坚持下去,我们会在很短的时间间隔内看到新的 Java 版本,例如到 2017 年我们有 Java 9,到 2018 年我们有 Java 10,同年我们确实看到了 Java 11。但是这一次 Java 在行业中有着更深的根基大多数公司选择 Java 作为他们的主要开发语言,对员工的技能要求也很高。

众所周知,这种编程语言是由Oracle 系统拥有、设计和更新的,所以这家公司会大规模扩张,2018 年之后,我们可以绘制出每年肯定会推出新版本的模式。我们也在 2019 年看到 Java 12、Java 13。到 2020 年,我们看到新的 Java LTS 发布周期是每 6 个月之后,Java 14 和 Java 15 也会在 2020 年发布。现在在现在去年,我们已经将 Java 16 视为最新的 LTS,与往常一样,随着快速扩展,我们也看到一个新的 LTS Java17,它于 2021 年 9 月 15 日推出, 现在回到最近。

大多数开发人员喜欢它,有些不是他们的感知,但对于有进取心的世界来说它变得乏味,因为它对公司来说变得紧张,在连续 6 个月后,新版本推出一些新功能,同时消除一些以前的功能,所以为了正确的工作流程,每个 LTS 版本都可以访问长达数年。当今世界有一些公司,其中一些公司选择稳定性,而其他公司则选择引入新功能的可扩展性和易用性。

JDK17 中引入的特性

为了转换工作流程每个人都为这个版本的重大更新而疯狂。但开发人员应该感到失望,因为没有像我们从通常称为 JEPS 的 JDK 增强提案中看到的那样大的发布更新版本检查,如下所示:

306:恢复始终严格的浮点语义

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

382:新的 macOS 渲染管线

391:macOS/AArch64 端口

398:弃用 Applet API 以进行删除

403:强封装的JDK内部

406:开关模式匹配(预览)

407:移除 RMI 激活

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

411:弃用安全管理器以进行删除

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

414:Vector API(第二孵化器)

415:特定于上下文的反序列化过滤器

由此,我们认为此版本中没有显著的标记更改,但仍在深入了解它们,为此我们将它们分为 4 类,如下所示:

  1. 不错的开发人员类型的东西
  2. 特定的开发人员类型的东西
  3. 跟上苹果的各种东西
  4. 清理各种东西

类别 1:优秀的开发人员

406:开关模式匹配(预览)

1.1 交换机的模式匹配:

它通过允许模式出现在 case 标签中来允许模式和语句,从而扩展了 switch 表达式和语句的表达能力和适用性。它还允许在需要时放松转换的历史无效敌意。

引入了两种新模式,如下所示:

  • 保护模式:使用模式 && 布尔表达式进一步细化
  • 带括号的模式

1.2密封类:

使用密封类和接口增强 java 编程语言。密封类和接口限制哪些其他类或接口可以扩展或实现它们。

语法:

java

复制代码

public abstract sealed class Animal
permits Dog, Cat, Rabbit {...}

类别 2:特定开发人员

306:恢复始终严格的浮点语义

2.1 恢复 Always-Strict 浮点语义:

它使浮点运算始终严格。

2.2 增强型伪随机数生成器:

它为伪随机数生成器提供了新的接口类型和实现,以便更轻松地使用各种 PRNG 算法并更好地支持基于流的操作。

2.3 强封装的JDK内部:

它强有力地封装了 JDK 的所有非关键内部元素

2.4 外部函数和内存API(孵化器):

它引入了一个 API,Java 程序可以通过它在 Java 运行时之外解释代码和数据。

2.5 Vector API(二次孵化器):

它引入了一个 API 来表达向量计算,这些计算在运行时可靠地编译为最佳向量指令。

2.6 上下文特定的反序列化过滤器:

它允许应用程序配置特定于上下文和动态选择的反序列化过滤器。

类别 3:跟上 Apple 的各种东西

3.1 新的 macOS 渲染管线:

它更改了 macOS 的 Java 2D macOS 渲染管道,以使用 Apple Metal API 而不是已弃用的 Apple OpenGL API。

3.2 macOS/AArch64 端口

类别 4:清理各种东西

4.1 弃用 Applet API 以进行删除:

Applet API 将被删除,因为它已被弃用,因为 JDK9 大多数浏览器不再支持它。

4.2 移除RMI激活:

尽管 RMI 仍在使用,但 RMI 激活机制随着过去十年的 Web 技术而过时。

4.3 移除实验性 AOT 和 JIT 编译器

删除实验性的基于 Java 的提前 (AOT) 和即时 (JIT) 编译器。

4.4 弃用安全管理器以进行移除:

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

安装JDK17

现在让我们了解一下如何下载最新版本。为了下载最新的 LTS 版本,即 JDK

步骤 1: 使用浏览器访问 Oracle 网站。步骤 2: 根据您的操作系统下载版本,不同的操作系统请参考如下:

  • 适用于 Linux 的 .debian
  • 适用于 macOS 的 .dmg
  • 适用于 Windows 的 .exe

继续下一步并选择要在本地计算机上安装的目录,注意可以在安装过程中通过以下快照看到 JRE 内置支持,因此您无需按照标题图像中的理由单独添加它。


19.png

步骤 3: 设置系统环境变量的路径,为了检查是否安装了这个新的 JDK,请通过终端输入以下命令进行验证。

javac --version
java --version


目录
相关文章
|
9天前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
26 2
|
10天前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
28 3
|
10天前
|
存储 Java 数据处理
Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位
【10月更文挑战第16天】Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位。本文通过快速去重和高效查找两个案例,展示了Set如何简化数据处理流程,提升代码效率。使用HashSet可轻松实现数据去重,而contains方法则提供了快速查找的功能,彰显了Set在处理大量数据时的优势。
21 2
|
12天前
|
存储 算法 Java
Java Set因其“无重复”特性在集合框架中独树一帜
【10月更文挑战第14天】Java Set因其“无重复”特性在集合框架中独树一帜。本文深入解析Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定的数据结构(哈希表、红黑树)确保元素唯一性,并提供最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的`hashCode()`与`equals()`方法。
23 3
|
4天前
|
Java API 开发者
Java 8新特性之Stream API详解
【10月更文挑战第22天】Java 8引入了重要的Stream API,用于处理集合数据。本文分三部分介绍:基本概念与原理、使用方法及应用实例。Stream API支持延迟执行、惰性求值,提供过滤、映射、排序、聚合等操作,使代码更简洁、易读。文中详细讲解了创建Stream、中间操作、终端操作以及具体应用场景,如排序、过滤、映射和聚合。
10 3
|
7天前
|
存储 Java API
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
23 3
|
5天前
|
设计模式 Java API
[Java]静态代理与动态代理(基于JDK1.8)
本文介绍了代理模式及其分类,包括静态代理和动态代理。静态代理分为面向接口和面向继承两种形式,分别通过手动创建代理类实现;动态代理则利用反射技术,在运行时动态创建代理对象,分为JDK动态代理和Cglib动态代理。文中通过具体代码示例详细讲解了各种代理模式的实现方式和应用场景。
[Java]静态代理与动态代理(基于JDK1.8)
|
7天前
|
存储 安全 Java
Java Map新玩法:深入探讨HashMap和TreeMap的高级特性
【10月更文挑战第19天】Java Map新玩法:深入探讨HashMap和TreeMap的高级特性,包括初始容量与加载因子的优化、高效的遍历方法、线程安全性处理以及TreeMap的自然排序、自定义排序、范围查询等功能,助你提升代码性能与灵活性。
15 2
|
10天前
|
Java 开发者
在Java集合世界中,Set以其独特的特性脱颖而出,专门应对重复元素
在Java集合世界中,Set以其独特的特性脱颖而出,专门应对重复元素。通过哈希表和红黑树两种模式,Set能够高效地识别并拒绝重复元素的入侵,确保集合的纯净。无论是HashSet还是TreeSet,都能在不同的场景下发挥出色的表现,成为开发者手中的利器。
23 2
|
10天前
|
Java
Java Set以其“不重复”的特性,为我们提供了一个高效、简洁的处理唯一性约束数据的方式。
【10月更文挑战第16天】在Java编程中,Set接口确保集合中没有重复元素,每个元素都是独一无二的。HashSet基于哈希表实现,提供高效的添加、删除和查找操作;TreeSet则基于红黑树实现,不仅去重还能自动排序。通过这两个实现类,我们可以轻松处理需要唯一性约束的数据,提升代码质量和效率。
23 2