:::success JDK 1.0 发布于 1996 年。官方发布更新内容快链点击这里(JDK 发布更新摘要)。 :::

Java 版本历史

看过 Java 相关书籍的小伙伴肯定都知道,开篇先讲 Java 的版本迭代历史。Java 各版本详细文档解析官网 从 JDK 7 开始发布的版本都有对应的文档,这里汇总一下:

版本号 更新内容
JDK1.0 JDK + JRE;Java 虚拟机,Applet,AWT 等
JDK1.1 内部类,反射;JAR 文件格式,JDBC,JavaBeans,RMI
JDK1.2 划分 J2EE,J2SE,J2ME;Collections 集合类,strictfp 关键字;JSP,Servlet,EJB 规范
JDK1.3 默认 Hotspot 虚拟机;Timer 类及数学运算类库,JNDI 服务等
JDK1.4 正则表达式,异常链,断言,NIO,日志类,XML 解析器和 XSLT 转换器;这时期诞生了大量优秀的开源框架(Spring,Hibernate,Struts 等),企业应用服务器(WebLogic,JBoss,WebSphere)
JDK5 自动拆箱和装箱,泛型,动态注解,枚举,可变长参数,foreach 循环,静态导入,元数据,注释,concurrent 并发包,改进了JMM(Java 内存模型);更名 Java SE 5.0
JDK6 更改命名 Java SE,Java EE,Java ME;提供动态语言支持,改进虚拟机(锁与同步、垃圾收集、类加载)
JDK7 G1 收集器,二进制整数,Switch 语句支持字符串,菱形语法,多异常捕捉,try-with-resources 自动关闭资源
JDK8 LTS Lambda 表达式,Stream 流式编程
JDK9 强大了模块化系统,G1 垃圾收集器;小的改进(try-with-resources 语句增强,菱形语法可以在匿名内部类中使用,@SafeVarargs
可以用在私有实例方法上,下划线命名不再合法,支持私有的接口方法)
JDK10 引入局部变量类型推断;包垃圾收集器,GC 改进,性能提升,线程管控
JDK11 ZGC,Http Client;增强局部变量类型推断;Lambda 参数的本地变量语法
JDK12 预览 switch 表达式语句
JDK13 预览文本块;预览 switch 表达式语句
JDK14 引入 switch 表达式语句;预览 instanceof 模式匹配;预览 Record 类;预览文本块
JDK15 引入文本块;预览 instanceof 模式匹配;预览 Record 类;预览 Sealed 类
JDK17 LTS
JDK19

JDK 9

从 JDK 9 开始,模块化系统,文件目录也按模块划分,顶层只有一个目录:
jdk-version-image4.png
jdk-version-image5.png
官网文档 这样介绍文件目录:

  • bin/ 目录,包含 Java 运行时环境(JRE)的实现及用于开发、执行、调试、和记录 Java 程序的开发工具,是原来的 bin/ 目录和 jre/ 目录的合集
  • conf/ 目录,包含用户可配置选项的文件,可以编辑此目录中的文件,以更改 JDK 的访问权限,配置安全算法并设置 Java 密码学扩展策略文件,这些文件可用于限制 JDK 的加密强度
  • include/ 目录,支持使用 Java 本机接口和 Java 虚拟机(JVM)调试器接口进行本机代码编程的 C 语言头文件
  • jmods/ 目录,jlink 用于创建自定义运行时的已编译的模块
  • legal/ 目录,每个模块的许可证和版权文件
  • lib/ 目录,JDK 所需的其他类库和支持文件。这些文件不供外部使用

JDK 8

JDK 8 及以前的版本的文件目录分为 JDK 和 JRE :
jdk-version-image1.png
jdk-version-image2.png
jdk-version-image3.png
官网文档 这样介绍文件目录:

  • JDK 目录
    • bin/ 目录,包含用于开发、执行、调试、和记录 Java 程序的开发工具
    • include/ 目录,包含支持使用 Java 本机接口,JVM 工具接口和 Java 平台的其他功能进行本机代码编程的 C 语言头文件
    • jre/ 目录,供 JDK 使用的 Java 运行时环境(JRE)的实现
    • lib/ 目录,开发工具所需的其他类库和支持文件
    • src.zip 文件,组成 Java 核心 API 的所有类的 Java 编程语言源文件(即 java. ,javax. 和某些 org. 程序包的源文件,除了 com.sun. 程序包的源文件)
  • JRE 目录
    • 即 JDK 目录中的 jre/ 目录

JDK 7

概念图

在 JDK 7 中甲骨文官网用一张概念图将 Java 组件按级别进行分类,较低级别的技术给较高级别的技术奠定了基础。
jdk-version-7-image1.png
官方文档如图:

jdk-version-7-image2.png

译文: 甲骨文 Java SE 7 版本有两个产品:JDK 7 和 JRE 7。 JDK 7 是 JRE 7 的超集,它包含了 JRE 7 的所有,以及其他工具比如开发小程序或者应用系统的编译器和调试器。JRE 7 提供了运行环境、Java 虚拟机以及其他组件来运行使用 Java 编写的程序或应用。需要注意的是 JRE 不仅包含符合 Java 规范的组件,还包含非 Java 规范的组件。

特性解读