资料内容:
1.1 OpenJDK
⾃ 1996 年 JDK 1.0 发布以来,Sun 公司在⼤版本上发⾏了 JDK 1.1 、 JDK 1.2 、 JDK
1.3 、 JDK 1.4 、 JDK 5 , JDK 6 ,这些版本的 JDK 都可以统称为 SunJDK 。之后在 2006 年的
JavaOne ⼤会上,Sun 公司宣布将 Java 开源,在随后的⼀年多⾥,它陆续将 JDK 的各个部分在
GPL v2(GNU General Public License,version 2)协议下开源,并建⽴了 OpenJDK 组织来对这
些代码进⾏独⽴的管理,这就是 OpenJDK 的来源,此时的 OpenJDK 拥有当时 sunJDK 7 的⼏乎全
部代码。
1.2 OracleJDK
在 JDK 7 的开发期间,由于各种原因的影响 Sun 公司市值⼀路下跌,已⽆⼒推进 JDK 7 的开发,
JDK 7 的发布⼀直被推迟。之后在 2009 年 Sun 公司被 Oracle 公司所收购,为解决 JDK 7 长期跳
票的问题,Oracle 将 JDK 7 中⼤部分未能完成的项⽬推迟到 JDK 8 ,并于 2011 年发布了JDK 7,
在这之后由 Oracle 公司正常发⾏的 JDK 版本就由 SunJDK 改称为 Oracle JDK。
在 2017 年 JDK 9 发布后,Oracle 公司宣布从此以后 JDK 将会在每年的 3 ⽉和 9 ⽉各发布⼀个⼤
版本,即半年发⾏⼀个⼤版本,⽬的是为了避免众多功能被捆绑到⼀个 JDK 版本上⽽引发的⽆法交付
的风险。
在 JDK 11 发布后,Oracle 同步调整了 JDK 的商业授权,宣布从 JDK 11 起将以前的商业特性全部
开源给 OpenJDK ,这样 OpenJDK 11 和 OracleJDK 11 的代码和功能,在本质上就完全相同了。同
时还宣布以后都会发⾏两个版本的 JDK :
⼀个是在 GPLv2 + CE 协议下由 Oracle 开源的 OpenJDK;
⼀个是在 OTN 协议下正常发⾏的 OracleJDK。
两者共享⼤部分源码,在功能上⼏乎⼀致。唯⼀的区别是 Oracle OpenJDK 可以在开发、测试或者⽣
产环境中使⽤,但只有半年的更新⽀持;⽽ OracleJDK 对个⼈免费,但在⽣产环境中商⽤收费,可以
有三年时间的更新⽀持。
1.3 HotSpot VM
它是 Sun/Oracle JDK 和 OpenJDK 中默认的虚拟机,也是⽬前使⽤最为⼴泛的虚拟机。最初由
Longview Technologies 公司设计发明,该公司在 1997 年被 Sun 公司收购,随后 Sun 公司在 2006
年开源 SunJDK 时也将 HotSpot 虚拟机⼀并进⾏了开源。之后 Oracle 收购 Sun 以后,建⽴了
HotRockit 项⽬,并将其收购的另外⼀家公司(BEA)的 JRockit 虚拟机中的优秀特性集成到
HotSpot 中。HotSpot 在这个过程⾥⾯移除掉永久代,并吸收了 JRockit 的 Java Mission Control
监控⼯具等功能。到 JDK 8 发⾏时,采⽤的就是集两者之长的 HotSpot VM 。