从 Java 的前身 Oak 创建开始计算,到现在的 Java SE 15,已经快 30 年了。从第一个发布版本算起,也有 25 年多了。
1991.4,Java 之父 James Gosling 领导绿色计划,构建了 Java 语言的前身 Oak,Oak 得名于高司令办公室外的一棵橡树。
1995.5,Oak 改名为 Java,正式发布 Java 1.0 版,提出"Write Once,Run Anywhere"。
1996.1,JDK 1.0 发布,提供了一个纯解释执行的Java 虚拟机 Sun Classic VM。
1997.2,JDK 1.1 发布,提供了 JAR 文件格式、JDBC、JavaBeans、RMI、内部类、反射等。~1999.4,JDK 发布了 1.1.0~1.1.8,九个版本。
1998.12,JDK 1.2 发布,拆分出 J2SE、J2EE、J2ME,添加了 Swing、Collections 集合类等。
1999.4,HotSpot 虚拟机诞生。
2000.5,JDK 1.3 发布,类库中新增了数学计算、Timer API、RMI 改动、Java 2D API、JavaSound 等。
2002.2,JDK 1.4 发布,新提供了正则表达式、异常链、nio、日志类、xml 解析器和 XSLT 转换器等。
2004.9,JDK 5 发布,改了命名,新提供了自动装箱、泛型、动态注解、枚举、可变长参数、foreach 循环、改进了内存模型、并发包等。
2006.12,JDK 6 发布,产品线使用了新命名,内置了 Mozilla JavaScript Rhino 引擎支持动态语言、提供编译期注解处理器、微型 HTTP 服务器 API、虚拟机内部做了大量改进(锁与同步、垃圾收集、类加载等)。
2006.11,Sun 着手开源,逐步建立了 OpenJDK。
2009.2,JDK 7 发布第一个里程碑版本,最新 Update 221。在 JDK 7 提供了对 Mac OS 系统的支持,对 ARM 指令集架构的支持等,由于 Sun 的落寞部分规划的新功能,延期到 JDK 8 中由 Oracle 实现。
2014.3,JDK 8 发布,启用 JEP 管理新功能定义与新特性,提供了 Lambda、内置 Nashorn JavaScript引擎、新的日期和时间 API、移除 HotSpot 的永久代等。
2017.9,JDK 9 发布,新增了模块化 Jigsaw,JS Shell、JLink、JHSDB 等工具,整顿了 HotSpot 日志系统,支持 HTTP 2 客户端 API 等 91 个 JEP。更新发版节奏与 Long Term Support,LTS 版的机制。
2018.3,JDK 10 发布,内部重构,如统一源仓库、统一垃圾收集器接口、统一即时编译器接口、引入新的 Graal 即时编译器等 12 个 JEP。
2018.9,JDK 11 发布,又一个 LTS 版,新增了 ZGC 垃圾收集器、Lambda 支持类型推断、标准 HTTP Client 升级、字符串加强、开源商业特性的源码到 OpenJDK 与 OracleJDK 源码基本一致。
2019.3,JDK 12 发布,加参数增强 switch 表达式、提供 Java 微测试套件(JMH)、默认 G1 垃圾收集器等。
2019.9, JDK 13 发布,引入 yield 关键字到 switch 中、文本块、增强 ZGC 释放未使用内存、SocketAPI 重构、动态应用程序类-数据共享等。
2020.3,JDK 14 发布,引入 record 关键字、空指针异常精准提示、switch 增强放开、instanceof 增强、jpackage 工具、移除了 CMS 垃圾收集器等。
2020.9,JDK 15 发布,新增了 EdDSA 数字签名算法、隐藏类、重新实现DatagramSocketAPI、ZGC 转正、模式匹配和 Records 等功能。
不知道你看完这段历史有什么感觉,反正我的感觉是学不动了,哈哈!
Java 中的咖啡浪漫
class 文件的魔数,cafe babe,咖啡北鼻!这可是二十几年前就定下来的。
【Java学习资源】整理推荐
- MAT 分析堆内存快照
- jclasslib 查看类信息
- 增大 MAT 堆内存
- JVM 常用配置参数(Java 8)
- 40 道JVM面试题解答
- JVM 问题排查常用指令
- jvisualvm 远程连接服务器 JVM
- 字节码指令分类
- -verbose:gc 和 -XX:+PrintGC 的区别
- JVM字节码指令表
- 图解 Class 文件结构
- Class 文件的结构
- JVM 故障处理工具列表
- HotSpot 内存分配的主要规则
- 开启 GC 日志
- 垃圾收集器及特点
- JVM垃圾回收算法
- 什么样的 Java 对象会被当垃圾回收?
- 内存溢出复现
- HotSpot VM 中对象的内存分析
- JVM 控制的内存区域
- JVM家族
- Java 的发展史
- 常见 JVM dump 指令
【Java面试题与答案】整理推荐