1

Oracle 发布 Java 17


下一个 Java 长期支持版本提供数千个更新,进一步改进语言和平台以帮助开发人员提高工作效率:


重磅!Java 17 横空出世 ..._java


Oracle JDK 17 在 2029 年 9 月之前为客户提供安全性、性能和错误修复更新


提供更简单的许可证


Oracle JDK 17 和未来的 JDK 版本是在免费使用许可下提供的,直到下一个 LTS 版本发布整整一年。


自 2017 年以来,Oracle 还将继续根据开源通用公共许可证 (GPL) 提供 Oracle OpenJDK 版本。


重磅!Java 17 横空出世 ..._java_02


加强对客户的长期支持


Oracle 正在与 Java 开发人员社区和 JCP 合作增强 LTS 调度,以便组织在何时或是否要迁移到更新的 Java LTS 版本方面具有更大的灵活性。


Oracle 提议下一个 LTS 版本应该是 Java 21,并于 2023 年 9 月推出,这会将正在进行的 LTS 发布节奏从三年改为两年。


在 Oracle LTS 和 Java SE 订阅的支持下,客户可以以最能满足其需求的速度迁移到 Java 17。


Oracle 将至少在 2029 年 9 月之前为客户提供 Java 17 的安全、性能和错误修复更新。


“在过去的三年里,我们听说有多少开发人员喜欢最新的功能,我们看到生态系统真正接受了六个月的发布节奏,”甲骨文 Java 平台组开发副总裁 Georges Saab 说。


“Java 开发人员今天面临的最大挑战之一是他们的组织只允许他们使用最新的 LTS 版本。通过将 LTS 版本改为每两年发布一次,保守组织的开发人员现在可以有更多的选择和访问他们喜欢和想要使用的功能。”


“Oracle 正在做出改变,通过将长期支持版本改为两年的节奏,并引入新的、更宽松的许可证,在更长的时间内免费提供 Oracle JDK 的生产使用,这将使 Java 社区显着受益,”博士说。. Arnal Dayaratna,IDC 软件开发研究副总裁。


“这些变化将使组织在管理云、本地和混合环境中现代应用程序开发和部署的复杂性方面具有更大的灵活性。”


加速 Java 在云中的采用


Java 是有史以来最成功的开发平台之一,它建立在满足开发人员不断变化的需求的持续创新之上。


为了加速 Java 在云中的采用,Oracle 最近推出了Oracle Java 管理服务,这是一项新的 Oracle 云基础设施 (OCI) 原生服务,可帮助组织在本地或任何云上管理 Java 运行时和应用程序。


Java 管理服务使客户能够了解他们在整个企业中的 Java 部署。这涵盖了安装在其环境中的所有 Java 版本,包括在开发和生产中运行的 Java 版本。


它还突出显示了任何计划外运行的 Java 应用程序,并检查所有已安装的 Java 版本是否都安装了最新的安全补丁。


JDK 17 包括新的语言增强、库更新、对新 Apple 计算机的支持、旧功能的删除和弃用,以及确保今天编写的 Java 代码在未来的 JDK 版本中可以继续工作而不会发生变化的工作。它还提供语言功能预览和孵化 API,以收集来自 Java 社区的反馈。



2

哪些更新


Java 语言增强


JEP 409:密封类

密封类和接口限制其他类或接口可以扩展或实现它们。

此增强功能是Project Amber 的又一项改进,旨在通过发展 Java 语言来提高开发人员的生产力。


库的更新和改进


JEP 306:Restore Always-Strict Floating-Point Semantics – Java 编程语言和 Java 虚拟机最初只有严格的浮点语义。

从 Java 1.2 开始,默认情况下允许这些严格语义中的小变化以适应当时硬件架构的限制。这些差异不再有帮助或必要,因此它们已被 JEP 306 删除。


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

为伪随机数生成器 (PRNG) 提供新的接口类型和实现。


此更改提高了不同 PRNG 的互操作性,并使根据需求请求算法变得容易,而不是对特定实现进行硬编码。


JEP 382:新的 macOS 渲染管道

使用 Apple Metal API 为 macOS 实现 Java 2D 管道。新管道将减少 JDK 对已弃用的 Apple OpenGL API 的依赖。


新平台支持


JEP 391:macOS AArch64 端口

将 JDK 移植到 macOS/AArch64 平台。


该端口将允许 Java 应用程序在新的基于 Arm 64 的 Apple Silicon 计算机上本地运行。


删除和弃用


JEP 398:弃用 Applet API 以进行删除

所有的网络浏览器供应商要么删除了对 Java 浏览器插件的支持,

要么宣布了这样做的计划。Applet API 已于 2017 年 9 月在 Java 9 中弃用,但并未删除。


JEP 407:删除 RMI 激活- 删除远程方法调用 (RMI) 激活机制,同时保留 RMI 的其余部分。


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

实验性的基于 Java 的提前 (AOT) 和即时 (JIT) 编译器是实验性功能,


但并未被广泛采用。作为可选的,它们已经从 JDK 16 中删除。


这个 JEP 从 JDK 源代码中删除了这些组件。


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

安全管理器可追溯到 Java 1.0。


多年来,它一直不是保护客户端 Java 代码的主要手段,


也很少用于保护服务器端代码。


在未来的版本中删除它将消除重大的维护负担并使 Java 平台向前发展。


面向未来的 Java 程序


JEP 403:强封装 JDK 内部

不再可能通过单个命令行选项放松内部元素的强封装,就像在 JDK 9 到 JDK 16 中那样。


仍然可以访问现有的内部 API ,但它现在需要枚举,作为命令行参数或 JAR 文件清单属性,每个包应该放宽封装。此更改将导致应用程序更安全,并减少对非标准、内部 JDK 实现细节的依赖。


后续 JDK 版本的预览和孵化器


JEP 406 : Pattern Matching for switch (Preview)

允许针对多个模式测试一个表达式,每个模式都有一个特定的动作,


以便可以简洁安全地表达复杂的面向数据的查询。


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

改进了 JDK 14 和 JDK 15 中引入的孵化 API,使 Java 程序能够与 Java 运行时之外的代码和数据进行互操作。


通过有效调用外部函数(即 JVM 外部的代码),并通过安全访问外部内存,这些 API 使 Java 程序能够调用本机库并处理本机数据,而没有 Java 本机接口 (JNI) 的脆弱性和复杂性。


这些 API 正在Project Panama中开发,旨在改进 Java 和非 Java 代码之间的交互


JEP 414:矢量 API(第二孵化器)

允许表达矢量计算,这些计算在运行时可靠地编译为支持的 CPU 架构上的优化矢量指令,从而实现优于等效标量计算的性能。



3

Java 17下载链接


Oracle JDK 17:下载链接:https://www.oracle.com/java/technologies/downloads/


重磅!Java 17 横空出世 ..._oracle_03


Open JDK 17下载链接http://jdk.java.net/17/


重磅!Java 17 横空出世 ..._oracle_04


最后,关于新发布的 java17 你如何看呢?

 

PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。