Java升级那么快,多个版本如何灵活切换和管理?

引言

近年来,Java 版本更新频繁,刚适应 Java 8,就已经传来了 Java 14 的消息。无论是为体验新特性(Java 12 中有非常实用的功能),还是因为项目升级或兼容需求,我们都可能需要管理多个 Java 版本。

配置单个 Java 环境变量并不复杂,但当需要管理多个 Java 版本时,反复配置环境变量显得非常繁琐,传统配置方式也无法灵活切换 Java 版本。

那么,如何轻松管理和使用多个版本的 Java 呢?

显然,我们并非首次面对这种困境。目前已知有三种解决方案:

立即学习Java免费学习笔记(深入)”;

Jabba(https://www.php.cn/link/f816fdcb111b79750431ce758e283ead sdkmanhttps://www.php.cn/link/0ff0a77035f9569943049ed3e980bb0d sdkman 解决我们面临的问题,帮助我们灵活配置和使用 Java。

sdkman 介绍

SDKMAN 是一个用于在大多数基于 unix 的系统上管理多个软件开发工具包(Java、Groovy、scalakotlin 和 Ceylon,Ant、gradle 等)的并行版本的工具

它提供了一个便捷的命令行界面(CLI)和 API,用于安装、切换、删除和列出候选对象。本文将主要通过管理 Java 来展示 sdkman 的使用。

sdkman 安装

在类 Unix 平台上安装 sdkman 非常简单。它可以顺利安装在 mac OSX、linux、WLS、Cygwin、Solaris 和 FreeBSD 上,同时支持 bash 和 ZSH shell。

只需打开一个新终端并输入:

$ curl -s "https://get.sdkman.io" | bash

按照相应的指令提示,完成操作后继续输入:

$ source "$HOME/.sdkman/bin/sdkman-init.sh"

至此,我们可以验证 sdkman 的安装版本:

$ sdk version

Java升级那么快,多个版本如何灵活切换和管理?

上图中红色框标记显示了我当前的 sdkman 版本。每执行

sdk version

命令时,都会检查是否有新版本,如果需要更新,只需输入

y

即可。

有些系统发行版本不包含

zip

unzip

,如果安装时遇到相关错误,可以输入如下命令安装

zip

unzip

$ sudo apt-get install zip unzip

从上面的安装命令可以看出,sdkman 默认的安装路径在

$HOME/.sdkman

下,我们也可以自定义安装路径,只需指定

SDKMAN_DIR

变量值即可:

$ export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash

至此,sdkman 的安装就结束了。接下来我们看看如何使用它。

sdkman 使用教程

在命令行下学习新工具当然是从查看帮助命令开始,输入:

$ sdkman help

Java升级那么快,多个版本如何灵活切换和管理?

从上图中可以看出,sdkman 的使用说明已按颜色区分内容。我们将根据上图详细说明使用教程。

sdk list

首先,输入:

$ sdk list

Java升级那么快,多个版本如何灵活切换和管理?

绿色标记显示了 sdkman 集成的所有可用候选对象,按回车键「enter」可以看到更多可用候选对象。

我们指定候选对象,输入:

$ sdk list java

Java升级那么快,多个版本如何灵活切换和管理?

从上图中可以看到所有可用的 Java 版本、标识符以及状态。我已经安装了 Java 12 和 11。

有了这些信息做铺垫,我们可以安装任意 sdkman 内置的软件开发包了,继续以 Java 为例。

sdk install

回顾 sdkman help 命令的输出,使用 install 命令,我们再安装一个最新的 Java

13.0.1.j9

版本。

Java升级那么快,多个版本如何灵活切换和管理?

从上图可以看出,绿色标记的内容是 list 命令结果中的版本值,但报错不可用,输入

identifier

编号才能正常下载,这里需要注意。

安装完成后,状态会变为 installed。

sdk current

当安装多个版本的 Java 时,我们输入下面命令获取当前正在使用的候选对象版本:

$ sdk current java

Java升级那么快,多个版本如何灵活切换和管理?

sdk use

了解了当前使用版本,如果我们想切换到其他版本,可以输入:

$ sdk use java 12.0.2.j9-adpt

注意⚠️:这里同样是指定的 identifier 的值。

Java升级那么快,多个版本如何灵活切换和管理?

sdk default

如果我们想指定某个版本为默认版本,可以输入:

$ sdk default java jdk1.8.0_162.jdk

注意⚠️:这里同样是指定的 identifier 的值。

Java升级那么快,多个版本如何灵活切换和管理?

sdk uninstall

当我们想卸载某个版本时,可以输入:

$ sdk uninstall java 12.0.2.j9-adpt

注意⚠️:这里同样是指定的 identifier 的值。

sdk upgrade

如果我们想升级某个候选对象,可以输入:

$ sdk upgrade java

sdk flush

使用 sdkman 时间变长也会慢慢产生很多缓存内容,我们可以输入清理广播消息:

$ sdk flush broadcast

清理下载的 sdk 二进制文件(长时间使用后清理,可以节省出很多空间):

$ sdk flush archives

清理临时文件内容:

$ sdk flush temp

至此,sdkman 的基本使用就已经介绍完了。其实这些命令都不用急,想不起来的时候执行

sdk help

来临时查看一下就好。

sdkman 卸载

如果我们不喜欢 sdkman 了,我们也可以轻松地卸载它:

$ tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman $ rm -rf ~/.sdkman

最后,打开你的 .bashrc、.bash_profile 和/或 .profile,找到并删除下面这几行。

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! [[ -s "/home/dudette/.sdkman/bin/sdkman-init.sh" ]] && source "/home/dudette/.sdkman/bin/sdkman-init.sh"

我使用的是 zshrc,找到 .zshrc 文件删除上面内容即可。

至此,基于 Unix 系统的,有关 sdkman 的安装、使用及卸载都已经介绍完了,可以上手试一试了。相信很多小伙伴用的是 windows,除了 jenv,sdkman 和 Jabba 都有 windows 用户的解决方案:

sdkman Windows 解决方案

在 sdkman 官网首页同样为 Windows 用户提供了解决方案,小伙伴们找到如下位置查看即可。

Java升级那么快,多个版本如何灵活切换和管理?

我看了一下过程,也很简单,由于手头没有 Windows 电脑,这个请小伙伴们自行尝试,有问题欢迎留言。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享