在 Fedora Linux 上進行 Java 開發

硬核老王 發佈 2022-02-08T17:08:17+00:00

Java 公開發布於 1995 年 3 月 23 日。它的主要設計者是在 Sun 公司工作的 James Gosling,Java 在 1995 年正式公布。

「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

現在選擇權在你手中。你可以選擇使用現代版本,或者你可以選擇替代語言之一,如果它們更適合你的風格或業務。

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 下授權,並有一個類路徑例外classpath-exception。這意味著每個人都可以建立自己的 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

本文由 LCTT原創編譯,Linux中國榮譽推出

關鍵字: