JDK(Java Development Kit)从发布至今所有主要版本 的详细差异、新增特性及关键更新的总结,按时间顺序排列

news2025/4/13 12:03:10

以下是 JDK(Java Development Kit)从发布至今所有主要版本 的详细差异、新增特性及关键更新的总结,按时间顺序排列:
在这里插入图片描述


1. JDK 1.0 (1996)

  • 发布年份:1996年1月23日
  • 关键特性
    • Java首次正式发布
    • 核心语言特性:类、接口、异常处理。
    • 核心API:java.langjava.iojava.awt(图形界面库)。

2. JDK 1.1 (1997)

  • 发布年份:1997年2月19日
  • 关键特性
    • 内省(Reflection):允许运行时检查类和方法。
    • JDBC(Java Database Connectivity):数据库连接API。
    • 匿名内部类:简化事件监听器等场景。
    • java.util扩展:新增HashtableVector等集合类。

3. JDK 1.2 (1998)

  • 发布年份:1998年12月8日
  • 关键特性
    • 命名改为JDK 1.2(原计划为JDK 2.0,但版本号保留1.x)。
    • Collections Framework:引入ArrayListHashMap等通用集合类。
    • strictfp关键字:确保浮点运算的平台一致性。
    • Thread类增强:join()sleep()等方法。

4. JDK 1.3 (2000)

  • 发布年份:2000年5月8日
  • 关键特性
    • HotSpot JVM:取代原来的JIT编译器,显著提升性能。
    • javax包扩展
      • javax.sound(音频处理)
      • javax.management(JMX管理)
      • javax.swing(改进的GUI库)。
    • 增强的I/O(NIO前身):初步支持非阻塞I/O。

5. JDK 1.4 (2002)

  • 发布年份:2002年2月6日
  • 关键特性
    • 正则表达式(Regex)java.util.regex包。
    • assert关键字:断言机制(调试工具)。
    • 日志APIjava.util.logging
    • 改进的I/O(NIO前身)RandomAccessFileFileChannel
    • 图像处理增强java.awt.image包。

6. JDK 5 (2004)

  • 发布年份:2004年9月30日
  • 关键特性
    • 泛型(Generics):类型参数化(如List<String>)。
    • 注解(Annotations)@Override@Deprecated等元数据标记。
    • 自动装箱/拆箱:基本类型与包装类自动转换。
    • 枚举(Enums):类型安全的枚举类型。
    • 可变参数(Varargs):方法参数可接受可变数量的参数(如method(int... args))。
    • 静态导入:通过import static直接导入静态方法或常量。

7. JDK 6 (2006)

  • 发布年份:2006年12月11日
  • 关键特性
    • 脚本引擎(Scripting Engine):支持JavaScript等脚本语言嵌入Java应用。
    • Java DB(Derby):内置数据库。
    • JVM改进:性能优化(如垃圾回收算法改进)。
    • 注解扩展@SafeVarargs@FunctionalInterface(后移至JDK 8)。
    • XML数字签名:增强安全性。

8. JDK 7 (2011)

  • 发布年份:2011年7月28日
  • 关键特性
    • try-with-resources:自动关闭资源(如FileInputStream)。

      try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
          // 自动关闭br
      }
      
    • 钻石操作符(Diamond Operator):简化泛型实例化。

      List<String> list = new ArrayList<>(); // 无需重复指定类型
      
    • 字符串切换(String in Switch):允许switch语句使用字符串。

    • NIO.2:增强的文件系统API(路径操作、文件监控)。

    • Fork/Join框架:支持分治算法的并行计算。


9. JDK 8 (2014)

  • 发布年份:2014年3月18日
  • 关键特性
    • Lambda表达式:引入函数式编程支持。

      list.forEach(item -> System.out.println(item));
      
    • Stream API:对集合进行声明式数据处理。

      List<String> filtered = list.stream()
          .filter(s -> s.length() > 3)
          .collect(Collectors.toList());
      
    • 默认方法(Default Methods):接口中可定义默认实现。

    • 新的日期时间API(java.time包):替代DateCalendar

    • Optional类:避免空指针异常。

    • 并行数组排序Arrays.parallelSort()


10. JDK 9 (2017)

  • 发布年份:2017年9月21日
  • 关键特性
    • 模块化系统(JPMS):通过module-info.java定义模块。

      module com.example {
          requires java.logging;
          exports com.example.service;
      }
      
    • 私有化JDK内部API:减少对sun.misc等包的依赖。

    • HTTP Client(Preview):内置HTTP客户端(java.net.http包)。

    • JShell:交互式Java REPL(Read-Eval-Print Loop)。

    • 集合工厂方法:简化不可变集合创建。

      List<String> list = List.of("a", "b", "c");
      

11. JDK 10 (2018)

  • 发布年份:2018年3月20日
  • 关键特性
    • 局部变量类型推断(var):通过var声明局部变量。

      var list = new ArrayList<String>(); // 类型由初始化表达式推断
      
    • 应用类数据共享(AppCDS):减少JVM内存占用。

    • 垃圾回收器改进:并行垃圾回收器(Parallel GC)默认替换CMS。

    • 实验性特性Stringindent()describeConstable()等。


12. JDK 11 (2018, LTS)

  • 发布年份:2018年9月25日
  • 关键特性
    • HTTP Client正式版:从Preview升级为稳定版本。
    • Windows上的Flight Recorder(JFR):性能分析工具。
    • 新的垃圾回收器ZGC:低延迟垃圾回收器(实验性)。
    • 删除Java EE模块:移除java.xml.bind等模块。
    • 文本块(Text Blocks):多行字符串支持。
      String html = """
          <div>
              <p>Hello World</p>
          </div>
          """;
      

13. JDK 12 (2019)

  • 发布年份:2019年3月19日
  • 关键特性
    • Switch表达式(Preview):支持yield和表达式形式。
    • 垃圾回收器改进G1垃圾回收器的-XX:ZapUnusedHeapArea参数。
    • Shenandoah GC(实验性):低暂停时间垃圾回收器。
    • 字符串压缩(Compact Strings):优化字符串存储。

14. JDK 13 (2019)

  • 发布年份:2019年9月17日
  • 关键特性
    • 文本块(Text Blocks)正式版:从Preview升级为稳定版本。
    • Switch表达式改进:支持yieldcase合并。
    • 记录类(Records,Preview):简化数据载体类的定义。
      public record Person(String name, int age) { }
      

15. JDK 14 (2020)

  • 发布年份:2020年3月17日
  • 关键特性
    • 记录类(Records):从Preview升级为稳定版本。

    • 模式匹配(Pattern Matching):初步支持instanceof后直接解构对象(Preview)。

      if (obj instanceof Person p) {
          System.out.println(p.name);
      }
      
    • 可变参数的私有方法:允许私有方法使用可变参数。

    • 文本分段(Text Blocks改进):支持转义字符。


16. JDK 15 (2020)

  • 发布年份:2020年9月15日
  • 关键特性
    • 密封类(Sealed Classes):限制哪些类可以继承当前类(Preview)。

      public sealed class Shape permits Circle, Rectangle { }
      
    • 隐藏类(Hidden Classes):用于生成临时类(如代理类)。

    • 增强的switch表达式:返回值并支持yield

    • Text Blocks改进:支持转义字符和更灵活的语法。


17. JDK 16 (2021)

  • 发布年份:2021年3月16日
  • 关键特性
    • 弃用removeIf的并发修改:修复ConcurrentModificationException
    • 虚拟线程(Virtual Threads):实验性轻量级线程(Preview)。
    • 简化的switch语法:允许yield和表达式形式。
    • 强封装(Strong Encapsulation):强制限制对内部API的访问。

