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


目录
相关文章
|
2月前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
74 2
|
1月前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
105 53
|
3天前
|
存储 Java 开发者
什么是java的Compact Strings特性,什么情况下使用
Java 9引入了紧凑字符串特性,优化了字符串的内存使用。它通过将字符串从UTF-16字符数组改为字节数组存储,根据内容选择更节省内存的编码方式,通常能节省10%至15%的内存。
|
9天前
|
容器
jdk8新特性-详情查看文档
jdk8新特性-详情查看文档
26 7
|
12天前
|
存储 Java 数据挖掘
Java 8 新特性之 Stream API:函数式编程风格的数据处理范式
Java 8 引入的 Stream API 提供了一种新的数据处理方式,支持函数式编程风格,能够高效、简洁地处理集合数据,实现过滤、映射、聚合等操作。
32 5
|
14天前
|
Oracle 安全 Java
深入理解Java生态:JDK与JVM的区分与协作
Java作为一种广泛使用的编程语言,其生态中有两个核心组件:JDK(Java Development Kit)和JVM(Java Virtual Machine)。本文将深入探讨这两个组件的区别、联系以及它们在Java开发和运行中的作用。
36 1
|
23天前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
50 1
|
1月前
|
分布式计算 Java API
Java 8引入了流处理和函数式编程两大新特性
Java 8引入了流处理和函数式编程两大新特性。流处理提供了一种声明式的数据处理方式,使代码更简洁易读;函数式编程通过Lambda表达式和函数式接口,简化了代码书写,提高了灵活性。此外,Java 8还引入了Optional类、新的日期时间API等,进一步增强了编程能力。这些新特性使开发者能够编写更高效、更清晰的代码。
31 4
|
2月前
|
存储 Java API
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
83 3
|
2月前
|
设计模式 Java API
[Java]静态代理与动态代理(基于JDK1.8)
本文介绍了代理模式及其分类,包括静态代理和动态代理。静态代理分为面向接口和面向继承两种形式,分别通过手动创建代理类实现;动态代理则利用反射技术,在运行时动态创建代理对象,分为JDK动态代理和Cglib动态代理。文中通过具体代码示例详细讲解了各种代理模式的实现方式和应用场景。
30 0
[Java]静态代理与动态代理(基于JDK1.8)