Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Open JDK 和 Oracle JDK,哪个更优秀?

Open JDK 和 Oracle JDK,哪个更优秀?

作者头像
南风
发布于 2020-02-17 04:19:01
发布于 2020-02-17 04:19:01
1.2K0
举报
文章被收录于专栏:Java大联盟Java大联盟

作者 | petercao

urlify.cn/yAn6ru

前言

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

Oracle JDK 采用了商业实现,而 Open JDK 使用的是开源的 FreeType。当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK 中还会存在一些Open JDK 没有的、商用闭源的功能,例如从 JRockit 移植改造而来的 Java Flight Recorder。预计以后 JRockit 的 MissionControl 移植到 HotSpot 之后,也会以 Oracle JDK 专有、闭源的形式提供。

Oracle 的项目发布经理 Joe Darcy 在 OSCON 2011 上对两者关系的介绍也证实了 Open JDK 7 和 Oracle JDK 7 在程序上是非常接近的,两者共用了大量相同的代码(如下图,注意图中提示了两者共同代码的占比要远高于图形上看到的比例),所以我们编译的 Open JDK,基本上可以认为性能、功能和执行逻辑上都和官方的 Oracle JDK 是一致的。

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

什么是 Open JDK?

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

在 JDK 7 的时候,Open JDK 已经成为 JDK 7 的主干开发版,SUN JDK 7 是在 Open JDK 7 的基础上发布的,其大部分源码都相同,只有少部分源码被替换掉。

使用 JRL(Java Research License,Java 研究授权协议)发布。

至于 Open JDK 6 则更是有其复杂的一面,首先是 Open JDK 6 是 JDK 7 的一个分支,并且尽量去除 Java SE 7 的新特性,使其尽量的符合 Java 6 的标准。

JDK 和 Open JDK 的区别

1、授权协议的不同

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

2、Open JDK 只包含最精简的 JDK

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

3、Open JDK 源代码不完整

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

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

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

4、Open JDK 和 IcedTea 的关系

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

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

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

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

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

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

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

6、不能使用 Java 商标

这个很容易理解,在安装 Open JDK 的机器上,输入“java -version”显示的是 Open JDK,但是如果是使用 Icedtea 补丁的 Open JDK,显示的是 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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java大联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Oracle JDK 和 OpenJDK 有什么区别?
OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea、UltraViolet都是从OpenJDK源码衍生出的发行版。
Java技术栈
2020/02/21
1.2K0
Linux下的JDK和OpenJDK有什么具体的区别
  OpenJDK是JDK的开放原始码版本,以GPL(General Public License)协议的形式放出(题主提到的open就是指的开源)。在JDK7的时候,OpenJDK已经作为JDK7的主干开发,SUN JDK7是在OpenJDK7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。使用JRL(JavaResearch License,Java研究授权协议)发布。   至于OpenJDK6则更是有其复杂的一面,首先是OpenJDK6是JDK7的一个分支,并且尽量去除Java SE