18. JDK 17 (2021, LTS)

  • 发布年份:2021年9月14日
  • 关键特性
    • 密封类(Sealed Classes):从Preview升级为稳定版本。
    • 文本块改进:支持转义字符和更灵活的语法。
    • 强封装(Strong Encapsulation):默认禁用内部API访问。
    • 新的垃圾回收器Shenandoah:低暂停时间GC(实验性)。
    • 移除javawsapplet:淘汰旧版浏览器插件技术。

19. JDK 18 (2022)

  • 发布年份:2022年3月15日
  • 关键特性
    • 虚拟线程(Virtual Threads):从Preview升级为稳定版本。
    • 结构化并发(Structured Concurrency):通过StructuredTaskScope管理线程。
    • 向量API(Vector API):支持SIMD指令优化计算密集型代码(Preview)。
    • 模式匹配改进:支持instanceof后直接解构嵌套对象。

20. JDK 19 (2022)

  • 发布年份:2022年9月19日
  • 关键特性
    • 虚拟线程改进:支持Stack WalkingThread.startVirtual()
    • 模式匹配for switch:支持switch表达式匹配记录类。
    • 精确的ARC(Accurate Race Conditions):改进竞争条件检测。
    • 记录模式(Record Patterns):解构记录类字段。
      if (obj instanceof Person(String name)) { ... }
      

21. JDK 20 (2023)

  • 发布年份:2023年3月21日
  • 关键特性
    • 模式匹配for switch正式版:从Preview升级为稳定版本。
    • 记录模式增强:支持嵌套记录的解构。
    • 虚拟线程改进:支持Thread.startVirtual()
    • 强封装增强:进一步限制内部API访问。
    • Vector API改进:支持更多硬件指令集。

22. JDK 21 (2023)

  • 发布年份:2023年9月19日
  • 关键特性
    • 虚拟线程改进:支持Stack WalkingThread.startVirtual()
    • Vector API改进:支持更多CPU指令集(如AVX512)。
    • JFR增强:更详细的性能分析事件。
    • String分割优化String.split()支持正则表达式改进。
    • Record类改进:支持private构造函数。

23. JDK 22 (2024)

  • 发布年份:2024年3月19日
  • 关键特性
    • Vector API改进:支持更多CPU指令集(如AVX512)。
    • Record类改进:支持private构造函数。
    • JFR增强:更详细的性能分析事件。
    • String拼接优化+操作符的性能提升。

LTS版本推荐

  • 长期支持(LTS)版本:每3年发布一次,提供更长时间的维护和支持。
    • JDK 8(2014,支持至2030)
    • JDK 11(2018,支持至2029)
    • JDK 17(2021,支持至2029)
    • JDK 21(2023,支持至2030)

版本差异总结表

版本关键特性LTS发布年份
JDK 5泛型、注解、枚举2004
JDK 7try-with-resources、NIO.2、Fork/Join2011
JDK 8Lambda、Stream API、新日期API2014
JDK 11HTTP Client正式版、文本块、移除Java EE模块2018
JDK 17密封类、虚拟线程、强封装2021
JDK 21虚拟线程优化、Vector API、JFR增强2023

注意事项

  • 版本兼容性:升级JDK版本时需检查依赖库的兼容性(如Spring Boot对JDK版本的限制)。
  • 性能调优:新版本通常包含GC和JIT编译器优化,需重新调整JVM参数。
  • 实验性特性:带有Preview或Incubating标签的特性可能在后续版本中变更或移除。

通过选择合适的JDK版本,可以更好地平衡功能需求、性能优化和长期维护成本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2333805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过websocket给服务端发送订单催单提醒消息

