在本部分,咱們將會討論根據不一樣的操做系統環境來設置 Java 的語言環境。html
OpenJDK - https://openjdk.java.net/java
Sun JDK - https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmloracle
關於 JDK 和 OpenJDK,這個問題要從 Sun,Oracle,開源社區的恩恩怨怨提及。簡單來講就是下面的一些內容(原文來自知乎:https://www.zhihu.com/question/19646618/answer/40621705)字體
使用過 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的區別,能夠概括爲如下幾點:.net
受權協議的不一樣:OpenJDK採用GPL V2協議放出,而SUN JDK則採用JRL放出。二者協議雖然都是開放源代碼的,可是在使用上的不一樣在於GPL V2容許在商業上使用,而 JRL 只容許我的研究使用。開放源代碼
OpenJDK不包含Deployment(部署)功能:部署的功能包括:Browser Plugin、Java Web Start、以及 Java 控制面板,這些功能在 OpenJDK 中是找不到的。htm
OpenJDK源代碼不完整:這個很容易想到,在採用GPL協議的OpenJDK中,SUN JDK 的一部分源代碼由於產權的問題沒法開放給 OpenJDK 使用,其中最主要的部份就是 JMX 中的可選元件 SNMP 部份的代碼。所以這些不能開放的源代碼 將它做成plug,以供 OpenJDK 編譯時使用,你也能夠選擇不要使用 plug。而 Icedtea 則爲這些不完整的部分開發了相同功能的源代碼 (OpenJDK6),促使 OpenJDK 更加完整。開發
部分源代碼用開源代碼替換:因爲產權的問題,不少產權不是SUN的源代碼被替換成一些功能相同的開源代碼,好比說字體柵格化引擎,使用Free Type代替。部署
OpenIDK只包含最精簡的JDK:OpenJDK不包含其餘的軟件包,好比Rhino Java DB JAXP……,而且能夠分離的軟件包也都是儘可能的分離,可是這大多數都是自由軟件,你能夠本身下載加入。
不能使用Java商標:這個很容易理解,在安裝OpenJDK的機器上,輸入「java -version」 顯示的是OpenJDK,可是若是是使用 Icedtea 補丁的 OpenJDK,顯示的是 java。
開源社區和 Oracle 的恩恩怨怨也就來源於此了,隨着 Oracle 對 Sun JDK 考慮收取許可證費,愈來愈多的產品都在考慮使用 OpenJDK 爲替代的 JDK 了。
若是你對 JDK 中的高級功能並非很是敏感或者你並不須要這些高級功能,你徹底能夠考慮使用 OpenJDK 替代的 SUN JDK。