在2006年11月13日的JavaOne大会上,Sun公司(当时还没被收购)宣布计划要把Java开源,在随后的一年多时间内,它陆续地将JDK的各个部分在GPL v2(GNU General Public License v2)协议下公开了源码,并建立了OpenJDK组织对这些源码进行独立管理。除了极少量的产权代码(Encumbered Code,这部分代码所有权不属于Sun公司,Sun本身也无权进行开源处理)外,OpenJDK几乎拥有了当时SunJDK 的全部代码。

OpenJDK的质量主管曾经表示在JDK 7中,SunJDK和OpenJDK除了代码文件头的版权注释之外,代码几乎是完全一样的,所以OpenJDK 7与SunJDK 7本质上就是同一套代码库出来的产品。

总结下来,OpenJDK和OracleJDK存在以下方面的区别:

授权协议不同

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

OpenJDK不包含OracleJDK中的部分产权代码

由于OracleJDK中的部分代码的产权也不是归Oracle所有的,所以这部分代码就没开源到OpenJDK中。但是很多“好心”的开源爱好者在OpenJDK中实现了相同的功能,并将源代码

开源到OpenJDK中。比如说字体栅格化引擎,使用Free Type代替。

不能使用Java商标

在Sun被Oracle收购以后,Java这个商标就归Oracle所有了。不仅OpenJDK不能使用java商标,J2EE这个曾经Sun的亲儿子命运也同样坎坷,已经被Oracle无情抛弃,同样

不能在使用Java商标。

但是随着JDK版本的不断发布,Oracle失去了维护OpenJDK的耐心,因为不赚钱啊。RedHat从Oracle手上接过OpenJDK的管理权利和维护职责。

2019年3月20日,JDK 12发布,只包含8个JEP,其中主要有Switch表达式、Java微测试套件(JMH)等新功能,最引人注目的特性无疑是加入了由RedHat领导开发的Shen-andoah垃圾收集器。Shenandoah作为首个由非Oracle开发的垃圾收集器,其目标又与Oracle在JDK 11中发布的ZGC几乎完全一致,两者天生就存在竞争。Oracle马上用实际行动抵制了这个新收集器,在JDK 11发布时才说应尽可能保证OracleJDK和OpenJDK的兼容一致,转眼就在OracleJDK 12里把Shenandoah的代码通过条件编译强行剔除掉,使其成为历史上唯一进入了OpenJDK发布清单,但在OracleJDK中无法使用的功能。

所以对于高版本的OpenJDK和OracleJDK之间,也存在OpenJDK中有的功能,但是OracleJDK中不包含的。

总的来说,对于普通开发,使用OpenJDK和OracleJDK并没有太大差别,两者的差别更体现在商业考量上面。

一些问题

具体有哪些功能是OracleJDK中有,但是OpenJDK中不包含的。欢迎开发经验丰富的大神评论留言。

最新文章

  1. TCP四步挥手的各种状态转换图
  2. sublime text3 常用插件安装
  3. Servlet调用过程
  4. Ubuntu 14.04下搜狗输入法崩溃重启
  5. Thinkphp源码分析系列(五)–系统钩子实现
  6. .NET J2EE APP全局会话架构运用场景
  7. [deviceone开发]-土地销售App开源
  8. sqlzoo.net刷题2
  9. 注册并启动 Reporting Services SharePoint 服务
  10. 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型
  11. 鼠标滚轮事件MouseWheel
  12. [Castle Windsor]学习依赖注入
  13. maven常见命令总结
  14. 兼容Firefox和IE的onpropertychange事件oninput
  15. BOOT BIOS UEFI
  16. iOS 页面之间的专长动画控制器间的转换
  17. msfvenom向apk注入payload
  18. POJ1569 Myacm Triangles
  19. apache tomcat搭建负载均衡(实现集群中的session同步)
  20. p1 批梯度下降算法

热门文章

  1. sed 指定行范围匹配
  2. Eureka服务发现Discovery
  3. SpringBoot整合Mail发送邮件&发送模板邮件
  4. CF 878E Numbers on the blackboard 并查集 离线 贪心
  5. 学习使用CompletableFuture
  6. HTML学习笔记(一)——基础标签及常用编辑器技巧
  7. 数据结构中的树(二叉树、二叉搜索树、AVL树)
  8. MySQL数据库高可用方案
  9. 【系统之音】WindowManager工作机制详解
  10. python 正则表达式与JSON-正则表达式匹配数字、非数字、字符、非字符、贪婪模式、非贪婪模式、匹配次数指定等