OpenJDK是Sun在2006年末把Java开源而产生的项目,这儿的“开源”是一般意义上的源码开放形式,即源码是可被复用的,比如IcedTea、UltraViolet都是从OpenJDK源码衍生出的发行版。
OracleJDK选用了商业实现,而OpenJDK使用的是开源的FreeType。
当然,“相同”是建立在二者共有的组件基础上的,OracleJDK中还会存在某些OpenJDK没有的、商用闭源的功能。
比如从JRockit移植改造而来的JavaFlightRecorder,预计以后JRockit的MissionControl移植到HotSpot以后,也会以OracleJDK特有、闭源的形式提供。
Oracle的项目发布经理JoeDarcy在OSCON2011上对二者关系的详细介绍也确认了OpenJDK7和OracleJDK7在程序上是非常贴近的,二者共用了大量相同的代码.。
如下图,特别注意图中提示了二者相同代码的占比要远高于图形上看到的比例,所以我们编译的OpenJDK,通常可以认为性能、功能和执行逻辑上都和官方的OracleJDK是一致的。
在大多数Linux发行版本里,内置或者通过软件源安装的JDK,都是安装的OpenJDK。
到底什么是OpenJDK?
历史上的原因是,OpenJDK是JDK的开放源码版本,以GPL协议的形式发布。
开源协议参考:软件开发中的开源协议详解
在JDK7的时候,OpenJDK已经成为JDK7的主干开发版,SUNJDK7是在OpenJDK7的基础上发布的,其大多数源码都相同,只有少部分源码被替换掉。使用JRL(JavaResearchLicense,Java研究授权协议)发布。
至于OpenJDK6则更是有其复杂的一面,首先是OpenJDK6是JDK7的一个分支,并且尽量去除JavaSE7的新特性,使其尽量的符合Java6的标准。
JDK和OpenJDK的区别
1.授权协议的不同
OpenJDK选用GPLV2协议发布,而JDK则选用JRL协议发布。两个协议虽然都是开放源代码的,但是在使用上的不同在于GPLV2允许在商业上使用,而JRL只允许个人研究使用。
2.OpenJDK只包含最精简的JDK
OpenJDK不包含其他的软件包
小编分类整理了许多java进阶学习材料和BAT面试题,需要资料的请加QQ群:731611386 就能领取2019年java进阶学习资料和BAT面试题以及《Effective Java》(第3版)电子版书籍。
OracleJDK和OpenJDK
最新推荐文章于 2024-05-14 23:54:59 发布