OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源 ”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea、UltraViolet都是从OpenJDK源码衍生出的发行版。

Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。

当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK中还会存在一些Open JDK没有的、商用闭源的功能。

例如从JRockit移植改造而来的Java Flight Recorder,预计以后JRockit的MissionControl移植到HotSpot之后,也会以Oracle JDK专有、闭源的形式提供。

Oracle的项目发布经理Joe Darcy在OSCON 2011上对两者关系的介绍也证实了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,两者共用了大量相同的代码.。

如下图,注意图中提示了两者共同代码的占比要远高于图形上看到的比例,所以我们编译的OpenJDK,基本上可以认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的。

在大多数Linux 发行版本里,内置或者通过软件源安装的JDK,都是安装的OpenJDK。

什么是OpenJDK?

历史上的原因是,OpenJDK是JDK的开放源码版本,以GPL协议的形式发布。

开源协议参考:软件开发中的开源协议详解

在JDK7的时候,OpenJDK已经成为JDK7的主干开发版,SUN JDK7是在OpenJDK7的基础上发布的,其大部分源码都相同,只有少部分源码被替换掉。使用JRL(Java Research License,Java研究授权协议)发布。

至于OpenJDK6则更是有其复杂的一面,首先是OpenJDK6是JDK7的一个分支,并且尽量去除Java SE7的新特性,使其尽量的符合Java6的标准。

JDK和OpenJDK的区别

1.授权协议的不同

OpenJDK采用GPL V2协议发布,而JDK则采用JRL协议发布。两个协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。

2.OpenJDK只包含最精简的JDK

OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。

3.OpenJDK源代码不完整

这个很容易想到,在采用GPL协议的OpenJDK中,SUN JDK的一部分源代码因为产权的问题无法开放OpenJDK使用,其中最主要的部分就是JMX中的可选元件SNMP部分的代码。

因此这些不能开放的源代码将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。

而Icedtea则为这些不完整的部分开发了相同功能的源代码(OpenJDK6),促使OpenJDK更加完整。

4.OpenJDK和IcedTea的关系

IcedTea项目最初是由于OpenJDK不完整(因产权 而造成的障碍)而创立的,社区需要一个完整的开源工具链及代码库。

IcedTea长期以来一直是OpenJDK的一套补丁,正如刚才我所说到的,它有一个 基于“./configure”的不同的构建系统。

在OpenJDK中,我们已经替换了产权代码(encumbered code),因此不再有障碍了。正因为我们的努力,IcedTea项目已经减少了使用补丁的数量。

IcedTea中看上去不错的一点是,它的 configure脚本使得在多种不同的模式下构建OpenJDK变得很容易,比如使用Zero Assembler Port在非x86/sparc芯片上来支持编译等等。

IcedTea提供的一大块内容是plugin/java-web-start基础架构。

5.部分源代码用开源代码替换

由于产权的问题,很多是SUN JDK的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。

6.不能使用Java商标

这个很容易理解,在安装OpenJDK的机器上,输入“java -version”显示的是OpenJDK,但是如果是使用Icedtea补丁的OpenJDK,显示的是java。(未验证)

参考:

Google Guava官方教程(中文版) http://ifeve.com/google-guava/

Guava: Google Core Libraries for Java

Guava src and api doc: https://github.com/google/guava https://google.github.io/guava/releases/snapshot-jre/api/docs/

