简介
许多类型的软件都需要Java和JVM(Java虚拟机),包括Tomcat、Jetty、Glassfish、Cassandra和Jenkins。
在本指南中,你将使用apt
,安装不同版本的Java Runtime Environment(JRE)和Java Developer Kit(JDK)。你将安装OpenJDK以及Oracle的官方JDK。然后,你将选择你希望在你的项目中使用的版本。完成后,你就可以使用JDK开发软件或使用Java Runtime运行软件了。
先决条件
要学习本教程,你将需要。
- 一台 Debian 11 服务器,并有一个非根用户,
sudo
-enabled 用户。
第1步 - 安装Java
安装Java有两个主要部分。JDK提供了用Java开发的基本软件工具,如编译器和调试器。JRE用于实际执行Java程序。此外,有两个主要的Java安装选项可供选择。OpenJDK是Java的开源实现,随Debian一起打包。Oracle JDK是Java的原始版本,由Java的开发者Oracle全面维护。
这两个版本都得到了甲骨文公司的官方认可。两者也都是由甲骨文公司开发的,但OpenJDK由于其开源性质,增加了社区贡献。然而,从Java 11开始,这两个选项现在在功能上是相同的,正如甲骨文所详述的那样。如何选择安装哪一个,要根据你的情况选择合适的许可。此外,OpenJDK还可以选择单独安装JRE,而OracleJDK则与JRE打包。
选项1:安装默认的JRE/JDK
安装Java的一个选择是使用Debian打包的版本。默认情况下,Debian 11 包含 OpenJDK 第 11 版,它是 JRE 和 JDK 的一个开源变体,与 Java 11 兼容。
Java 11 是当前 Java 的长期支持版本。
要安装OpenJDK版本的Java,首先更新你的apt
包索引。
sudo apt update
接下来,检查Java是否已经安装。
java -version
如果当前没有安装Java,你会收到以下信息。
Output
-bash: java: command not found
执行以下命令,安装OpenJDK 11的默认JRE。
sudo apt install default-jre
该JRE将允许你运行几乎所有的Java软件。
用下面的方法验证安装。
java -version
将返回以下输出。
Output
openjdk version "11.0.16" 2022-07-19
OpenJDK Runtime Environment (build 11.0.16+8-post-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Debian-1deb11u1, mixed mode, sharing)
除了 JRE 之外,您可能还需要 JDK,以便编译和运行一些特定的基于 Java 的软件。要安装JDK,请执行下面的命令,它也将安装JRE。
sudo apt install default-jdk
通过检查javac
,即Java编译器的版本来验证JDK是否已经安装。
javac -version
你将收到以下输出。
Output
javac 11.0.16
接下来,您将了解如何安装 Oracle 的官方 JDK 和 JRE。
选项 2 - 安装 Oracle JDK 11
Oracle的Java许可协议不允许通过软件包管理器自动安装。要安装官方的Oracle JDK,你必须创建一个Oracle账户,并手动下载JDK,为你想使用的版本添加一个新的包库。然后你可以使用apt
在第三方安装脚本的帮助下安装它。Oracle JDK包含了JRE,所以你不需要单独安装它。
你需要下载的Oracle JDK的版本必须与安装程序脚本的版本相匹配。要找到你需要的版本,请访问 oracle-java11-installer
页面。你的软件包的位置在下图中。
在这个图片中,脚本的版本是11.0.13
。因此,你需要Oracle JDK 11.0.13。版本号可能会有所不同,这取决于你安装软件的时间。 你不需要从这个页面下载任何东西,因为你很快就会通过apt
下载安装脚本了。
接下来,访问Archive Downloads,找到与你需要的版本相匹配的版本。
从这个列表中,选择Linux x64压缩档案.tar.gz
包。
你会看到一个屏幕,要求你接受Oracle许可协议。选择复选框以接受许可协议,并按下下载按钮。你的下载将开始。在下载开始之前,你可能需要再登录一次你的Oracle账户。
文件下载完毕后,你需要把它传输到你的服务器上。在你的本地机器上,将文件上传到你的服务器。在macOS、Linux或使用Windows Subsystem for Linux的Windows系统上,使用scp
命令将文件传输到你的用户的主目录。 sammy
用户的主目录。下面的命令假定你已经将Oracle JDK文件保存到本地机器的Downloads
文件夹。
scp Downloads/jdk-11.0.13_linux-x64_bin.tar.gz sammy@your_server_ip:~
一旦文件上传完成,返回到你的服务器,添加第三方资源库,这将有助于你安装Oracle的Java。
首先,导入用于验证你将要安装的软件的签名密钥。
sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/oracle-jdk11-installer.gpg --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A
你会收到以下输出。
Output
gpg: keybox '/usr/share/keyrings/oracle-jdk11-installer.gpg' created
gpg: /tmp/trustdb.gpg: trustdb created
gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
gpg: Total number processed: 1
gpg: imported: 1
接下来,将该软件库添加到你的软件包源列表中。
echo "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
更新你的软件包列表,使新软件可供安装。
sudo apt update
安装程序将寻找你在/var/cache/oracle-jdk11-installer-local
中下载的 Oracle JDK。首先创建这个目录。
sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
然后,将 Oracle JDK 档案移到那里。
sudo cp jdk-11.0.13_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/
最后,安装该软件包。
sudo apt install oracle-java11-installer-local
安装程序将首先要求你接受 Oracle 许可协议。接受协议,然后安装程序将提取 Java 包并安装。
现在,你将学习如何选择你要使用的Java版本。
第2步-管理Java
你可以在一台服务器上安装多个Java。你可以通过使用update-alternatives
命令,在命令行中配置哪个版本是默认使用的。
sudo update-alternatives --config java
如果你在本教程中安装了两个版本的Java,会有如下输出。
Output
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
* 2 /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode
Press <enter> to keep the current choice[*], or type selection number:
选择与Java版本相关的数字,将其作为默认版本,或按ENTER
,保留当前设置。
你可以对其他Java命令这样做,如编译器(javac
)。
sudo update-alternatives --config javac
可以运行这个命令的其他命令包括,但不限于。keytool
,javadoc
, 和jarsigner
。
第3步 - 设置JAVA_HOME
环境变量
许多用Java编写的程序使用JAVA_HOME
环境变量来确定哪个Java安装位置。
要设置这个环境变量,首先要确定Java的安装位置。使用update-alternatives
命令。
sudo update-alternatives --config java
该输出将列出每个Java的安装及其安装路径。
Output
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
* 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
。
sudo nano /etc/environment
这个文件最初可能是空白的。在文件的末尾,添加以下一行,确保用你自己复制的路径替换突出显示的路径,而不包括路径的bin/
部分。
/etc/environment
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
修改这个文件将为你系统中的所有用户设置JAVA_HOME
路径。
保存该文件并退出编辑器。如果你使用的是nano
,你可以按CTRL + X
,Y
,然后按ENTER
来完成。
现在重新加载这个文件,将这些变化应用到你的当前会话中。
source /etc/environment
验证环境变量是否被设置。
echo $JAVA_HOME
你的输出将返回你先前设置的路径。
Output
/usr/lib/jvm/java-11-openjdk-amd64
其他用户将需要执行命令source /etc/environment
,或者退出并重新登录以应用这一设置。
总结
在本教程中,你安装了多个版本的Java并学会了如何管理它们。现在你可以安装在Java上运行的软件,如Tomcat、Jetty、Glassfish、Cassandra或Jenkins。