controller层 GetMapping("/reminder/{id}")public Result Remainder(PathVariable("id") Long id){orderService.remainder(id);return Result.success();} 实现类 Overridepublic void remainder(Long id) {Orders ordersDB orderMapper.getById(id);…

c++ 表格控件 UltimateGrid 控件实例

控件区域&#xff1a; 使用效果&#xff1a; 代码如下&#xff1a; void MyUGCtrl::OnSetup() { m_nButtonIndex AddCellType(&m_button); SetNumberCols(6); AppendRow(); CUGCell cell; int rows, cols; int row 0; // 头部 int nHeaderRow -1; …

使用 VcXsrv 在 Windows 10 上运行 Ubuntu 图形界面

VcXsrv 是一款用于 Windows 的开源 X 服务器&#xff0c;它允许在 Windows 系统上显示 Linux 的图形应用程序。当在 Windows 10 上安装并正确配置 VcXsrv 后&#xff0c;通过设置 WSL2 中的DISPLAY环境变量&#xff0c;使其指向运行 VcXsrv 的 Windows 主机的 IP 地址&#xff…

LSTM-SVM长短期记忆神经网络结合支持向量机组合模型多特征分类预测/故障诊断,适合新手小白研究学习(Matlab完整源码和数据)

LSTM-SVM长短期记忆神经网络结合支持向量机组合模型多特征分类预测/故障诊断&#xff0c;适合新手小白研究学习&#xff08;Matlab完整源码和数据&#xff09; 目录 LSTM-SVM长短期记忆神经网络结合支持向量机组合模型多特征分类预测/故障诊断&#xff0c;适合新手小白研究学习…

Autoware源码总结

Autoware源码网站 项目简介 教程 Autoware的整体架构如下图&#xff0c;主要包括传感器sensing、高精地图map data、车辆接口vehicle interface、感知perception&#xff08;动态障碍物检测detection、跟踪tracking、预测prediction&#xff1b;交通信号灯检测detection、分类c…

QT聊天项目DAY01

1.新建初始项目 2.修改UI格式 运行效果 3.创建登录界面 设计登录界面UI 设计布局 调整布局间距 往水平布局中拖入标签和文本输入框 更换控件名称并固定高度 添加窗口部件 往现有的资源文件中导入图片 添加水平布局 4.设置登陆界面为主窗口的核心组件 #pragma once#include &l…

论文精度:基于LVNet的高效混合架构:多帧红外小目标检测新突破

论文地址:https://arxiv.org/pdf/2503.02220 目录 一、论文背景与结构 1.1 研究背景 1.2 论文结构 二、核心创新点解读 2.1 三大创新突破 2.2 创新结构原理 2.2.1 多尺度CNN前端 2.2.2 视频Transformer设计 三、代码复现指南 3.1 环境配置 3.2 数据集准备 3.3 训…

ORM查询的补充

一&#xff0c;ORM查询的补充&#xff1a; 1&#xff0c;连接查询&#xff1a; 反向查询: 先介绍一下什么是正向查询&#xff0c;比如我们之前的数据表之间建立的一对多的关系&#xff0c;我们通过文章找到相应的作者是属于正向查询的&#xff08;由多到一&#xff09;&…

蔚来汽车智能座舱接入通义大模型,并使用通义灵码全面提效

为加速AI应用在企业市场落地&#xff0c;4月9日&#xff0c;阿里云在北京召开AI势能大会。阿里云智能集团资深副总裁、公共云事业部总裁刘伟光发表主题演讲&#xff0c;大模型的社会价值正在企业市场释放&#xff0c;阿里云将坚定投入&#xff0c;打造全栈领先的技术&#xff0…

VMWare Workstation Pro17.6最新版虚拟机详细安装教程(附安装包教程)

目录 前言 一、VMWare虚拟机下载 二、VMWare虚拟机安装 三、运行虚拟机 前言 VMware 是全球领先的虚拟化技术与云计算解决方案提供商&#xff0c;通过软件模拟计算机硬件环境&#xff0c;允许用户在一台物理设备上运行多个独立的虚拟操作系统或应用。其核心技术可提升硬件…

【数据结构】红黑树超详解 ---一篇通关红黑树原理(含源码解析+动态构建红黑树)

一.什么是红黑树 红黑树是一种自平衡的二叉查找树&#xff0c;是计算机科学中用到的一种数据结构。1972年出现&#xff0c;最初被称为平衡二叉B树。1978年更名为“红黑树”。是一种特殊的二叉查找树&#xff0c;红黑树的每一个节点上都有存储表示节点的颜色。每一个节点可以是…

uni-app初学

文章目录 1. pages.json 页面路由2. 图标3. 全局 CSS4. 首页4.1 整体框架4.2 完整代码4.3 轮播图 swiper4.3.1 image 4.4 公告4.4.1 uni-icons 4.5 分类 uni-row、uni-col4.6 商品列表 uni-row、uni-col 小程序开发网址&#xff1a; 注册小程序账号 微信开发者工具下载 uniapp …

PHP多维数组

在 PHP 中&#xff0c;多维数组是数组的数组&#xff0c;允许你存储和处理更复杂的数据结构。多维数组可以有任意数量的维度&#xff0c;但通常我们最常用的是二维数组&#xff08;数组中的数组&#xff09;。 首先来介绍一下一维数组&#xff0c; <?php//一维数组 $strAr…

数学建模:针对汽车行驶工况构建思路的延伸应用

前言&#xff1a; 汽车行驶工况构建的思简单理解为将采集的大量数据进行“去除干扰、数据处理&#xff0c;缩减至1800S的数据”&#xff0c;并可达到等效替换的目的&#xff0c;可以使在试验室快速复现&#xff1b;相应的解决思路、办法可应用在 “通过能量流采集设备大量采集…

go语言内存泄漏的常见形式

go语言内存泄漏 子字符串导致的内存泄漏 使用自动垃圾回收的语言进行编程时&#xff0c;通常我们无需担心内存泄漏的问题&#xff0c;因为运行时会定期回收未使用的内存。但是如果你以为这样就完事大吉了&#xff0c;哪里就大错特措了。 因为&#xff0c;虽然go中并未对字符串…

当DRAM邂逅SSD:新型“DRAM+”存储技术来了!

在当今快速发展的科技领域&#xff0c;数据存储的需求日益增长&#xff0c;对存储设备的性能和可靠性提出了更高的要求。传统DRAM以其高速度著称&#xff0c;但其易失性限制了应用范围&#xff1b;而固态硬盘SSD虽然提供非易失性存储&#xff0c;但在速度上远不及DRAM。 为了解…

JS实现文件点击或者拖拽上传

B站看到了渡一大师课的切片&#xff0c;自己实现了一下&#xff0c;做下记录 效果展示 分为上传前、上传中和上传后 实现 分为两步 界面交互网络请求 源码如下 upload.html <!DOCTYPE html> <html lang"zh-CN"><head><meta charset&q…

Centos7.9 升级内核,安装RTX5880驱动

系统镜像下载 https://vault.centos.org/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso 系统安装步骤省略 开始安装显卡驱动 远程登录查看内核 [root192 ~]# uname -a Linux 192.168.119.166 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x8…

Xdocreport实现根据模板导出word

只使用freemaker生成简单的word文档很容易&#xff0c;但是当word文档需要插入动态图片&#xff0c;带循环数据&#xff0c;且含有富文本时解决起来相对比较复杂&#xff0c;但是使用Xdocreport可以轻易解决。 Xdocreport既可以实现文档填充也可以实现文档转换&#xff0c;此处…

当当平台商品详情接口设计与调用指南

当当平台商品详情接口设计与调用指南 接口名称 GET /api/product/detail 图书商品核心信息查询接口 请求参数说明 参数名称 类型 是否必填 说明 isbn string 是 国际标准书号(支持13位/10位) product_id string 否 平台内部商品编号&#xff08;与…