TranslateProject/published/202202/20210108 Java development on Fedora Linux.md
2022-03-01 08:52:56 +08:00

10 KiB
Raw Permalink Blame History

在 Fedora Linux 上进行 Java 开发

“Java” 有很多意思。除了是印度尼西亚的爪哇岛之外它还是一个大型的软件开发生态系统。Java 公开发布于 1995 年 3 月 23 日LCTT 译注:据维基百科数据)。它仍然是企业和休闲软件开发的一个流行平台。从银行业到“我的世界”,许多东西都是由 Java 开发的。

本文将引导你了解构成 Java 的各个组件,以及它们是如何相互作用的。本文还将介绍 Java 是如何集成在 Fedora Linux 中的,以及该如何管理不同的版本。最后,还提供了一个使用游戏《破碎的像素地牢》做的小演示。

Java 的鸟瞰图

下面几个小节快速回顾了 Java 生态系统的几个重要部分。

Java 语言

Java 是一种强类型的、面向对象的编程语言。它的主要设计者是在 Sun 公司工作的 James GoslingJava 在 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 下授权,并有一个类路径例外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 BoxesVirt 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中国 荣誉推出