黑泽君
2018/12/10
1.3K0
OpenJDK和Oracle JDK有什么区别和联系?
《Linux 7安装Oracle 11g打怪经历》的安装过程中,启动图形界面,需要指定jre路径,当时使用yum install jdk安装的,并不能解决问题,查看版本才知道他是OpenJDK,最终使用Oracle JDK,才解决的问题,那OpenJDK和Oracle JDK究竟有什么区别?
bisal
2020/03/13
13.8K1
Java 环境变量 原
Sun JDK - https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
HoneyMoose
2019/01/30
4530
CentOS7 下rpm安装jdk1.8「建议收藏」
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
全栈程序员站长
2022/06/26
1.2K0
CentOS7 下rpm安装jdk1.8「建议收藏」
甲骨文严查Java授权,换openJDK要避坑
外媒The Register报道,甲骨文稽查企业用户,近期开始将把过去看管较松散的Java授权加入。
静儿
2022/05/06
2.3K0
甲骨文严查Java授权,换openJDK要避坑
甲骨文严查Java授权 、 openJDK 注意避坑
外媒The Register报道,甲骨文稽查企业用户,近期开始将把过去看管较松散的Java授权加入。
FHAdmin
2022/04/21
2K0
Linux中配置Java开发环境
rpm是管理套件命令,-qa表示使用询问模式查询所有套件;grep表示查询文件里符合条件的字符串;java表示查询包含java的字符串
老九学堂-小师弟
2019/10/09
2K0
openjdk和oraclejdk有什么区别吗?
1.授权协议的不同:OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。
wuweixiang
2018/12/14
2.2K0
jvm基本常识
机器码是电脑cpu直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,编写起来也比较难。
挨踢小子部落阁
2023/03/15
2550
jvm基本常识
Oracle JDK与Open JDK 对比
OpenJDK项目主要基于Sun捐赠的HotSpot源代码。此外,OpenJDK被选为Java 7的参考实现,由Oracle工程师维护。关于 JVM,JDK,JRE 和 OpenJDK 之间的区别,Oracle博客帖子在2012年有一个更详细的答案:
黑洞代码
2021/01/14
1.3K0
不懂开源软件?你需要这篇文章
没有开源软件,现在的互联网根本无法存在,开源的历史可以追溯到ARPANET建立。开源在今天已经不再是一个时髦的词了,对于互联网的开发者来说,它现在就像空气和水一样,就在我们的生活中。
美码师
2019/01/23
2.8K1
不懂开源软件?你需要这篇文章
Oracle JDK 8的License及更新问题
首先申明一点,我不是来劝退你不使用Java 8的,这个事不讨好,我只是来告诉你,如果你还在使用Java 8,那你得关注下它的License以及安全补丁
御剑
2022/11/18
2.4K0
一文读懂常用开源许可证
社区时常为流行产品中有争议的开源许可证而感到震惊,这引起各方关注,纷纷争论何为真正的开源许可证。去年,Apache 基金会(Apache Foundation)禁止使用 Facebook React 那些具有争议的专利组件,这引发了轩然大波,并让大量人员纷纷跑去加入 Reddit boards。在过去的几个月中, Redis Labs 和 MongoDB 修改了他们备受欢迎的开源数据库的许可证,这让许多人难以自拔,凸显了用大家都能看懂的人话来具体介绍常见开源许可证的紧迫性和必要性。
心莱科技雪雁
2020/03/02
3.9K0
几种常见的软件开源协议介绍
最近在做一些技术管理的工作,在技术规范中会涉及到开源协议,参考一下这篇文章介绍的几种常见的开源协议,例如,GPL、BSD、MIT、Mozilla、Apache和LGPL等,
bisal
2021/09/23
2.1K0
几种常见的软件开源协议介绍
了解JVM的相关概述,发现很多全忘了(文末福利)
官方的说明:https://www.oracle.com/cn/java/technologies/javase-downloads.html Oracle Customers and ISVs targeting Oracle LTS releases: Oracle JDK is Oracle's supported Java SE version for customers and for developing, testing, prototyping or demonstrating your Java applications. End users and developers looking for free JDK versions: Oracle OpenJDK offers the same features and performance as Oracle JDK under the GPL license .
小熊学Java
2023/11/21
2210
了解JVM的相关概述,发现很多全忘了(文末福利)
MySQL 开源许可研究
在 MySQL 中引用的第三方源代码,全部都基于不具备许可证传染性的宽松开源许可证发布,或者基于双许可证发布,Oracle 在其开源版 MySQL 中对此类双许可证的第三方代码 选择使用 GPLv2 许可证,在闭源的商业版 MySQL 中对此类双许可证的第三方代码选择使 用更为宽松的许可证。
爱可生开源社区
2022/05/30
9710
JVM- 第一章-JVM与Java体系结构(发展历程)
具体JVM的内存结构,其实取决于其实现,不同厂商的JVM,或者同一厂商发布的不同版本,都有可能存在一定差异。主要以Oracle HotSpot VM为默认虚拟机。
默 语
2024/11/20
1080
2018-09-07 几种开源协议的比较(BSD,Apache,GPL,LGPL,AGPL,MIT) – 整理几种开源协议的比较(BSD,Apache,GPL,LGPL,AGPL,MIT) – 整理
http://ewen0930.github.io/2016/11/open-source-licenses/
Albert陈凯
2018/09/20
2.4K0
2018-09-07 几种开源协议的比较(BSD,Apache,GPL,LGPL,AGPL,MIT) – 整理几种开源协议的比较(BSD,Apache,GPL,LGPL,AGPL,MIT) – 整理
开源协议(Open Source License)
国际公认的开源许可证有 80 多种,共同特征是允许用户免费使用、修改、共享源码,只是都有各自使用的条件。
软件书桌
2024/05/06
4600
相关推荐
Oracle JDK 和 OpenJDK 有什么区别?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档