Oracle JDK 和 OpenJDK 有什么区别?相关推荐

  1. Oracle JDK和 OpenJDK 之间的区别

    1. 简介 在本文中,我们将探讨Oracle Java Development Kit和OpenJDK之间的差异.我们先快速浏览一下,然后进行比较.之后,我们将看到其他JDK实现的列表. 2. Ora ...

  2. 面试官 | Oracle JDK 和 OpenJDK 有什么区别?

    作者 | petercao 来源 | urlify.cn/yAn6ru OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的"开源"是通常意义上的源码开放形式,即 ...

  3. Java常见面试题:Oracle JDK 和 OpenJDK 的区别?

    Oracle JDK 和 OpenJDK 的区别? 可能在看这个问题之前很多人和我一样并没有接触和使用过 OpenJDK.那么Oracle和OpenJDK之间是否存在重大差异?下面我通过收集到的一些资 ...

  4. oracle jdk什么意思,Oracle JDK和OpenJDK之间的区别是什么?

    Oracle JDK和OpenJDK之间有什么区别?下面本篇文章就来给大家介绍一下Oracle JDK和OpenJDK之间的区别是什么,希望对大家有所帮助.[视频教程推荐:Java教程] Oracle ...

  5. 【方向盘】逐渐碎片化的Java生态圈:Oracle JDK、OpenJDK、阿里Dragonwell、华为毕昇

    Oracle JDK开始收费后,我们还能用什么? 本文已被https://yourbatman.cn收录:女娲Knife-Initializr工程可公开访问啦:程序员专用网盘https://wangp ...

  6. centos7 安装oracle jdk 与openjdk 实现切换

    1. 分别安装oraclejdk 与openjdk #下载安装oraclejdk rpm -ivh --prefix=/usr.java/java1.8 ***.rpm #安装openjdk su - ...

  7. JVM,JDK,JRE和OpenJDK有什么区别?

    本文翻译自:What is the difference between JVM, JDK, JRE & OpenJDK? What is the difference between JVM ...

  8. [转帖] 部分收费的Oracle JDK VS 完全免费的OpenJDK

    来源: http://www.flammulina.com/2018/10/28/%E9%83%A8%E5%88%86%E6%94%B6%E8%B4%B9%E7%9A%84oracle-jdk-vs- ...

  9. Oracle与OpenJDK之间的区别

    简介 在本文中,我们将探讨Oracle Java Development Kit和OpenJDK之间的差异并进行比较. Oracle JDK Oracle JDK由Oracle公司开发,该公司是Sun ...

最新文章

  1. 第六篇:并发-粒度锁
  2. 将本地的MS SQL Server数据导入到远程服务器上
  3. mysql释放练级_面试官:谈谈Mysql事务隔离级别?
  4. struts2操作json成字符串格式错误被转义及其前台访问json对象的方法
  5. 聊聊前段插件之Datatables
  6. 算法导论-算法基础-2.1插入排序 (从小到大)
  7. 零基础学python语言_致初学者:零基础如何学好,Python这门编程语言?
  8. java中某对象的引用什么意思_在java中,引用对象变量和对象间有什么关系?()
  9. Java中String连接性能的分析
  10. apache2.2.21下为codeigniter配置url地址重写
  11. 【原创】Js:日期处理(日期格式必须【yyyy-mm-dd】才能转成long的毫秒!其他的不是【年-月-日】的格式,结果会是【NaN】)...
  12. DataAdapter对象填充数据集
  13. 八种不要钱的男士护肤方法 - 生活至上,美容至尚!
  14. linux命名管道fifo通信示例
  15. MaxNewSize is equal to or greater than the entire heap . A new max generation size of will be used.
  16. 服务器怎么不用绑定域名搭建网站,一个空间放两个网站,且不用子目录绑定域名的方法...
  17. arcgis多面体数据转面_ArcGIS多面体(multipatch)解析——引
  18. b站电脑测试用什么软件,使用BiliBili访问诊断工具检测哔哩哔哩网络的方法
  19. 博客园背景滴墨水特效
  20. 资源警告!有人收罗了40个中文NLP词库,放到了GitHub上

热门文章

  1. 数字图像处理:第十二章 小波变换
  2. Android开发者必备:推荐一款助力开发的开源APP
  3. Nagios设置报警间隔
  4. Zabbix 安装部署
  5. java中动态代理实现机制
  6. EF里的默认映射以及如何使用Data Annotations和Fluent API配置数据库的映射
  7. mysql 事务 锁 并发
  8. HTML简单的自定义属性制作tab切换
  9. 融合变形三维插件想法
  10. 域迁移(降级)注意事项