如何在 Linux 上安裝 Java

2019-11-26 06:53:00

在桌面上擁抱 Java 應用程式,然後在所有桌面上執行它們。

無論你執行的是哪種作業系統,通常都有幾種安裝應用程式的方法。有時你可能會在應用程式商店中找到一個應用程式,或者使用 Fedora 上的 DNF 或 Mac 上的 Brew 這樣的軟體包管理器進行安裝,而有時你可能會從網站上下載可執行檔案或安裝程式。因為 Java 是這麼多流行的應用程式的後端,所以最好了解安裝它的不同方法。好訊息是你有很多選擇,本文涵蓋了所有這些內容。

壞訊息是 Java 太大,我說的不僅僅是檔案大小。Java 是一種開放原始碼語言和規範,這意味著從理論上講,任何人都可以建立它的實現版本。這意味著,在安裝任何東西之前,必須確定要安裝的 Java 發行版。

我需要 JVM 還是 JRE 或者 JDK?

Java 大致分為兩個下載類別。Java 虛擬機器Java Virtual Machine(JVM)是執行時元件;它是使 Java 應用程式能夠在計算機上啟動和執行的“引擎”。它包含在 Java 執行時環境Java Runtime Environment(JRE)中。

Java 開發工具包Java Development Kit(JDK)是一個開發工具包:你可以將其視為一個車庫,修理工可以坐在那裡進行調整、修理和改進。JDK 包含 Java 執行時環境(JRE)。

以下載來說,這意味著:

  • 如果你是希望執行 Java 應用程式的使用者,則只需 JRE(包括了 JVM)。
  • 如果你是希望使用 Java 進行程式設計的開發人員,則需要 JDK(包括 JRE 庫,而 JRE 庫又包括 JVM)。    ### OpenJDK、IcedTea 和 OracleJDK 有什麼不同?

太陽微系統Sun Microsystems被 Oracle 收購時,Java 是該交易的主要部分。幸運的是,Java 是一種開源技術,因此,如果你對 Oracle 維護該專案的方式不滿意,則可以選擇其他方法。Oracle 將專有元件與 Java 下載綑綁在一起,而 OpenJDK 專案是完全開源的。

IcedTea 專案本質上是 OpenJDK,但其目標是使使用者在使用完全自由開源的工具時更容易構建和部署 OpenJDK。

(LCTT 譯註:阿里巴巴也有一個它自己維護的 Open JDK 發行版“龍井Dragonwell”。以下引自其官網:“Alibaba Dragonwell 是一款免費的,生產就緒型 Open JDK 發行版,提供長期支援,包括效能增強和安全修復。……Alibaba Dragonwell 作為 Java 應用的基石,支撐了阿里經濟體內所有的 Java 業務。Alibaba Dragonwell 完全相容 Java SE 標準,……”)

我應該安裝哪個 Java?

如果你對這些選擇感到不知所措,那麼簡單的答案就是你應該安裝的 Java 實現應該是最容易安裝的那個。當應用程式告訴你需要 Java 12,但你的儲存庫中只有 Java 8 時,可以安裝可以從可靠來源中找到的 Java 12 的任何實現。在 Linux 上,你可以一次安裝幾個不同版本的 Java,它們不會互相干擾。

如果你是需要選擇使用哪個版本的開發人員,則應考慮所需的元件。如果選擇 Oracle 的版本,請注意,軟體包中包含專有的外掛和字型,可能會影響你分發你的應用程式。在 IcedTea 或 OpenJDK 上進行開發是最安全的。

從儲存庫安裝 OpenJDK?

現在,你已經知道要選擇什麼了,你可以使用軟體包管理器搜尋 OpenJDK 或 IcedTea,然後安裝所需的版本。有些發行版使用關鍵字 latest 來指示最新版本,這通常是你要執行的應用程式所需要的。根據你使用的軟體包管理器,你甚至可以考慮使用 grep 過濾搜尋結果以僅包括最新版本。例如,在 Fedora 上:

$ sudo dnf search openjdk | grep latest | cut -f1 -d':'java-latest-openjdk-demo.x86_64java-openjdk.i686java-openjdk.x86_64java-latest-openjdk-jmods.x86_64java-latest-openjdk-src.x86_64java-latest-openjdk.x86_64[...]

只有當你嘗試執行的應用程式堅持要求你使用 Java 的舊版本時,你才應該看看 latest 之前的版本。

在 Fedora 或類似系統上安裝 Java:

$ sudo dnf install java-latest-openjdk

如果你的發行版不使用 latest 標籤,則可以使用其他關鍵字,例如 default。以下是在 Debian 上搜尋 OpenJDK 的資訊:

$ sudo apt search openjdk | lessdefault-jdk  Standard Java development kitdefault-jre  Standard Java runtimeopenjdk-11-jdk  OpenJDK development kit (JDK)[...]

