JDK 11 和 Java 17 LTS 版本之间的所有变化

从 Java 12 到 17 LTS,每六个月发布一次的新版本带来了逐步的增强。Java 17虽然没有显著的新功能,但汇总了多个版本的改进,包括低暂停时间的垃圾收集器、文本块、Records预览、ZGC和Shenandoah的优化。此外,弃用了Applet API和实验性的AOT/JIT编译器,增加了对新平台的支持,如macOS AArch64和Alpine Linux。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果您要查看 Java 17(Oracle 的最新长期支持 (LTS) 版本)中的功能,您可能会感到失望。该版本中仅包含 14 个 JDK 增强提案 (JEP),而且没有一个特别令人兴奋。事实上,一些 JEP 是彻头彻尾的令人沮丧,例如弃用 Applet API 以进行删除或删除实验性 AOT 和 JIT 编译器。花椒壳-愿您平安健康

不再有“大爆炸”的 JDK 版本。过去,会有一个备受期待的功能,例如 Java 模块或 Lambda 表达式,会延迟发布,直到该功能完成。Java 世界不再像那样工作了。现在每六个月发布一次。如果一个特性完成,它就会进入发布阶段。如果没有,它将被定位到下一个版本。但是每六个月发布一次新版本,并且功能增强会随着时间的推移逐渐发生。因此,如果您想了解最新 LTS 版本中的新功能,您确实需要查看在 Java 11 和 17 之间所做的各种更改和添加的增强功能。从 Java 12 开始,以下是它们的列表:

Java 12 增强功能

于 2019 年 3 月发布,Java 12 中 JDK 的重要补充是 Shenandoah,这是一种低暂停时间垃圾收集器,旨在提高性能并减少运行时的停止世界事件。

  • 189:实验性的 Shenandoah 垃圾收集器
  • 230:微基准测试套件
  • 325:Switch 语句表达式的预览
  • 334:用于 JVM 的常量 API
  • 340:单个 AArch64 端口而不是两个
  • 341:CDS 存档默认值
  • 344:可中止的 G1 混合集合
  • 346:快速返回 G1 未使用的已提交内存

Java 13 JEP

Java 13 仅包含 5 项增强功能,尽管社区中广泛预期并广泛讨论了文本块预览。这是一个表面上非常简单的功能,但在其实现过程中会产生无数问题。

  • 350:动态 CDS 档案
  • 351:ZGC:取消提交未使用的垃圾收集器内存
  • 353:重新实现旧式套接字 API
  • 354:更新到 switch 表达式预览
  • 355:Java 文本块的预览

JDK 17 LTS

JDK 17 LTS 版本应该在 Java 社区中引起兴奋的原因有很多。

Java 14 改进

Java 14 值得注意的是,它预览了 Records 作为一种新的 Java 类型。上一次在该语言中引入新的 Java 类型是 Java 5 中的 Enum。

使用 Java Flight Recorder 提供实时监控的事件流以及用于改进垃圾收集的 ZGC 增强功能是此版本中包含的其他值得注意的增强功能。

  • 305:instanceof 模式匹配预览
  • 343:新包装工具的孵化器
  • 345:G1 垃圾收集器的 NUMA 意识
  • 349:用于 Java Mission Control 的 Java Flight Recorder 事件流
  • 352:非易失性映射字节缓冲区
  • 358:有用的 NullPointerException 指南
  • 359:名为 Records 的新 Java 数据类型的预览
  • 361:开关表达式的标准包含
  • 362:弃用 Solaris SPARC 端口
  • 363:移除 Java 的并发标记扫描 (CMS) 垃圾收集器
  • 364:用于 macOS 垃圾收集和内存管理的 ZGC
  • 365:用于 Windows 垃圾收集和内存管理的 ZGC
  • 366:弃用 SerialOld 和 ParallelScavenge GC 算法的组合
  • 367: 移除 Pack200 工具
  • 368:Java 文本块功能的第二次预览
  • 370:外内存访问API的孵化器

Java 15 发布功能

Java 15 正式包含 Java 文本块功能,同时继续对 ZGC 和 Shenandoah 垃圾收集器进行改进。以下是 JDK 15 中添加的各种功能:

339:添加 EdDSA(爱德华曲线数字签名算法)
360:密封类的预览
371:在 Java 中添加隐藏类
372:移除 Nashorn JavaScript 引擎
373:旧版 DatagramSocket API 重新实现
374:偏置锁定禁用和弃用
375: instanceof 模式匹配的第二次预览
377:添加 ZGC,Java 的可扩展、低延迟垃圾收集器
378:完全包含 Java 文本块
379:添加和增强低暂停时间 Shenandoah 垃圾收集器
381:最终删除Solaris 和 SPARC 端口
383:外部内存访问 API
384 的孵化:Java 记录的第二次预览包含
385:RMI 激活弃用,目标是未来移除

Java 16 发布功能

Java 16 是 GitHub 版本,在该版本中将 OpenJDK 社区的 Git 存储库托管在 GitHub 上。

  • 338:Vector API 的孵化
  • 347:C++14 语言特性启用
  • 357:从 Mercurial 迁移到 Git
  • 369:OpenJDK 存储库的 GitHub 迁移
  • 376:ZGC 的并发线程堆栈处理
  • 380: Unix 域套接字通道
  • 386:Alpine Linux 端口
  • 387:支持弹性元空间
  • 388:Windows AArch64 端口
  • 389:外链API的孵化
  • 390:基于值的类警告
  • 392:添加打包工具
  • 393:对外内存访问API的第三次孵化
  • 394:完全包含 instanceof 的模式匹配
  • 395:Java 记录的完整实现
  • 396: JDK 内部的字符串封装
  • 397:密封类的第二次预览

Java 17 LTS 发布特性

最后,这里是对最新的 Java LTS 版本所做的增强:

  • 306:恢复始终严格的浮点语义
  • 356:伪随机数生成器的改进
  • 382:支持用于渲染的新 macOS 管道
  • 391:macOS AArch64 端口
  • 398:以完全删除为目标弃用臭名昭著的 Applet API
  • 403:对Java内部的强封装
  • 406:切换模式匹配预览
  • 407:RMI 激活移除
  • 409:完全支持密封的 Java 类
  • 410:删除实验性的和大部分未使用的提前 (AOT) 和即时 (JIT) 编译器
  • 411:弃用安全管理器,最终目标是移除
  • 412:外部函数和内存API的孵化
  • 414:Vector API 的第二次孵化
  • 415:特定于上下文的反序列化过滤器

如您所见,Java 17 版本本身在功能方面有些令人失望。但是,当您查看 Java 11 和 Java 17 LTS 版本之间所有增量更新的汇总时,您会看到性能、语法、API 和社区支持方面的一系列令人印象深刻的改进。花椒壳-愿您平安健康

如果有机会,请下载并安装 Java 17 并查看此新 LTS 版本提供的所有新功能。自 2018 年 Java 11 发布以来,Java 的成熟程度会给您留下深刻印象。花椒壳-愿您平安健康

花椒壳-愿您平安健康 花椒壳资源网,资源下载,主要提供个人搜集资源、设计素材、音乐、视频、图片等一切与互联网有关的资源https://www.xinliu.vip/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值