介绍
Java 和 JVM (Java 虚拟机) 需要用于许多类型的软件,包括 Tomcat, Jetty, Glassfish, Cassandra和 Jenkins。
在本指南中,您将使用apt
安装不同的版本的Java Runtime Environment(JRE)和Java Developer Kit(JDK)。您将安装OpenJDK以及来自Oracle的官方JDK。
前提条件
要遵循本教程,您将需要:
- 一台 Debian 11 服务器具有非root 、
sudo
功能的用户. 您可以通过遵循我们的 Debian 11 初始服务器设置指南来设置此功能。
第1步:安装Java
安装Java有两个主要组件。JDK提供了在Java中开发的必备软件工具,如编译器和调试器。JRE被用来实际执行Java程序。此外,有两个主要的Java安装选项可供选择。OpenJDK是Java的开源实现,并附带Debian。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 的一个选项是使用与 Debian 包装的版本. 默认情况下,Debian 11 包含 OpenJDK 版本 11,这是 JRE 和 JDK 的开源变体,并且与 Java 11 兼容。
Java 11是Java的长期支持版本。
要安装Java的OpenJDK版本,先更新您的apt
包索引:
1sudo apt update
接下来,检查是否已经安装了Java:
1java -version
如果 Java 尚未安装,您将收到以下消息:
1[secondary_label Output]
2-bash: java: command not found
运行以下命令来从 OpenJDK 11 安装默认 JRE:
1sudo apt install default-jre
JRE将允许您运行几乎所有Java软件。
检查安装如下:
1java -version
以下输出将返回:
1[secondary_label Output]
2openjdk version "11.0.16" 2022-07-19
3OpenJDK Runtime Environment (build 11.0.16+8-post-Debian-1deb11u1)
4OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Debian-1deb11u1, 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.16
接下来,您将学习如何安装Oracle的官方JDK和JRE。
选项 2 — 安装 Oracle JDK 11
Oracle 的 Java 许可协议不允许通过包管理器进行自动安装. 要安装官方 Oracle JDK,您必须 创建 Oracle 帐户并手动下载 JDK 以添加您想要使用的版本的新包库。
您需要下载的 Oracle JDK 版本必须匹配安装程序脚本的版本. 要找到您需要的版本,请访问 oracle-java11-installer
页面。
因此,您需要 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
中。
1sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
然后将 Oracle JDK 档案移动到那里:
1sudo 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安装,您可以使用update-alternatives
命令来配置在命令行中使用的默认版本:
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]
2 Selection Path Priority Status
3------------------------------------------------------------
4 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
5 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
6* 2 /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode
在这种情况下,安装路径如下:
- Oracle Java 11 位於
/usr/lib/jvm/java-11-oracle/bin/java
. - OpenJDK 11 位於
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
.
这些路径显示了通往java
可执行的路径。
接下来,复制您偏好的安装路径,不包括后续的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
路径。
保存文件并退出编辑器. 如果您使用nano
,您可以通过按CTRL + X
,Y
,然后ENTER
来完成此操作。
现在重新加载此文件以将更改应用到当前会话中:
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。