当前位置: CompoTech China > 业界资讯 >
 

甲骨文正式发布Java 17

本文作者:甲骨文       点击: 2021-09-23 11:25
前言:
全新的 Java 长期支持版本提供数千个更新 进一步优化语言和平台,协助开发人员提高工作效率 Oracle JDK 17 将为客户提供安全性、性能和错误修复更新至少至 2029 年 9 月
2021年9月23日--甲骨文正式发布 Java 17,这是备受欢迎的程序设计语言和开发平台最新推出的版本。Java 17 提供了数千种性能、稳定性和安全性更新,以及14 个JEP(JDK Enhancement Proposal) 来进一步优化 Java 语言和平台,从而协助开发人员提高工作效率。

甲骨文每六个月如约发布新版本的 Java,而 Java 17 是最新发布的 长期支持 (Long-Term Support, LTS) 版本。此版本是甲骨文的工程师与全球 Java 开发人员小区的成员透过 OpenJDK 小区 和 JCP (Java Community Process) 共同合作的成果。自三年前发布 JDK 11 LTS以来,甲骨文已经实施了超过 70 项 JEP。

提供更简单的许可证
甲骨文将从 Oracle JDK 17 发行版开始提供免费使用的许可证,并在下一个 LTS 版本发布之后继续提供整整一年。同时,甲骨文也将延续自 2017 年以来的做法,继续根据开源通用公共许可证 (GPL) 发布 Oracle OpenJDK 发行版。 

增强对客户的长期支持
甲骨文与 Java 开发人员小区和 JCP 合力优化 LTS 计划,如果组织希望迁移到较新的 Java LTS 版本,他们将拥有更大的灵活性,并且可以更好地掌控时间。下一个 LTS 版本将会是 Java 21,于 2023 年 9 月推出,LTS 版本的发布周期将从现有的三年缩短至两年。 

Oracle LTS 和 Java SE 的订阅客户可以按自身计划迁移到 Java 17。甲骨文将为客户提供 Java 17 的安全性、性能和错误修复更新,至少到 2029 年 9 月。 

甲骨文 Java 平台开发副总裁 Georges Saab 表示:「在过去的三年里,许多开发人员都很喜欢这些新功能,我们看到生态系统真正适应了每六个月一次的发布节奏。Java 开发人员目前面临的一大挑战是,他们的组织只允许使用最新的 LTS 版本。现在,LTS 版本将改为每两年发布一次,组织较为保守的开发人员也可以选择和连结他们喜欢和想要使用的功能。」

IDC 软件开发研究副总裁 Arnal Dayaratna 表示:「甲骨文正在做出改变,不仅将长期支持版本的发布周期改为两年,同时新推出的许可证也更宽松,延长了生产环境的 Oracle JDK 免费使用期限,让 Java 小区获益无穷。因此,组织可以更灵活地管理云、本地和混合环境中复杂的现代应用程序开发和部署。」

加快 Java 在云中的采用
Java 是一个成功的开发平台,以满足开发人员不断变化的需求为目标而持续进行创新。为了加速 Java 在云中的采用,甲骨文最近推出了 Oracle Java 管理服务 (Oracle Java Management Service),这是一项新的 Oracle 云端基础设施 (OCI) 原生服务,可帮助组织在本地或任何云端上管理 Java 运行时与应用程序。 

Oracle Java 管理服务能够协助客户了解整个企业中的Java部署,这涵盖了安装在企业环境中的所有 Java 版本,及在开发和生产中运行的 Java 版本。Oracle Java 管理服务能够突显任何未计划运行的 Java 应用程序,并检查所有已安装的 Java 版本是否安装了最新的安全补丁,确保版本实时更新。

JDK 17 增加了新的语言增强功能,对函式库进行更新,支持新款 Apple 计算机,移除和弃用旧功能,并且确保用户编写的 Java 代码在未来的 JDK 版本中可以继续正常工作。此外,JDK 17 还提供语言功能预览版和孵化阶段的 API,以收集来自 Java 小区的回馈。具体更新内容包括:
 
Java 语言增强功能
· JEP 409:密封类 — 密封类和接口限制其他类别亦或是接口可以扩展或实施它们。此增强功能是Project Amber的又一项改进,旨在透过发展 Java 语言来提高开发人员的生产力。

对函式库进行更新和优化
JEP 306:恢复始终严格的浮点语义 — 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 — 所有 Web 浏览器供货商正计划或已经停止支持 Java 浏览器插件。Applet API 已于 2017 年 9 月在 Java 9 中弃用,但并未移除。
· JEP 407:移除 RMI 启动 — 移除远程方法调用 (RMI) 启动机制,保留其他 RMI。
· JEP 410:移除实验性的 AOT 和 JIT 编译程序 — 以Java为基础的预先 (AOT) 和实时 (JIT) 实验性编译程序并未被广泛采用。作为一个选择性功能,AOT 和 JIT 编译程序已在 JDK 16 中移除,本次在 JDK 源代码中移除。
· JEP 411:弃用即将删除的安全管理器 — 从 Java 1.0 开始,安全管理器一直都不是保护客户端 Java 代码的主要手段,也很少用于保护服务器端代码。在未来的版本中会移除安全管理器,以消除大量维护负担,让 Java 平台能够持续发展。

朝向未来的Java程序
· JEP 403:JDK 内部强封装 — 用户再也不能像在 JDK 9 到 JDK 16 中一样,透过单个命令行选项来放宽对内部元素的强封装。使用者仍然可以连结现有的内部 API ,但需要以命令行参数形式或 JAR 文件列表属性进行,且每个套组应该放宽封装。此更改将使应用程序更安全,并减少对非标准、内部 JDK 实施细节的依赖。 

未来JDK发行版的预览版和孵化器
· JEP 406:Switch 模式比对(预览版)— 允许Switch表达式针对多个模式进行测试,每个模式都有特定的操作,从而简洁、安全地表达数据导向式的复杂查询。
· JEP 412:外部函数和内存 API(孵化阶段)— 改进 JDK 14 和 JDK 15 中引入的孵化 API,让 Java 程序与 Java 运行时之外的代码和数据进行互操作。透过有效调用外部函数(即 JVM 之外的代码),以及安全地链接外部内存,这些 API 可以调用本地函式库和处理本地数据,并且不受 Java 本机接口 (Java Native Interface, JNI) 的脆弱性和复杂性影响。这些 API 正在Project Panama中开发,目的是改进 Java 和非 Java 代码之间的交互性。 
· JEP 414:向量 API(二次孵化阶段)— 允许以一种在运行时,可靠地编译为支持的 CPU 架构上的最佳向量指令的方式表达向量计算,从而优化等效标量计算的性能。

其他资源
· 下载Oracle JDK 17
· 阅读Java 17 技术部落格
· 观看Oracle Developer Live:Java 创新
· 了解有关OpenJDK 17 通用发行版的更多信息
· 了解有关Java 管理服务的更多信息
· 了解有关Oracle Java SE 订阅的更多信息
 
关于甲骨文
甲骨文公司在Oracle云端服务中提供一系列整合应用程序和安全、自主的基础设施。如需了解更多关于甲骨文公司(NYSE:ORCL)的信息,请点阅:www.oracle.comwww.oracle.com/tw

商标
Oracle、Java 和 MySQL为甲骨文公司的注册商标。