一篇文章了解新发布的Java JDK 11

2次阅读

共计 2748 个字符,预计需要花费 7 分钟才能阅读完成。

Java JDK 11 删除了 CORBA,Java EE 和 JavaFX 支持,但添加了十几个主要新功能。
Java Development Kit(JDK)11 现已普遍可用,可供生产使用,提高了工作效率,并提供了实现 HTTP/ 2 的 HTTP 客户端 API。
Java Standard Edition(SE)11 有 16 个主要功能更改。Java 11 还通过删除 CORBA 和 Java EE(最近更名为 Jakarta EE)模块以及删除 JavaFX 而失去了一些功能,JavaFX 现在可作为独立技术使用。
在 Java 11 中,Oracle 已将主线存储库 jdk/jdk 分叉到 jdk/jdk11 稳定存储库。推送到 jdk/jdk 或 jdk/client 的更改现在标记为 JDK 12. 稳定存储库可以接受选定的错误修复,如果获得批准,则可以根据 JDK 发布过程接受后期增强。
Oracle 标准 Java 实现的最新版本是一个长期支持 (LTS) 版本,它将得到 Oracle 至少 8 年的商业支持。到 2026 年将提供 Bug 修复和安全更新。新的 LTS 版本每三年发布一次,JDK 17 将于 2021 年发布,这将是下一个 LTS 版本。中期版本将每六个月发布一次。
哪里可以下载 JDK 11
您可以从 Oracle Technology Network 下载 JDK 11。
Java 11 JDK 中的新功能
JDK 11 有 16 个新功能:

通过 lang.Math 在 Aarch64 处理器上实现 sin,cos 和 log 函数的新内在函数,改进 Aarch64 内在函数。该提案强调专用的 CPU 体系结构特定的代码模式,可提高应用程序和基准性能。
基于嵌套的访问控制引入了嵌套,这是一种与 Java 语言中嵌套类型概念一致的访问控制上下文。嵌套允许逻辑上属于同一代码实体的类,但编译为不同的类文件以访问彼此的私有成员,而无需编译器插入可访问性扩展桥接方法。

传输层安全性(TLS)1.3,其中 TLS 协议的这种大修将适用于 JDK 11,从而提供显着的安全性和性能优势。但是,没有目标支持 TLS 1.3 的每个功能。为了最大限度地降低不兼容的风险,TLS 1.3 默认会实现向后兼容模式。应用程序可以根据需要关闭或打开此模式。

Nashorn JavaScript 引擎与 JJS 工具的弃用,旨在将来删除它们。鉴于 ECMAScript 语言构建和 API 的快速调整和修改,Oracle 发现 Nashorn 难以维护。
HTTP 客户端(标准),它标准化了 JDK 9 中引入并在 JDK 10 中更新的孵化 HTTP API 客户端。API 提供非阻塞请求和响应语义 CompleteableFutures,可以链接到触发器依赖操作。在 JDK 9 和 10 中孵化之后,现在异步的实现几乎已经完全重写.RX Flow 概念已经被推入实现中,消除了支持 HTTP / 2 所需的许多自定义概念。现在可以更轻松地跟踪数据流,从用户级请求发布者和响应发布者到底层套接。这降低了复杂性并最大化了 HTTP / 1 和 HTTP / 2 之间重用的可能性。
被称为“无操作”收集器的 Epsilon 垃圾收集器将处理内存分配,而不实现任何实际的内存回收机制。Epsilon 的用例包括性能测试,内存压力和虚拟机接口。它也可以用于短期工作。
lambda 参数的局部变量语法应该将隐式类型表达式中的形式参数声明的语法与局部变量声明的语法对齐。这将允许 var 在声明隐式类型的 lambda 表达式的形式参数时使用。
将扩展 Java 类文件格式以支持新的常量池形式 CONSTANT_Dynamic。目标是降低开发新形式的可实现类文件约束的成本和中断。
与现有的椭圆曲线 Diffie-Hellman 方案相比,与 Curve25519 和 Curve448 密码学的密切协议应该更加有效和安全。根据 IETF 的说法,两条椭圆曲线 Curve25510 和 Curve448 可以实现恒定时间实现和无异常的标量乘法,这种乘法更能抵抗一系列的旁道攻击,包括定时和缓存攻击。该提案的目标包括 API 和密钥协商方案的实现,以及独立于平台的全 Java 实现的开发。但是,作为提案的一部分,模块化算法实现的复杂性和微妙性存在风险。
Flight Recorder 将提供一个低开销的数据收集框架,用于对 Java 应用程序和 HotSpot JVM 进行故障排除。Flight Recorder 已成为 Oracle 商业 JDK 的一项功能,但其源代码将移至开放式存储库以使该功能普遍可用。Iclouded 将是用于生成和使用数据作为事件的 API,提供缓冲机制和二进制数据格式以及启用事件的配置和过滤。该提案还要求为 OS,HotSpot 和 JDK 库提供事件。

升级平台 API 以支持 Unicode 版本 10.0,从而使 Java 保持最新。预计将在以下类别中提供支持:

Character, String 在 lang 包中
NumericShaper 在 awt.font 包中
Bidi,BreakIterator 和 Normalizer 在 text 包

实施 ChaCha20 和 Poly1305 加密算法。ChaCha2020 是一种相对较新的流密码,可以取代旧的,不安全的 R4 流密码。ChaCha20 将与 Poly1305 验证器配对。将提供 ChaCha20 和 ChaCha20-Poly1305 密码实现,使用 crypto.CipherSpiAPI 在 SunJCE(Java 密码术扩展)提供程序中实现算法。
增强 Java 启动程序以运行作为 Java 源代码的单个文件提供的程序,因此这些程序可以直接从源代码运行。在学习 Java 的早期阶段编写小实用程序或开发人员时,单文件程序很常见。此外,单个源文件可能会编译为多个类文件,这会增加打包开销。在这些情况下,必须在运行之前编译程序只是基于传统的不必要的步骤。
低开销堆分析,提供了一种可以通过 JVM 工具接口访问 Java 堆分配的方法。这项工作的目标是以低开销的方式获取有关这些分配的信息,可以通过编程接口访问,并可以对所有分配进行采样。实施独立性和提供关于实时和死堆的数据也是目标。糟糕的堆管理可能导致堆耗尽和垃圾收集颠簸。解决此问题的大多数工具都缺少特定分配的调用站点,这些信息对于调试内存问题至关重要。
Pack200 和 Unpack200 工具以及 Pack200 API 的弃用 util.jar。Pack200 是.jar 文件的压缩方案,旨在降低应用程序打包,传输和交付的磁盘和带宽要求。项目负责人表示,维护成本和低使用率并不能证明其保留是合理的。

Z 垃圾收集器 (ZGC) 是一种实验性的、低延迟的垃圾收集器,用于处理大小从相对较小的堆到非常大的堆,大小为许多 tb 级的堆。通过使用 ZGC,暂停时间不应超过 10ms,与使用 G1 收集器相比,应用程序吞吐量减少不应超过 15%。ZGC 还为将来的特性和优化打下基础。Linux/x64 将是第一个获得 ZGC 支持的平台。

正文完
 0