sun java和openjdk区别_OpenJDK和SunJDK的區別

使用過LINUX的人都應該知道,在大多數LINUX發行版本里,內置或者通過軟件源安裝JDK的話,都是安裝的OpenJDK,那么到底什么是OpenJDK,它與SUN JDK有什么關系和區別呢?

OpenJDK是JDK的開放原始碼版本,以GPL(General Public License)協議的形式放出。

在JDK7的時候,OpenJDK已經作為JDK7的主干開發,SUN JDK7是在OpenJDK7的基礎上發布的,其大部分原始碼都相同,只有少部分原始碼被替換掉。

使用JRL(JavaResearch License,Java研究授權協議)發布。至於OpenJDK6則更是有其復雜的一面,首先是OpenJDK6是JDK7的一個分支,並且盡量去除Java SE7的新特性,使其盡量的符合Java6的標准。

關於JDK和OpenJDK的區別,可以歸納為以下幾點:

一、授權協議的不同

OpenJDK采用GPL V2協議放出,而SUN JDK則采用JRL放出。兩者協議雖然都是開放源代碼的,但是在使用上的不同在於GPL V2允許在商業上使用,而JRL只允許個人研究使用。

二、OpenJDK不包含Deployment(部署)功能

部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,這些功能在OpenJDK中是找不到的。

三、OpenJDK源代碼不完整

在采用GPL協議的OpenJDK中,SUN JDK的一部分源代碼因為產權的問題無法開放給OpenJDK使用,其中最主要的部份就是JMX中的可選元件SNMP部份的代碼。

因此這些不能開放的源代碼 將它作成plug,以供OpenJDK編譯時使用,你也可以選擇不要使用plug。

而Icedtea則為這些不完整的部分開發了相同功能的源代碼 (OpenJDK6),促使OpenJDK更加完整。

四、部分源代碼用開源代碼替換

1、由於產權的問題,很多產權不是SUN的源代碼被替換成一些功能相同的開源代碼,比如說字體柵格化引擎,使用Free Type代替。

2、open jdk 對於crypto等包是開源的。而Sun JDK,現在已經歸為Oracle 所有,javax.caypto 包中的源代碼內容是不可見的。(你可以嘗試在Eclipse點擊查看源代碼試試,是不行的)

五、OpenIDK只包含最精簡的JDK

OpenJDK不包含其他的軟件包,比如Rhino Java DB JAXP……,並且可以分離的軟件包也都是盡量的分離,但是這大多數都是自由軟件,你可以自己下載加入。

六、不能使用Java商標

這個很容易理解,在安裝OpenJDK的機器上,輸入"java -version",顯示的是OpenJDK,但是如果是使用Icedtea補丁的OpenJDK,顯示的是java。

總之,在Java體系中,還是有很多不自由的成分,源代碼的開發不夠徹底,希望Oracle能夠讓JCP更自由開放一些,這也是所有Java社區所希望的。

參考:

https://stackoverflow.com/questions/11547458/what-is-the-difference-between-jvm-jdk-jre-openjdk

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值