JDK8的主要更新特性:
·Lambda表达式
·新的日期API
·引入Optional
·使用Base64
·接口的默认方法和静态方法
·新增方法引用格式
·新增Stream类
·注解相关的改变
·支持并行(parallel)数组
·对并发类(Concurrency)的扩展。
JDK11的主要更新特性:
·增加一些字符串处理方法
·用于 Lambda 参数的局部变量语法
·Http Client重写,支持HTTP/1.1和HTTP/2,也支持 websockets
·可运行单-Java源码文件,如:iava Test.java
·ZGC:可伸缩低延迟垃圾收集器,ZGC可以看做是G1之上更细粒度的内存管理策略。由于内存的不断分配回收会产生大量的内存碎片空间,因此需要整理策略防止内存空间碎片化,在整理期间需要将对于内存引用的线程逻辑暂停,这个过程被称为"Stop the world"。只有当整理完成后,线程逻辑才可以继续运行。(并行回收)
·支持 TLS 1.3 协议
·Flight Recorder(飞行记录器),基于OS、JVM和JDK的事件产生的数据收集框架
·对Stream、Optional、集合API进行增强
JDK17的主要更新特性:
·Free Java License 根据Oracle官方发布的最新Free Java License,Oracle JDK 可以免费用于生产环境
·JDK 17 将取代 JDK 11 成为下一个长期支持版本
·Spring6和Spring Boot 3需要JDK17
·移除实验性的 AOT 和 JIT 编译器。
·恢复始终执行严格模式(Always-Strict)的浮点定义
·正式引入密封类sealed class,限制抽象类的实现
·统一日志异步刷新,先将日志写入缓存,然后再异步刷新
·虽然JDK17也是一个LTS版本,但是并没有像JDK8和JDK11一样引入比较突出的特性,主要是对前几个版本的整合和完善。
JDK21的主要更新特性:
·序列集合。该 JEP 提议引入“一个新的接口族,用于表示集合的概念,这些集合的元素按照预定义的序列或顺序排列,它们是作为集合的结构属性。”这一提案的动机是由于集合框架中缺乏预定义的顺序和统一的操作集。
·分代 ZGC。通过扩展Z垃圾回收器(ZGC)来维护年轻对象和年老对象的独立生成,从而提高应用程序性能。这将使ZGC能够更频繁地收集年轻对象--这些对象往往英年早逝。
·记录模式。使用记录模式(Record Patterns)增强Java编程语言,以解构记录值。可以嵌套记录模式和类型模式,以实现功能强大、声明性和可组合形式的数据导航和处理。
·switch 模式匹配。通过switch表达式和语句的模式匹配来增强Java编程语言。通过将模式匹配扩展到switch,可以针对多个模式测试表达式,每个模式都有一个特定的操作,从而可以简洁、安全地表达复杂的面向数据的查询。
·虚拟线程。将虚拟线程(VirtualThreads)引入Java平台。虚拟线程是轻量级线程,可以显著减少编写、维护和观察高吞吐量并发应用程序的工作量。
·弃用Windows 32位x86移植,并打算在将来的版本中将其删除。
·准备禁止动态加载代理。将代理动态加载到正在运行的JVM中时发出警告。这些警告旨在让用户为将来的版本做好准备,该版本默认情况下不允许动态加载代理,以提高默认情况下的完整性。在启动时加载代理的可服务性工具不会导致在任何版本中发出警告。
·密钥封装机制 API。介绍一种用于密钥封装机制(Key Encapsulation Mechanism,简称KEM)的API,这是一种使用公钥加密来保护对称密钥的加密技术。
字符串模板(预览)。使用字符串模板(String Templates)增强Java编程语言。字符串模板通过将文本与嵌入
的表达式和模板处理器耦合来生成专门的结果,从而补充Java现有的字符串文本和文本块。这是一个预览语言功能和API。
外部函数和内存 API(第三次预览)。引入AP!,Java程序可以通过该API与Java运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即JVM外部的代码),并通过安全地访问外部内存(即不受JVM管理的内存),API使Java程序能够调用本机库并处理本机数据,而不会出现JNI的脆弱性和危险性。这是一个预览AP1.