本篇文章介紹如何在 Ubuntu Linux 中以 apt 安裝 Oracle 或 OpenJDK 的 Java 的 JRE 執行環境以及 JDK 開發環境。

Java 是許多應用軟體都會需要的執行環境,而在 Ubuntu Linux 中的 Java 版本主要有兩種,一個是 Oracle 官方的 Java,另外一個是 OpenJDK 開放原始碼的 Java,這兩種 Java 實作版本都有通過 TCK,而且兩者目前主要都是 Oracle 在維護,差異其實不大(請參考 StackOverflow)。

以下是在 Ubuntu Linux 中使用 apt 安裝 Oracle 與 OpenJDK 的 Java 安裝步驟。

OpenJDK

OpenJDK 是 Ubuntu Linux 預設的 JRE/JDK,我們可以使用 apt 安裝:

sudo apt-get update
sudo apt-get install default-jre

若只是要執行一般的 Java 應用程式,就只要安裝 JRE 即可,如果是要使用 Java 開發程式,就要加裝 JDK:

sudo apt-get update install default-jdk

安裝完成後,可以檢查一下 java 的版本:

java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
javac -version
javac 1.8.0_121

Oracle JDK

由於 Oracle 的 Java 版本不是屬於開放原始碼授權的,所以如果想要安裝 Oracle 官方的 JDK 環境,步驟會稍微複雜一些。
首先新增一個 PPA:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

接著依照自己需要的 Java 版本安裝。

sudo apt-get install oracle-java6-installer  # 安裝 Oracle JDK 6
sudo apt-get install oracle-java7-installer  # 安裝 Oracle JDK 7
sudo apt-get install oracle-java8-installer  # 安裝 Oracle JDK 8
sudo apt-get install oracle-java9-installer  # 安裝 Oracle JDK 9

目前 Java 最新的穩定版本是 安裝 Oracle JDK 8,沒有特殊需求的話,建議安裝這一個版本。

Oracle JDK 9 預定 2017 年三月份才會釋出正式版,目前還是 preview 版,正式的環境不建議使用。

由於 Oracle 的 Java 是屬於 Oracle 公司所有,它的授權方式不是一般的開放原始碼授權,安裝時會跳出類似這種授權條款訊息,必須選擇「Yes」同意授權條款才能安裝 Oracle 的 Java。

設定系統 Java 版本

在 Ubuntu Linux 系統上我們可以同時安裝多種 Java 版本,兒我們可以透過 update-alternatives 這個工具來設定系統預設的 Java 版本,首先用 --query 或是 --display 列出目前系統預設的 Java 版本以及所有可用的 java 版本:

update-alternatives --query java
Name: java
Link: /usr/bin/java
Slaves:
 java.1.gz /usr/share/man/man1/java.1.gz
Status: manual
Best: /usr/lib/jvm/java-8-oracle/jre/bin/java
Value: /usr/lib/jvm/java-8-oracle/jre/bin/java

Alternative: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Priority: 1081
Slaves:
 java.1.gz /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/java.1.gz

Alternative: /usr/lib/jvm/java-8-oracle/jre/bin/java
Priority: 1081
Slaves:
 java.1.gz /usr/lib/jvm/java-8-oracle/man/man1/java.1.gz

目前系統預設的版本是 Oracle 的 Java(/usr/lib/jvm/java-8-oracle/jre/bin/java),若要更改這個系統預設的 Java 版本,可以使用 --config 參數來設定:

sudo update-alternatives --config java

接著使用編號選擇 Java 的版本:

其他的 javacjavadoc 等相關指令也可以利用 update-alternatives 來更改預設版本:

update-alternatives --query javac
update-alternatives --query javadoc

設定 JAVA_HOME 環境變數

JAVA_HOME 這個環境變數紀錄了 Java 的安裝路徑,很多的 Java 應用程式在執行時都會需要讀取這個環境變數的值,我們可以利用上面介紹的 update-alternatives 指令查詢 Java 的安裝路徑,再將路徑設定加入 /etc/environment 中:

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

接著直接載入 /etc/environment 的設定,測試一下:

source /etc/environment
echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle

這樣就完成 JAVA_HOME 環境變數的設定了。

參考資料:DigitalOcean