Java是当今最流行的编程语言之一。而一个干净的设置可以让你无缝地安装Java,并在构建应用程序时在不同的版本之间切换。
在本教程中,你将学会如何:
- 安装任何Java版本
- 在Java版本之间进行切换
- 更新到最新的Java版本
所提供的指南应该适用于大多数操作系统。我对以下Linux版本进行了测试:
- Ubuntu
- 蝶变
- MacOS
Java开发工具包
Java开发工具包(JDK)是一个开发环境,用于使用Java编程语言构建应用程序、小程序和组件。(资料来源)
JDK包含不同的应用程序,包括
javac,Java编译器,它将源代码转换为Java字节码。
java,Java应用程序的加载器。这个工具是一个解释器,可以解释由javac编译器生成的类文件。现在,一个单一的启动器被用于开发和部署。旧的部署启动器jre不再随Sun JDK一起提供,而是由这个新的java装载器取代。(来源)
Java构建工具(Maven、Gradle等)和你的代码编辑器在幕后使用Java应用程序,为开发者提供了运行、创建和维护应用程序的良好体验。
让我们看看如何使用终端在Linux环境下安装Java。这样你就可以在自己的Linux环境和许多远程环境中使用这些步骤。
如何使用SDKMan来管理Java版本
SDKMAN!是一个在大多数基于Unix系统上管理多个软件开发工具包的并行版本的工具。它提供了一个方便的命令行界面(CLI)和API,用于安装、切换、删除和列出候选程序。(来源)
SDKMan带有自己的安装程序,支持许多操作系统。请确保你在安装之前先安装curl,之后再执行安装程序脚本。
如何在Ubuntu 22上安装SDKMan
# install curl
$ sudo apt install curl
# install sdkman
$ curl -s "https://get.sdkman.io" | bash
如何在Debian 11上安装SDKMan
# login as root
$ su
# install curl
$ apt install curl zip
# exit root user session
$ exit
# install sdkman
$ curl -s "https://get.sdkman.io" | bash
如何在MacOS上安装SDKMan
如果你在Mac上还没有brew和curl,你需要安装它们以方便安装和更新SDKman:
# install brew package manager)
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# install curl
$ brew install curl
# install sdkman
$ curl -s "https://get.sdkman.io" | bash
现在,关闭并重新打开你的终端来使用sdkman:
# print sdkman version to verify installation
$ sdk versionSDKMAN 5.15.0
# install latest java
$ sdk install java
# check your java installation and print your java’s version
$ java –version
Openjdk version "17.0.3" 2022-04-19OpenJDK Runtime Environment Temurin-17.0.3+7 (build 17.0.3+7)OpenJDK 64-Bit Server VM Temurin-17.0.3+7 (build 17.0.3+7, mixed mode, sharing)
# Show path to current java version$ which java/home/sesigl/.sdkman/candidates/java/current/bin/java
现在,你已经准备好使用Java了。
如何安装多个Java版本
安装多个Java版本是非常有用的。也许某些应用程序需要旧版本的Java。或者你想玩一个全新的Java版本,并轻松地切换回来。
接下来,你另外安装Java 18:
$ sdk install java 18.0.1-tem
Done installing!
Do you want java 18.0.1-tem to be set as default? (Y/n): n
通过键入n ,这意味着你不想使用Java 18作为你的默认版本。你可以通过执行sdk use java <version> ,在你的shell中临时手动启用版本:
$ sdk use java 18.0.1-tem
Using java version 18.0.1-tem in this shell.
$ java -version
openjdk version "18.0.1" 2022-04-19OpenJDK Runtime Environment Temurin-18.0.1+10 (build 18.0.1+10)OpenJDK 64-Bit Server VM Temurin-18.0.1+10 (build 18.0.1+10, mixed mode, sharing)
如果你关闭窗口或键入Javasdk use java 17.0.3-tem ,你可以切换回来:
$ sdk use java 17.0.3-tem
Using java version 17.0.3-tem in this shell.
$ java -version
openjdk version "17.0.3" 2022-04-19OpenJDK Runtime Environment Temurin-17.0.3+7 (build 17.0.3+7)OpenJDK 64-Bit Server VM Temurin-17.0.3+7 (build 17.0.3+7, mixed mode, sharing)
如何自动切换Java版本
假设你有两个项目,一个用Java 17,一个用Java 18。通过在一个目录中创建一个.sdkmanrc 文件,你可以自动切换版本,这将提高你的工作效率。
让我们为一个Java 17项目创建一个文件:
$ sdk env init
.sdkmanrc created.
$ tail .sdkmanrc
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=17.0.3-tem
接下来,创建另一个目录,将Java版本切换为Java 18,并通过执行sdk env init ,创建另一个.sdkmanrc :
$ cd ..
$ mkdir my-java-18-project
$ cd my-java-18-project/
$ sdk use java 18.0.1-tem
Using java version 18.0.1-tem in this shell.
$ sdk env init
.sdkmanrc created.
$ tail .sdkmanrc
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=18.0.1-tem
为了自动切换Java版本,你需要编辑文件$HOME/.sdkman/etc/config ,设置sdkman_auto_env=true 。已经有一行了,所以你只需要把false 改为true 。
要启用配置变更,请重新启动你的终端。一旦完成,sdkman在为你自动改变Java版本时就会打印出来。
让我们也来验证一下Java的版本:
$ cd my-java-17-project/
Using java version 17.0.3-tem in this shell.
$ java -version
openjdk version "17.0.3" 2022-04-19
OpenJDK Runtime Environment Temurin-17.0.3+7 (build 17.0.3+7)
OpenJDK 64-Bit Server VM Temurin-17.0.3+7 (build 17.0.3+7, mixed mode, sharing)
$ cd ..
Restored java version to 17.0.3-tem (default)
$ cd my-java-18-project/
Using java version 18.0.1-tem in this shell.
$ java -version
openjdk version "18.0.1" 2022-04-19
OpenJDK Runtime Environment Temurin-18.0.1+10 (build 18.0.1+10)
OpenJDK 64-Bit Server VM Temurin-18.0.1+10 (build 18.0.1+10, mixed mode, sharing)
如果你想了解更多关于sdkman的信息,请查看sdkman使用文档。
如何更新一个Java版本
一旦有了新的Java版本,它应该通过sdk list java 。但是,你也可以使用sdk upgrade java 来要求 sdkman 检查更新。
让我们安装一个旧版本的Java:
$ sdk uninstall java 17.0.3-tem
$ sdk install java 17.0.2-tem
$ sdk install java 11.0.12-tem
$ sdk upgrade java
Available defaults:
java (local: 18.0.1-tem, 11.0.12-tem, 17.0.2-tem; default: 17.0.3-tem)
Use prescribed default version(s)? (Y/n): Y
Installing: java 17.0.3-tem
Done installing!
Setting java 17.0.3-tem as default.
通过确认y ,它下载建议的默认版本17.0.3-tem ,并将其设置为您系统的默认版本。这样,通过执行sdk upgrade java ,未来的更新就很容易了。
总结
在这篇文章中,你学到了如何使用sdkman轻松管理Java SDKs。这是一个非常有用的工具,它支持许多Linux发行版,包括Ubuntu、Debian和MacOS。
SDKMan使您能够安装和删除Java版本,在它们之间切换,并通过一个命令升级您的Java版本。这可以使你的系统保持清洁,并使管理Java SDK变得容易。
我希望你喜欢这篇文章。