常用的JDK版本有JDK8、JDK11、JDK17和JDK21,这几个版本更新的主要特性:

JDK8新特性(2014年3月):

  1. Lambda表达式
  2. 新的日期API
  3. 引入Optional
  4. 使用Base64
  5. 接口的默认方法和静态方法
  6. 新增方法引用格式
  7. 新增Stream类
  8. 注解相关的改变
  9. 支持并行(parallel)数组
  10. 对并发类(Concurrency)的扩展。

       Java的发展历史 ​ Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。Java8 商用收费从2019年1月份开始,Oracle JDK开始对JavaSE 8 之后的版本开始进行商用收费,确切的说是 8u201/202 之后的版本。

JDK11新特性(2018年9月)(LTS版本)

        * 增加一些字符串处理方法用于 Lambda 参数的局部变量语法Http Client重写,支持HTTP/1.1和HTTP/2 ,也支持 websockets可运行单一Java源码文件,如:java Test.javaZGC:可伸缩低延迟垃圾收集器,ZGC可以看做是G1之上更细粒度的内存管理策略。由于内存的不断分配回收会产生大量的内存碎片空间,因此需要整理策略防止内存空间碎片化,在整理期间需要将对于内存引用的线程逻辑暂停,这个过程被称为"Stop the world"。只有当整理完成后,线程逻辑才可以继续运行。(并行回收)支持 TLS 1.3 协议Flight Recorder(飞行记录器),基于OS、JVM和JDK的事件产生的数据收集框架对Stream、Optional、集合API进行增强

        重要特性:对于JDK9和JDK10的完善,主要是对于Stream、集合等API的增强、新增ZGC垃圾收集器。

JDK17新特性(2021年9月)(LTS版本):

  1. Free Java License 根据Oracle官方发布的最新Free Java License,Oracle JDK 可以免费用于生产环境。
  2. JDK 17 将取代 JDK 11 成为下一个长期支持版本
  3. Spring 6 和 Spring Boot 3需要JDK17
  4. 移除实验性的 AOT 和 JIT 编译器
  5. 恢复始终执行严格模式 (Always-Strict) 的浮点定义
  6. 正式引入密封类sealed class,限制抽象类的实现
  7. 统一日志异步刷新,先将日志写入缓存,然后再异步刷新
  8. 虽然JDK17也是一个LTS版本,但是并没有像JDK8和JDK11一样引入比较突出的特性,主要是对前几个版本的整合和完善。

JDK21新特性(2023年9月)(LTS版本):

  1. 序列集合。该 JEP 提议引入“一个新的接口族,用于表示集合的概念,这些集合的元素按照预定义的序列或顺序排列,它们是作为集合的结构属性。”这一提案的动机是由于集合框架中缺乏预定义的顺序和统一的操作集。
  2. 分代 ZGC。通过扩展Z垃圾回收器(ZGC)来维护年轻对象和年老对象的独立生成,从而提高应用程序性能。这将使ZGC能够更频繁地收集年轻对象——这些对象往往英年早逝。
  3. 记录模式。使用记录模式(Record Patterns)增强Java编程语言,以解构记录值。可以嵌套记录模式和类型模式,以实现功能强大、声明性和可组合形式的数据导航和处理。
  4. switch 模式匹配。通过switch表达式和语句的模式匹配来增强Java编程语言。通过将模式匹配扩展到switch,可以针对多个模式测试表达式,每个模式都有一个特定的操作,从而可以简洁、安全地表达复杂的面向数据的查询。
  5. 虚拟线程。将虚拟线程(Virtual Threads)引入Java平台。虚拟线程是轻量级线程,可以显著减少编写、维护和观察高吞吐量并发应用程序的工作量。
  6. 弃用Windows 32位x86移植,并打算在将来的版本中将其删除。
  7. 准备禁止动态加载代理。将代理动态加载到正在运行的JVM中时发出警告。这些警告旨在让用户为将来的版本做好准备,该版本默认情况下不允许动态加载代理,以提高默认情况下的完整性。在启动时加载代理的可服务性工具不会导致在任何版本中发出警告。
  8. 密钥封装机制 API。介绍一种用于密钥封装机制(Key Encapsulation Mechanism,简称KEM)的API,这是一种使用公钥加密来保护对称密钥的加密技术。
  9. 字符串模板(预览)。使用字符串模板(String Templates)增强Java编程语言。字符串模板通过将文本与嵌入的表达式和模板处理器耦合来生成专门的结果,从而补充Java现有的字符串文本和文本块。这是一个预览语言功能和API。
  10. 外部函数和内存 API(第三次预览)。引入API,Java程序可以通过该API与Java运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即JVM外部的代码),并通过安全地访问外部内存(即不受JVM管理的内存),API使Java程序能够调用本机库并处理本机数据,而不会出现JNI的脆弱性和危险性。这是一个预览API。
  11. 未命名模式和变量(预览)。使用未命名模式和未命名变量来增强Java语言,未命名模式匹配记录组件而不说明组件的名称或类型,未命名变量可以初始化但不使用。两者都用下划线字符_表示。这是一个预览语言功能。
  12. 未命名类和实例主方法(预览)。发展Java语言,使学生无需理解为大型程序设计的语言功能即可编写第一个程序。学生们不用使用单独的Java方言,就可以为单类程序编写精简的声明,然后随着技能的发展,无缝地扩展程序,使用更高级的功能。这是一个预览语言功能。
  13. 作用域值(预览)。引入作用域值,这些值可以在不使用方法参数的情况下安全有效地共享给方法。它们优先于线程化局部变量,尤其是在使用大量虚拟线程时。这是一个预览API。
  14. 结构化并发(预览)。通过引入用于结构化并发(Structured Concurrency)的API来简化并发编程。结构化并发将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和消除,提高可靠性,并增强可观察性。这是一个预览API。
  15. Vector API(孵化器第六阶段)

