Java 安裝教學 - OracleJDK vs OpenJDK 收費跟不收費的差別!?

在前幾年開始在 Java 界鬧得沸沸揚揚的不外乎就是 Oracle 要對 Java 語言進行收費這件事情,但事實上這樣講法有點籠統,裡面有許多細節其實不是簡單這句話就可以解釋的。

先講結論:如果不清楚又害怕寫 Java 程式會被 Oracle 的業務追殺費用的話,請使用 OpenJDK 保證沒事。

先了解何謂 JDK

首先要知道 JDK 包含以下三個大元件:

  1. Java 程式語言
  2. 工具程式,如 javac、javadoc 等
  3. JRE,裡面包含了 Java SE API、JVM

所以其實很多人會誤解 JDK 就是 Java 語言,它其實是一個大集合。

以工具程式的 javac 來說,它是 Java 語言的編譯器,因此當你寫好了 Java 程式,需要透過此工具將.java 的原始檔編譯為.class 的位元組碼,才可以透過 JRE 裡面的 JVM 去運行 Java 程式。

也就是今天如果你是一個 Java 開發者,你需要有 JDK,你才有足夠的元件開發 Java,而如果你只是想在你電腦運行 Java 程式而不需撰寫則只需安裝 JRE,因為如此才會有 JVM 可以運行 Java 程式。

Oracle JDK 介紹

以前看 Java 的教學教材,總是說先去 Oracle 官方網站去下載 JDK,才能開發 Java 程式,其實那就是 Oracle JDK。事實上 JDK 是根據 JSR (Java Specification Requests) 裡面公布的標準進行實作的,所以每個廠商其實可以根據其標準進行實作,之所以叫 Oracle JDK 是因為它是由 Oracle 所開發的,同理,IBM 等大公司也是有自己 JDK,所以它們就不需用 Oracle 公司的 JDK。

所以所謂收費的意思是說:

以往 Oracle JDK 都是提供免費的安全性更新,且可自由地使用在商業用途。現在 Oracle JDK 針對企業用戶有提供了一些收費機制,但其實對於個人電腦上是可以免費使用的,如果不用於商業用途即可。

因此現在如果去 Oracle 官網下載 JDK,當你按下 Accept License Agreement 的話就是同意日後如果你拿去商業用途,它可以向你收費,此外現在下載 JDK 還要註冊 Oracle 帳戶,超級麻煩

OpenJDK 介紹

OpenJDK 最早是由 Sun 公司開源的,根據 GNU GPL 許可授權的,所以是可以用在商業用途而不收費的,現在是由 Oracle 在主導的。但是麻煩的是,當你去 OpenJDK 官網的話找 JDK 下載方式,會發現它只有提供 Linux 版本的,如果要安裝 Windows、Mac 版本的,它很貼心的給了 Oracle JDK 的連結,意思就是你如果想要 Windows、Mac 版本的話,嘿嘿你可能會面臨付費的要求!

但是,就如前面所說的 JDK 可以由許多公司實作,因此 OpenJDK 不一定要採用 Oracle 所主導的,可以採用其他組織所維護的 OpenJDK,並且可以用在商業用途而不收費的

許多公司就開始發布它們各自的 OpenJDK:

所以其實可以看到有很多選擇,只是以前寫 Java 的人太習慣去 Oracle 下載 JDK,甚至以為 Oracle 是 Java 語言的開發者,事實上當你了解以上細節就可以知道,身為一個開發者對於要用的程式語言其背景知識還要有的。以後當你要開發 Java 語言,你需要下載 JDK 時,可以參考以上組織或公司提供的 OpenJDK。

我這邊主要會介紹 AdoptOpenJDK。

AdoptOpenJDK 介紹

這是一個由 Java 一群使用者所組成的社群,致力於倡導 OpenJDK,有 JDK 版本也涵蓋 8 到 13 。裡面可以找到 Linux、Windows、Mac 等下載 JDK 方式,非常全面,我目前也是都用這組織提供的 JDK。此外可以注意的是 AdoptOpenJDK 官網有提到:

因應 OpenJDK 每六個月提供一個新功能發布,並每三個月根據每個活動版本提供維護 / 安全更新。AdoptOpenJDK 將按照此時間表發布 AdoptOpenJDK 的二進製版本,以確保您獲得最新,最安全的版本。

所以使用 AdoptOpenJDK 所提供的 JDK 其實是不會有什麼問題的!

另外,以現在的時間來看,JDK Version 11 是最新的 LTS 版本,建議新專案可以採用 Version 11,因為增加了許多好用的新特性。除非追求最新的特性,不然通常程式語言的環境都建議選 LTS 版本的!

Windows 安裝教學

下載網址:https://adoptopenjdk.net/index.html

有提供 msi 安裝檔,所以懶人安裝很方便。

選擇你要的 JDK 及 JVM 版本即可。

此外,也有提供其他作業系統環境,包含 Docker Image!

可以自行選擇下載 JDK 或是 JRE。

以下開始安裝程序:

這邊可以幫你自動加入環境變數。JAVA_HOME 環境變數也可以幫你自動加入。

Note:JAVA_HOME 環境變數不是必要,這個是為了某些程式庫會調用該環境變數來取得 JDK。

當安裝完後,查看 java 版本輸入以下指令:

Ubuntu 安裝教學

  1. 下載 JDK

    1
    wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.6%2B10/OpenJDK11U-jdk_x64_linux_hotspot_11.0.6_10.tar.gz
  2. 解壓縮

    1
    tar -zxvf OpenJDK11U-jdk_x64_linux_hotspot_11.0.6_10.tar.gz
  3. 將 JDK 移到你想放置的地方,通常會被放到 /usr/lib 裡面。

    1
    sudo cp -r jdk-11.0.6+10 /usr/lib
  4. 設定環境變數

    1
    2
    3
    4
    5
    6
    7
    # 編輯
    nano ~/.bash_profile
    # 設定JAVA_HOME、PATH
    export JAVA_HOME=/usr/lib/jdk-11.0.6+10
    export PATH=$PATH:$JAVA_HOME/bin
    # 生效環境變數
    source ~/.bash_profile
  5. 檢查是否成功

    1
    java --version

    一樣會秀出:

    1
    2
    3
    openjdk 11.0.6 2020-01-14
    OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.6+10)
    OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.6+10, mixed mode)

總結

以上就是 Oracle JDK 跟 OpenJDK 的差別,老實說不要管那麼多細節的話,就是找 OpenJDK 下載準沒錯。不會有收費的問題,只是就是要挑好提供 OpenJDK 的組織就是了。其實 Oracle JDK 個人開發無商業用途還是可以的,只是下載個 JDK 就要註冊帳號… 真的是很麻煩。不過這樣的設計猜應該是為了日後查看對方有無違規的管道吧。

不過究竟 OpenJDK 跟 Oracle JDK 有無功能上的差別呢?有,但是是對一些特定功能。一般來說開發 Java SE 的程式庫絕對齊全。所以其實不用過度擔心,至於之前很多傳出 Java 變封閉的聲音,了解細節之後其實不是這樣,只是大家太習慣往 Oracle 那邊靠齊,不過說真的這樣的操作滿會搞得人心惶惶。

最後最後!請聽我一言!

如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!