Java 17 特性与示例2025 年 3 月 19 日 | 4 分钟阅读 Java SE 平台的最新长期支持版本是 Java 17 LTS。根据 Oracle 的“无费用条款和条件许可证”,JDK 17 二进制文件可免费用于生产和再分发,无需支付任何费用。 LTS 代表长期支持。它将于 2021 年 9 月 15 日发布。 现在可以使用 JDK17 的开放 LTS 版本来创建 Web 和桌面应用程序。它包括开发工具、一组库、一个 Java 虚拟机和其他文件。在每个版本中,我们都会观察到新功能,同时关注其中一些功能的变化或删除。如果没有单调的视角和定期发布,需要时间来熟悉并掌握新版本的功能。 JDK17 新功能的介绍我们所有人都在为这个版本中的重大变化而疯狂,以促进工作流程。但是,开发人员应该会感到不满,因为没有这种大的发布升级版本检查,正如我们在 JDK 改进提案(通常称为 JEPS)中所观察到的,如下所示
我们认为此版本中没有实质性的标记更改,但我们正在进行更深入的挖掘以了解它们。因此,我们将其分类如下
第一类:与开发人员相关的好功能
Switch 模式匹配(预览) 通过允许模式出现在 case 标签中,使 switch 语句和表达式更加灵活和富有表现力。当需要时,它也使放宽 switch 的 null 敏感性成为可能。 主要有两种模式,如下所示
生成密封类 向 Java 语言添加密封类和接口,使其更好。密封类和接口限制了其他类,接口可以分别扩展和实现它们。 展示一些其他与 JEP 406 相关的模式匹配的进展,这将使其能够更复杂、更清晰地检查类型、强制转换和操作代码模式。 语法 以下语法在 java 17 版本中生成一个密封类 第二类:特定于开发人员的信息或功能恢复或重建“始终严格的浮点数”语义 此 JEP 使浮点运算统一严格,主要用于科学应用。默认浮点运算、strict 或 strictfp 都在每个平台上为使用浮点数的计算提供相同的结果。 矢量 API(第二个孵化器) Vector API 与单指令,多数据/SIMD 运算一起使用,其中包括同时处理的多组指令。它使用专门的 CPU 硬件,该硬件提供矢量指令,并支持将这些指令作为管道运行。 因此,新的 API 将使程序员能够编写更有效的代码。它更好地利用了底层硬件的功能。 基于上下文的(特定于内容的)反序列化过滤器 JDK 9 版本使我们能够验证从不受信任的来源接收到的序列化数据,这是安全问题的常见来源。 应用程序可以配置动态选择的、特定于上下文的反序列化过滤器。 增强了“伪随机”数生成器 它为伪随机数生成器提供了一种新的接口类型和解决方案,以简化使用多个 PRNG 算法并正确支持基于流的操作。 JDK 内部封装性增强 由于 JEP 403 删除了标志 -illegal-access,它标志着朝着强烈封装 JDK 内部方向迈出了一步。 如果存在该标志并且平台将忽略该标志,则控制台将发送一条消息以停止使用给定的标志。 外部函数和内存 API(孵化器) Java 程序员可以从 JVM 外部检索代码。得益于外部函数和内存 API,它控制堆外的内存。 其目的是取代 JNI API 并在性能和安全性方面优于之前的版本。 第三类:与 Apple 相关的功能保持同步新的 macOS 渲染管道 此 JEP 为 macOS 制作了 Java 2D 内部处理管道,因为 Apple 在 macOS 10.14 中删除了 OpenGL API。 Swing GUI 使用了 OpenGL API。 除了底层引擎之外,当前的 API 没有任何修改,因为实现使用了 Apple Metal API。 macOS/AArch64 端口 Apple 宣布了一项长期战略,将其计算机系列从 X64 切换到 AArch64。借助此 JEP,JDK 现在可以在具有 AArch64 的 macOS 平台上运行。 第四类:清理各种功能删除 Applet API 以供移除 大多数浏览器将不再支持 applet API,因为它自 JDK9 以来已被弃用。 激活 RMI 的移除 RMI 在过去十年中在 Web 技术中的使用已使 RMI 激活机制过时。 删除实验性的 AOT 和 JIT 编译器 取出基于 Java 的 AOT(提前编译)和 JIT(即时编译)编译器的试用版本。 删除安全管理器。 拒绝安全管理器,以便可以在以后的更新中将其删除。 Java 1.0 版本启动安全管理器。多年来,它从未成为保护客户端代码的主要方法。 以下语法有助于使用注释删除安全管理器。 结论Java17 为用户和开发人员创建了多个功能。它轻松创建复杂的基于 Web 和基于 Java 的应用程序。为了更好的开发,有多个功能插入和删除。 下一个主题Java 中不同子序列的 GCD |
我们请求您订阅我们的新闻通讯以获取最新更新。