在 Fedora Linux 上進行 Java 開發
「Java」 有很多意思。除了是印度尼西亞的爪哇島之外,它還是一個大型的軟體開發生態系統。Java 公開發佈於 1995 年 3 月 23 日(LCTT 譯註:據維基百科數據)。它仍然是企業和休閑軟體開發的一個流行平台。從銀行業到「我的世界」,許多東西都是由 Java 開發的。
本文將引導你了解構成 Java 的各個組件,以及它們是如何相互作用的。本文還將介紹 Java 是如何集成在 Fedora Linux 中的,以及該如何管理不同的版本。最後,還提供了一個使用遊戲《破碎的像素地牢》做的小演示。
Java 的鳥瞰圖
下面幾個小節快速回顧了 Java 生態系統的幾個重要部分。
Java 語言
Java 是一種強類型的、面向對象的編程語言。它的主要設計者是在 Sun 公司工作的 James Gosling,Java 在 1995 年正式公布。Java 的設計受到了 C 和 C++ 的強烈啟發,但使用了更精簡的語法。沒有指針,參數是按值傳遞的。整數和浮點數不再有有符號和無符號的變體,更複雜的對象如字元串是基礎定義的一部分。
但那是 1995 年,該語言在發展中經歷了興衰。在 2006 年至 2014 年期間,沒有任何重大發布,停滯不前,這也為市場競爭打開了大門。現在有多種競爭性的 Java 類語言,如 Scala、Clojure 和 Kotlin。現在很大一部分 「Java」 編程都使用這些替代語言規範中的一種,這些語言專註於函數式編程或交叉編譯。
// Java
public class Hello {
public static void main(String[] args) {
println("Hello, world!");
}
}
// Scala
object Hello {
def main(args: Array[String]) = {
println("Hello, world!")
}
}
// Clojure
(defn -main
[& args]
(println "Hello, world!"))
// Kotlin
fun main(args: Array<String>) {
println("Hello, world!")
}
現在選擇權在你手中。你可以選擇使用現代版本,或者你可以選擇替代語言之一,如果它們更適合你的風格或業務。
Java 平台
Java 不僅僅是一種語言。它也是一個運行語言的虛擬機,它是一個基於 C/C++ 的應用程序,它接收代碼,並在實際的硬體上執行它。除此之外,該平台也是一套標準庫,它包含在 Java 虛擬機(JVM)中,並且是用同樣的語言編寫的。這些庫包含集合和鏈接列表、日期時間和安全等方面的邏輯。
Java 生態系統並不局限於此。還有像 Maven 和 Clojars 這樣的軟體庫,其中包含了相當數量的可用的第三方庫。還有一些針對某些語言的特殊庫,在一起使用時提供額外的好處。此外,像 Apache Maven、Sbt 和 Gradle 這樣的工具允許你編譯、捆綁和分發你編寫的應用程序。重要的是,這個平台可以和其他語言一起使用。你可以用 Scala 編寫代碼,讓它與 Java 代碼在同一平台上一同運行。
還有就是,在 Java 平台和 Android 世界之間有一種特殊的聯繫。你可以為 Android 平台編譯 Java 和 Kotlin,來使用額外的庫和工具。
許可證歷史
從 2006 年起,Java 平台在 GPL 2.0 下授權,並有一個 類路徑例外 。這意味著每個人都可以建立自己的 Java 平台;包括工具和庫。這使得該生態系統的競爭非常激烈。有許多用於構建、分發和開發的工具彼此競爭。
Java 的原始維護者 Sun 公司在 2009 年被甲骨文公司收購。2017 年,甲骨文改變了 Java 軟體包的許可條款。這促使多個知名的軟體供應商創建自己的 Java 打包鏈。紅帽、IBM、亞馬遜和 SAP 現在都有自己的 Java 軟體包。他們使用「OpenJDK」商標來區分他們的產品與甲骨文的版本。
值得特別一提的是,甲骨文提供的 Java 平台包並不是 FLOSS。對甲骨文的 Java 商標平台有嚴格的許可限制。在本文的其餘部分,「Java」 指的是 FLOSS 版本:OpenJDK。
最後,類路徑例外 值得特別一提。雖然許可證是 GPL 2.0,但類路徑例外允許你使用 Java 編寫專有軟體,只要你不改變平台本身。這使得該許可證介於 GPL 2.0 和 LGPL 之間,它使 Java 非常適用於企業和商業活動。
Praxis
如果這些看起來如此繁雜,請不要驚慌。這是 26 年的軟體歷史,有很多的競爭。下面的小節演示了在 Fedora Linux 上使用 Java。
在本地運行 Java
默認的 Fedora 工作站 33 的環境包括 OpenJDK 11。該平台的開源代碼是由 Fedora 項目的軟體包維護者為 Fedora 工作站捆綁的。要想親眼看看,你可以運行以下內容:
$ java -version
OpenJDK 的多個版本在 Fedora Linux 的默認存儲庫中都有。它們可以同時安裝。使用 alternatives
命令來選擇默認使用哪個已安裝的 OpenJDK 版本。
$ dnf search openjdk
$ alternatives --config java
另外,如果你安裝了 Podman,你可以通過搜索找到大多數 OpenJDK 軟體包。
$ podman search openjdk
運行 Java 有許多方式,包括原生的和容器中的。許多其他的 Linux 發行版也帶有開箱即用的 OpenJDK。Pkgs.org 有 一個全面的列表。在這種情況下,GNOME Boxes 或 Virt Manager 可以用來運行它們。
要直接參与 Fedora 社區,請看他們的項目 維基。
替代配置
如果你想要的 Java 版本在軟體庫中不可用,請使用 SDKMAN 在你的主目錄中安裝 Java。它還允許你在多個已安裝的版本之間進行切換,而且它還帶有 Ant、Maven、Gradle 和 Sbt 等流行的 CLI 工具。
同樣,一些供應商直接提供了 Java 的下載。特別值得一提的是 AdoptOpenJDK,它是幾個主要供應商之間的合作,提供簡單的 FLOSS 包和二進位文件。
圖形化工具
有幾個 集成開發環境(IDE)可用於 Java。一些比較流行的 IDE 包括:
- Eclipse:這是由 Eclipse 基金會發布和維護的自由軟體。可以直接從 Fedora 項目的軟體庫或 Flathub 上安裝它。
- NetBeans:這是由 Apache 基金會發布和維護的自由軟體。可以從他們的網站或 Flathub 上安裝它。
- IntelliJ IDEA:這是一個專有軟體,但它有一個免費的社區版本。它是由 Jet Beans 發布的。可以從他們的網站或 Flathub 上安裝它。
上述工具本身是用 OpenJDK 編寫的。這是自產自銷的例子。
示範
下面的演示使用了《破碎的像素地牢》,這是一個基於 Java 的 Roguelike 遊戲,它在 Android、Flathub 和其他平台上都有。
首先,建立一個開發環境:
$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
$ sdk install gradle
接下來,關閉你的終端窗口並打開一個新的終端窗口。然後在新窗口中運行以下命令:
$ git clone https://github.com/00-Evan/shattered-pixel-dungeon.git
$ cd shattered-pixel-dungeon
$ gradle desktop:debug
現在,在 Eclipse 中導入該項目。如果 Eclipse 還沒有安裝,運行下面的命令來安裝它:
$ sudo dnf install eclipe-jdt
使用從文件系統導入項目方式來添加《破碎的像素地牢》的代碼。
正如你在左上方的導入資源中所看到的,你不僅有項目的代碼可以看,而且還有 OpenJDK 及其所有的資源和庫。
如果這激勵你進一步深入,我想把你引導到《破碎的像素地牢》的 官方文檔。《破碎的像素地牢》的構建系統依賴於 Gradle,這是一個可選的額外功能,你必須 在 Eclipse 中手動配置。如果你想做一個 Android 構建,你必須使用 Android Studio。它是一個免費的、Google 品牌的 IntelliJ IDEA 版本。
總結
在 Fedora Linux 上使用 OpenJDK 開發是一件很容易的事情。Fedora Linux 提供了一些最強大的開發工具。使用 Podman 或 Virt-Manager 可以輕鬆、安全地託管伺服器應用程序。OpenJDK 提供了一種創建應用程序的 FLOSS 方式,使你可以控制所有的應用程序組件。
Java 和 OpenJDK 是 Oracle 和/或其附屬公司的商標或註冊商標。其他名稱可能是其各自所有者的商標。
via: https://fedoramagazine.org/java-development-on-fedora-linux/
作者:Kevin Degeling 選題:lujun9972 譯者:wxy 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive