JDK
JDK 全称 Java Development Kit,是 Java 开发环境。我们通常所说的 JDK 指的是 Java SE (Standard Edition) Development Kit。除此之外还有 Java EE(Enterprise Edition)和 Java ME(Micro Edition platforms)。
- 
    
1995 年 alpha 和 beta Java 公开版本发布,取名为 WebRunner。
 - 
    
1996.1.23 Java 第一个版本发布,取名叫 Oak。但是第一个稳定版本是 JDK 1.0.2,被称做 Java 1。
 - 
    
1998.12.8 发布了 J2SE 1.2。这个版本到 J2SE 5.0 更名为 Java 2。其中的 SE 指的是 Standard Edition,为了区别于 J2EE(Enterprise Edition)和 J2ME(Micro Edition)。
 - 
    
2000.5 发布了 J2SE 1.3,其中包含了 HotSpot JVM。而 HotSpot JVM 首次发布是在 1999.4,名为 J2SE 1.2 JVM。
 - 
    
2004.9.30 发布了 J2SE 5.0。为什么这个版本命名和前面几个版本不一样呢?这个版本原本计划以 1.5 命名的,沿用以前的命名方式。但是为了更好的反映这个版本的成熟度,所以改名为 5.0。 这个版本以后,有了一个新的版本控制系统,5.0 用来表示产品版本,用来表示稳定的 J2SE 版本,而 1.5.0 用来表示开发者版本,也就是 Java 5.0 = JDK 1.5.0。
 - 
    
2006.12.11,J2SE 改名为 Java SE,版本号去掉了 .0。此后对应版本就是 Java 6 = JDK 1.6,Java 7 = JDK 1.7。
 - 
    
2011.7.7. 发布 Java SE 7,是一个重大版本更新。更新了众多特性。
 - 
    
2018.3 发布 Java SE 10。在此之前,Java 基本上是两年一个版本,除了 Java SE 7 经过了五年,Java SE 8 经过了三年。在此之后,就是每六个月发布一次新版本。但是不是每个版本都是 LTS(Long-Term-Support)。按照 Oracle 的计划,每三年会有一个 LTS 版本。最近的 LTS 版本就是 Java SE 11 了。
 
OpenJDK VS Oracle JDK
OpenJDK 是 在 2007 年由 Sun Corporation(现在的Oracle Corporation) 发布的。是 Oracle JDK 的开源实现版本,以 GPL 协议发布。在 JDK 7 的时候,Sub JDK 就是在 Open JDK 7 的基础上发布的,只替换了少量的源码。在 Sun 公司被 Oracle 收购以后,Sun SDK 就被称为 Oracle JDK。Oracle JDK 是基于 Oracle Binary COde License Agreement 协议。 两者的区别如下:
- Oracle JDK 将三年发布一次稳定版本,OpenJDK 每三个月发布一次。
 - Oracle JDK 支持 LTS,OpenJDK 只支持当前版本至下一个版本发布。
 - Oracle JDK 采用 Oracle Binary Code License 协议,OpenJDK 采用 GPL v2 协议。
 - Oracle JDK 基于 OpenJDK 构建,技术上基本没有差异。
 
java8
- Lambda 和 函数式接口
 - 方法引用
 - 接口默认方法和静态方法
 - 重复注解
 - 类型注解
 - Stream
 - 日期时间 API
 - Base64 支持
 - 并行数组 ParallelSort
 
java9
- Jigsaw 模块系统
 - JShell REPL
 - 接口中使用私有方法
 - 集合不可变实例工厂方法
 - 改进 try-with-resources
 - 多版本兼容 jar 包
 - 增强 @Deprecated
 - 增强了钻石操作符 “<>”,可以在 匿名内部类中使用了。
 
java10
- 新增局部类型推断 var
 - 删除工具 javah
 - 一的垃圾回收接口,改进了 GC 和其他内务管理
 - ThreadLocal 握手交互
 
java11
- Lambda 表达式中使用 var
 - 字符串 API 增强
 - 标准化 HttpClient API
 - java 命令直接编译并运行 java 文件,省去先 javac 编译生成 class 再运行的步骤
 - 增加对 TLS 1.3 的支持
 
java12
- switch 表达式
 - 默认CDS归档
 - Shenandoah GC