如果你要在一个Linux新机器上部署项目WEB系统,我们需要安装SunJDK。
那在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK。
这样我们在安装SunJDK之前,需要先卸载Linux系统内置的OpenJDK。那OpenJDK和SunJDK有什么区别?
一、联系
OpenJDK,即“开放的JDK”,是JDK的开放原始码版本。在2006年11月3日的JavaOne大会上(2006年12月11日,JDK 1.6发布),Sun公司宣布最终会将Java开源,并在随后的一年多时间里,陆续将JDK的各个部分在(General Public License 国际通用许可协议)协议下公开了源码,并建立了OpenJDK组织对这些源码进行独立管理。
在JDK1.7的时候,OpenJDK已经作为JDK1.7的主干开发,SunJDK1.7是在OpenJDK7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉,并且使用JRL(Java Research License,Java研究授权协议)发布。即Openjdk7由JDK7代码开源而来,继承了JDK7的代码结构和风格,由Openjdk社区维护
二、区别
1、两者授权协议不同
OpenJDK→GPL V2协议
SunJDK→JRL协议
两协议都是开放源代码的,但GPL V2允许在商业上使用,而JRL只允许个人研究使用。
2、OpenJDK不包含部署功能
OpenJDK不包含Deployment(部署)功能,如不包含Browser Plugin、Java Web Start、以及Java控制面板(也不常用)
3、OpenJDK源代码不完整
SunJDK的一部分源代码因为产权的问题无法开放给OpenJDK使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码 (OpenJDK6),促使OpenJDK更加完整。
4、OpenJDK只包含最精简的JDK
OpenJDK采用分离模式,不包含其他的软件包,比如Rhino Java DB JAXP等,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,若被需要你可以自己下载加入
5、SunJDK中部分源代码用开源代码替换
由于产权的问题,很多产权不是SunJDK的源代码被替换成一些功能相同的开源代码,如字体栅格化引擎,使用Free Type代替
6、crypto原代码开源与否
open jdk 对于 crypto 等包是开源的。
而Sun JDK,现在已经归为Oracle 所有,javax.caypto 包中的源代码内容是不可见的
Open JDK7源代码地址:9b8c96f96a0f /src/share/classes/javax/
7、OpenJDK不能使用java商标
如安装的是SunJDK,使用java -version查询版本时,结果如下
![00cd237f8d600117b899f658022c0e0f.png](https://img-blog.csdnimg.cn/img_convert/00cd237f8d600117b899f658022c0e0f.png)
如安装的是OpenJDK,使用java -version查询版本时,结果如下
![562fafef1a7687d16f353c00e542b09a.png](https://img-blog.csdnimg.cn/img_convert/562fafef1a7687d16f353c00e542b09a.png)
若使用Icedtea补丁的OpenJDK,显示的是java
补充说明:Icedtea补丁
IcedTea项目最初是由于OpenJDK不完整(因产权而造成的障碍)而创立的,社区需要一个完整的开源工具链及代码库。
IcedTea长期以来一直是OpenJDK的一套补丁,它有一个 基于“./configure”的不同的构建系统。
在OpenJDK中,我们已经替换了产权代码(encumbered code),因此不再有障碍了。正因为我们的努力,IcedTea项目已经减少了使用补丁的数量。IcedTea中看上去不错的一点是,它的 configure脚本使得在多种不同的模式下构建OpenJDK变得很容易,比如使用Zero Assembler Port在非x86/sparc芯片上来支持编译等等。 IcedTea提供的一大块内容是plugin/java-web-start基础架构。
Sun jdk中包含有部分第三方代码,这部分代码并没有开放,Sun只是以二进制插件的形式对开发者提供,因此Openjdk还有一部分代码是闭源的,这些代码以二进制插件的形式存在。这样,在Openjdk的基础上,逐渐成立了另外一个项目——IcedTea,IcedTea项目开放了全部的二进制插件,是全部开源的Java虚拟机版本。
在生产环境中是可以使用OpenJDK,OpenJDK允许在商业上使用,当前一些知名互联网公司使用的就是OpenJDK,如阿里巴巴、推特、谷歌、亚马逊等
上一篇:
像最初:JDK各版本发布时间zhuanlan.zhihu.com下一篇:
像最初:初识JDK11、JDK12的新特性zhuanlan.zhihu.com