根据发布的规划,这次发布的 JDK 21 将是一个长期支持版(LTS 版)。LTS 版每 2 年发布一个,上一次长期支持版是 21 年 9 月发布的 JDK 17。

 

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是JDK2到JDK17每个版本主要特性,新功能和改动内容: JDK2:引入了JavaBeans、JDBC、JAR、RMI等技术,使得Java更加易于开发和使用。 JDK3:引入了Java Server Pages(JSP)和Java Message Service(JMS)等技术,使得Java在Web应用和消息传递方面更加强大。 JDK4:引入了NIO、Java Web Services(JWS)、Java Management Extensions(JMX)等技术,使得Java在网络编程和系统管理方面更加出色。 JDK5:引入了泛型、自动装箱/拆箱、枚举类型、注解、可变参数等特性,使得Java语言更加强大。 JDK6:引入了JDBC 4.0、Java Compiler API、Java Web Start等技术,使得Java在数据库访问、编译和应用启动方面更加高效。 JDK7:引入了switch语句支持字符串类型、try-with-resources语句、Diamond语法、Fork/Join框架等特性,使得Java语言更加易于使用和高效。 JDK8:引入了Lambda表达式、Stream API、Date/Time API等特性,使得Java在函数式编程、数据处理和日期处理方面更加强大。 JDK9:引入了模块化系统、JShell、多版本兼容性等特性,使得Java在模块化、交互式开发和版本管理方面更加出色。 JDK10:引入了局部变量类型推断、线程局部变量回收等特性,使得Java语言更加简洁和高效。 JDK11:引入了HTTP客户端API、ZGC垃圾回收器等特性,使得Java在网络编程和性能方面更加优化。 JDK12:引入了Switch表达式、JVM常量API等特性,使得Java语言更加易于使用和扩展。 JDK13:引入了文本块、动态CDS等特性,使得Java在字符串处理和性能方面更加出色。 JDK14:引入了Switch表达式增强、Records、Pattern Matching for instanceof等特性,使得Java语言更加简洁和易于使用。 JDK15:引入了Sealed Classes、Text Blocks、Hidden Classes等特性,使得Java在类设计和字符串处理方面更加出色。 JDK16:引入了Records增强、Vector API、Foreign Linker API等特性,使得Java在数据处理和性能方面更加优化。 JDK17:引入了Pattern Matching for switch增强、Sealed Classes增强、Foreign-Memory Access API等特性,使得Java语言更加易于使用和高效。同时,JDK17还引入了一些性能和安全方面的改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值