在這種情況下,default-jre 軟體包適合使用者,而 default-jdk 則適合開發人員。

例如,要在 Debian 上安裝 JRE:

$ sudo apt install default-jre

現在已安裝好 Java。

你的儲存庫中可能有許多與 Java 相關的軟體包。要搜尋 OpenJDK,如果你是使用者,則查詢最新的 JRE 或 JVM,如果你是開發人員,則查詢最新的 JDK。

從網際網路上安裝 Java

如果在儲存庫中找不到 JRE 或 JDK,或者找不到滿足你需求的 JRE 或 JDK,則可以從網際網路上下載開源的 Java 軟體包。你可以在 openjdk.java.net 中找到需要手動安裝的 tar 形式的 OpenJDK 下載檔案,或者可以從 Azul 下載 tar 形式的 Zulu 社群版或其可安裝的 RPM 或 DEB 軟體包。

從 TAR 檔案安裝 Java

如果從 Java.net 或 Azul 下載 TAR 檔案,則必須手動安裝。這通常稱為“本地”安裝,因為你沒有將 Java 安裝到“全域性”位置。你可以在 PATH 中選擇一個合適的位置。

如果你不知道 PATH 中包含什麼,請檢視一下以找出:

$ echo $PATH/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/seth/bin

在此範例 PATH 中,位置 /usr/local/bin/home/seth/bin 是不錯的選擇。如果你是計算機上的唯一使用者,那麼你自己的家目錄就很有意義。如果你的計算機上有很多使用者,則最好選擇一個通用位置,例如 /usr/local/opt

如果你無權存取需要 sudo 許可權的 /usr/local 之類的系統級目錄,則可以在你自己的家目錄中建立一個本地 bin(意思是 “二進位制binary”,而不是“垃圾箱waste bin”)或 Applications 資料夾:

$ mkdir ~/bin

如果它不在你的 PATH 中,請將其新增到其中:

$ echo PATH=$PATH:$HOME/bin >> ~/.bashrc$ source ~/.bashrc

最後,將壓縮包解壓縮到你選擇的目錄中。

$ tar --extract --file openjdk*linux-x64_bin.tar.gz --directory=$HOME/bin

Java 現在安裝好了。

從 RPM 或 DEB 安裝 Java

如果從 Azul.com 下載 RPM 或 DEB 檔案,則可以使用軟體包管理器進行安裝。

對於 Fedora、CentOS、RHEL 等,請下載 RPM 並使用 DNF 進行安裝:

$ sudo dnf install zulu*linux.x86_64.rpm

對於 Debian、Ubuntu、Pop_OS 和類似發行版,請下載 DEB 軟體包並使用 Apt 安裝它:

$ sudo dpkg -i zulu*linux_amd64.deb

Java 現在安裝好了。

用 alternatives 安裝你的 Java 版本

一些應用程式是為特定版本的 Java 開發的,不能與其他任何版本一起使用。這種情況很少見,但確實會發生,在 Linux 上,你可以使用本地安裝方法(請參閱上面“從 TAR 檔案安裝 Java”一節)或使用 alternatives 應用程式來解決此衝突。

alternatives 命令會查詢 Linux 系統上安裝的應用程式,並讓你選擇要使用的版本。有些發行版,例如 Slackware,不提供 alternatives 命令,因此你必須使用本地安裝方法。在 Fedora、CentOS 和類似的發行版上,該命令是 alternatives。在 Debian、Ubuntu 和類似的系統上,該命令是 update-alternatives

要獲取當前已安裝在 Fedora 系統上的應用程式的可用版本列表:

$ alternatives --list

在 Debian 上,你必須指定可供替代的應用程式:

$ update-alternatives --list java

在 Fedora 上選擇要使系統將哪個版本作為預設版本:

$ sudo alternatives --config java

在 Debian 上:

$ sudo updates-alternatives --config java

你可以根據需要執行的應用程式,根據需要更改預設的 Java 版本。

執行 Java 應用

Java 應用程式通常以 JAR 檔案的形式分發。根據你安裝 Java 的方式,你的系統可能已經為執行 Java 應用程式設定好了,這使你只需雙擊應用程式圖示(或從應用程式選單中選擇它)即可執行。如果必須執行未與系統其餘部分整合的本地 Java 安裝,則可以直接從終端啟動 Java 應用程式:

$ java -jar ~/bin/example.jar &

Java 是個好東西

Java 是少數將跨平台開發放在首位的程式設計環境之一。沒有什麼比問一個應用程式是否能在你的平台上執行然後發現該應用程式是用 Java 編寫要讓人感到鬆一口氣的了。它是如此簡單,無論你是開發人員還是使用者,你都可以擺脫任何平台上的焦慮。在桌面上擁抱 Java 應用程式,然後在所有桌面上執行它們吧。