Java 環境變數
在本部分,我們將會討論根據不同的作業系統環境來設定 Java 的語言環境。
OpenJDK - https://openjdk.java.net/
Sun JDK - https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
關於 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的區別,可以歸納為以下幾點:
授權協議的不同: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 更加完整。
部分原始碼用開原始碼替換:由於產權的問題,很多產權不是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。
相關文章
- Java環境變數新增Java變數
- java 環境變數的配置Java變數
- linux java環境變數配置LinuxJava變數
- java jdk 設定環境變數JavaJDK變數
- java配置環境變數的錯誤Java變數
- Linux下Java環境變數的配置LinuxJava變數
- GBASEDBTSERVER 環境變數7GBASEDBTSHMBASE 環境變數 (UNIX™)Server變數
- java環境變數JAVA_HOME,path,CLASSPATH作用Java變數
- 簡述SHELL全域性環境變數與局變環境變數變數
- 配置環境變數變數
- postman環境變數Postman變數
- 環境變數path變數
- env 環境變數變數
- DOS環境變數變數
- jdk環境變數JDK變數
- [JAVA] CLASSPATH環境變數必須要配置嗎Java變數
- Ubuntu配置JDK環境變數(ubuntu java_home)UbuntuJDK變數Java
- Day01-Java簡介、環境、常量、變數Java變數
- 什麼是環境變數?Python中如何設定環境變數?變數Python
- windows配置環境變數Windows變數
- Shell配置環境變數變數
- Flume 配置環境變數變數
- Linux環境變數配置Linux變數
- 環境變數詳解變數
- 配置JDK環境變數JDK變數
- ubuntu JDK 環境變數UbuntuJDK變數
- Linux常用環境變數Linux變數
- JAVA下載安裝及設定環境變數Java變數
- 什麼是環境變數?python設定環境變數有什麼用?變數Python
- 如何檢視Docker容器環境變數,如何向容器傳遞環境變數Docker變數
- Mac 設定環境變數的位置、檢視和新增PATH環境變數Mac變數
- node.js環境安裝及環境變數Node.js變數
- ansible設定環境變數變數
- ansible 設定環境變數變數
- Linux設定環境變數Linux變數
- linux工具配置環境變數Linux變數
- export 設定環境變數Export變數
- 4.2.10.3 檢視環境變數變數