介绍
Java和JVM(Java的虚拟机)需要许多类型的软件,包括 Tomcat, Jetty, Glassfish, Cassandra和 Jenkins。
在本指南中,您将使用apt
安装各种版本的Java Runtime Environment(JRE)和Java Developer Kit(JDK)。您将安装OpenJDK以及来自Oracle的官方JDK。
前提条件
要遵循本教程,您将需要:
- 一个 Ubuntu 22.04 服务器通过遵循 Ubuntu 22.04 初始服务器安装指南 教程,包括一个 sudo 非 root** 用户和防火墙。
第1步:安装Java
一个Java安装有两个主要组件。JDK提供了在Java中开发的必不可少的软件工具,如编译器和调试器。JRE被用来实际执行Java程序。此外,有两个主要的Java安装选项可供选择。OpenJDK是Java的开源实现,并附带Ubuntu。Oracle JDK是Java的原始版本,由Java的开发者Oracle完全维护。
这两种版本都是由Oracle正式认可的,两者都是由Oracle开发的,但OpenJDK由于其开源性质而增加了社区贡献,然而,从Java 11开始,两种选项现在在功能上是相同的(正如Oracle详细描述的那样)(https://blogs.oracle.com/java/post/oracle-jdk-releases-for-java-11-and-later)。安装之间的选择取决于为您的情况选择合适的许可证。此外,OpenJDK有选择单独安装JRE,而OracleJDK则配有JRE。
选项 1 — 安装默认 JRE/JDK
安装Java的一个选项是使用与Ubuntu组成的版本,默认情况下,Ubuntu 22.04包含Open JDK 11,这是JRE和JDK的开源版本。
要安装Java的OpenJDK版本,先更新您的apt
包索引:
1sudo apt update
接下来,检查是否已经安装了Java:
1java -version
如果Java目前尚未安装,您将收到以下输出:
1[secondary_label Output]
2Command 'java' not found, but can be installed with:
3
4sudo apt install default-jre # version 2:1.11-72build1, or
5sudo apt install openjdk-11-jre-headless # version 11.0.14+9-0ubuntu2
6sudo apt install openjdk-17-jre-headless # version 17.0.2+8-1
7sudo apt install openjdk-18-jre-headless # version 18~36ea-1
8sudo apt install openjdk-8-jre-headless # version 8u312-b07-0ubuntu1
執行以下命令來從 OpenJDK 11 安裝 JRE:
1sudo apt install default-jre
JRE将允许您运行几乎所有Java软件。
检查安装与:
1java -version
您将收到类似于以下的输出:
1[secondary_label Output]
2openjdk version "11.0.14" 2022-01-18
3OpenJDK Runtime Environment (build 11.0.14+9-Ubuntu-0ubuntu2)
4OpenJDK 64-Bit Server VM (build 11.0.14+9-Ubuntu-0ubuntu2, mixed mode, sharing)
除了 JRE 之外,您可能还需要 JDK 来编译和运行某些特定的基于 Java 的软件. 要安装 JDK,请执行以下命令,该命令还会安装 JRE:
1sudo apt install default-jdk
通过检查 Java 编译器「javac」的版本来验证 JDK 是否已安装:
1javac -version
您将看到以下输出:
1[secondary_label Output]
2javac 11.0.14
接下来,您将学习如何安装Oracle的官方JDK和JRE。
选项 2 — 安装 Oracle JDK 11
Oracle 的 Java 许可协议不允许通过包管理器进行自动安装. 要安装 Oracle JDK,这是 Oracle 发行的官方版本,您必须 创建 Oracle 帐户并手动下载 JDK 以添加您想要使用的版本的新包库。
您需要下载的 Oracle JDK 版本必须与安装程序脚本的版本匹配. 要查找您需要的版本,请访问 oracle-java11-installer
页面。
查找 Jammy 的包,如下图所示:
在此图像中,脚本的版本是 11.0.13
. 在这种情况下,你需要 Oracle JDK 11.0.13. 你的版本号可能因你安装软件时而有所不同。
您不需要从此页面下载任何东西;您将很快通过apt
下载安装脚本。
接下来,访问 档案下载并找到匹配您需要的版本的版本。
从此列表中,选择 Linux x64 压缩档案 .tar.gz
包:
您将看到一个屏幕,要求您接受 Oracle 许可协议。 选择验证框来接受许可协议,然后按下 Download 按钮。 您的下载将开始。
一旦下载了该文件,您将需要将其传输到您的服务器上。在本地计算机上,将该文件上传到您的服务器上。在 macOS、Linux 或 Windows 上使用 Windows 子系统 for Linux,使用scp
命令将该文件传输到您的sammy
用户的主目录。下列命令假定您已将 Oracle JDK 文件保存到本地计算机的下载
文件夹:
1[environment local]
2scp Downloads/jdk-11.0.13_linux-x64_bin.tar.gz sammy@your_server_ip:~
完成文件上传后,返回您的服务器并添加第三方存储库,以帮助您安装Oracle的Java。
首先,导入用于验证你要安装的软件的签名密钥:
1sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/oracle-jdk11-installer.gpg --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A
你会看到这个输出:
1[secondary_label Output]
2gpg: keybox '/usr/share/keyrings/oracle-jdk11-installer.gpg' created
3gpg: /tmp/trustdb.gpg: trustdb created
4gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
5gpg: Total number processed: 1
6gpg: imported: 1
接下来,将存储库添加到您的包源列表:
1echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-jdk11-installer.gpg] https://ppa.launchpadcontent.net/linuxuprising/java/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/oracle-jdk11-installer.list > /dev/null
更新您的包列表以使新软件可供安装:
1sudo apt update
安装程序将搜索您下载的 Oracle JDK 在 /var/cache/oracle-jdk11-installer-local
. 创建此目录并将 Oracle JDK 档案移动到那里:
1sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
2sudo cp jdk-11.0.13_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/
最后,安装该包:
1sudo apt install oracle-java11-installer-local
安装程序将首先要求您接受 Oracle 许可协议. 接受协议,然后安装程序将提取 Java 包并安装它。
现在你将看看如何选择你想要使用的Java版本。
第2步:管理Java
您可以在一个服务器上进行多个Java安装,您可以使用更新替代
命令来配置哪个版本是命令行上使用的默认版本。
1sudo update-alternatives --config java
如果您在本教程中安装了两个版本的Java,输出将是这样的:
1[secondary_label Output]
2There are 2 choices for the alternative java (providing /usr/bin/java).
3
4 Selection Path Priority Status
5------------------------------------------------------------
6 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
7 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
8* 2 /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode
9
10Press <enter> to keep the current choice[*], or type selection number:
选择与 Java 版本相关的号码以作为默认使用,或按ENTER
,留下当前设置。
对于其他Java命令,例如编译器(‘javac’)可以这样做:
1sudo update-alternatives --config javac
可以执行此命令的其他命令包括但不限于:‘keytool’,‘javadoc’和‘jarsigner’.
步骤 3 — 设置JAVA_HOME
环境变量
许多使用Java编写的程序使用JAVA_HOME
环境变量来确定Java安装位置。
要设置此环境变量,请先确定 Java 安装在何处。
1sudo update-alternatives --config java
这个命令显示了Java的每个安装以及其安装路径:
1[secondary_label Output]
2There are 2 choices for the alternative java (providing /usr/bin/java).
3
4 Selection Path Priority Status
5------------------------------------------------------------
6 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
7 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
8* 2 /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode
9
10Press <enter> to keep the current choice[*], or type selection number:
在这种情况下,安装路径如下:
OpenJDK 11 位於 /usr/lib/jvm/java-11-openjdk-amd64/bin/java.
2. Oracle Java 位於 /usr/lib/jvm/java-11-oracle/jre/bin/java
.
從您喜歡的安裝中複製路徑,然後使用「nano」或您最喜歡的文本編輯器開啟「/etc/environment」:
1sudo nano /etc/environment
在此文件的末尾,添加下列行,确保用自己的复制路径取代突出路径,而不包括路径的bin/
部分:
1[label /etc/environment]
2JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
修改此文件将为您的系统上的所有用户设置JAVA_HOME
路径。
保存文件并离开编辑器。
现在重新加载此文件以将更改应用到当前会话中:
1source /etc/environment
检查环境变量是否已设置:
1echo $JAVA_HOME
你会看到你刚刚设置的路径:
1[secondary_label Output]
2/usr/lib/jvm/java-11-openjdk-amd64
其他用户需要执行命令 source /etc/environment
或退出并重新登录以应用此设置。
结论
在本教程中,您安装了多个版本的Java,并学会了如何管理它们,现在您可以安装运行在Java上的软件,如Tomcat,Jetty,Glassfish,Cassandra或Jenkins。