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