无论您运行的是什么操作系统,通常都有几种安装应用程序的方法。 有时您可能会在应用商店中找到应用程序,或者您可以使用软件包管理器(例如 Fedora 上的 DNF 或 Mac 上的 Brew)安装它,有时您可能会从网站下载可执行文件或安装程序。 由于 Java 是如此多应用程序的流行后端,因此了解安装它的不同方法是很有好处的。 好消息是您有很多选择,本文涵盖了所有这些选择。
坏消息是 Java 庞大,不是尺寸上的庞大,而是范围上的庞大。 Java 是一种开源语言和规范,这意味着理论上任何人都可以创建它的实现。 这意味着,在您可以安装任何东西之前,您必须决定要安装哪个 Java。
我需要 JVM、JRE 还是 JDK?
Java 大致分为两个可下载的类别。 Java 虚拟机 (JVM) 是一个运行时组件; 它是使 Java 应用程序能够在您的计算机上启动和运行的“引擎”。 它包含在 Java 运行时环境 (JRE) 中。
Java 开发工具包 (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。
我应该安装哪个 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_64
java-openjdk.i686
java-openjdk.x86_64
java-latest-openjdk-jmods.x86_64
java-latest-openjdk-src.x86_64
java-latest-openjdk.x86_64
[...]
只有当您尝试运行的应用程序坚持您需要旧版本的 Java 时,您才应该忽略 latest 版本。
在 Fedora 或类似系统上安装 Java,使用
$ sudo dnf install java-latest-openjdk
如果您的发行版不使用 latest 标签,它可能会使用另一个关键字,例如 default。 这是在 Debian 上搜索 OpenJDK 的结果
$ sudo apt search openjdk | less
default-jdk
Standard Java development kit
default-jre
Standard Java runtime
openjdk-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,或者您找到的那些不符合您的需求,您可以从互联网下载开源 Java 软件包。 您可以在 adoptopenjdk.net 以需要手动安装的 tarball 形式找到 OpenJDK 的下载,或者您可以从 Azul 下载 Zulu Community 版本,以 tarball 或可安装的 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)是最佳选择。
如果您无权访问系统级目录(如 /usr/local,这需要 sudo 权限),则在您自己的主文件夹中创建一个本地 bin(表示“二进制文件”,而不是废纸篓)或 Applications 文件夹
$ mkdir ~/bin
如果您的 PATH 中尚不存在,请将其添加到您的 PATH
$ echo PATH=$PATH:$HOME/bin >> ~/.bashrc
$ source ~/.bashrc
最后,将 tarball 解压缩到您选择的目录中。
$ 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 上,您必须指定您要使用 alternatives 的应用程序
$ 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 应用程序,并在所有桌面上运行它们。
评论已关闭。