sdkman是一个简单易用的JDK版本管理工具,能帮你自动的在一台电脑上同时安装多种版本的JDK,当你需要使用具体的某个版本时,你只需动态的做版本切换即可;SDKMEN对大部分Java技术体系下的软件版本都能做很好的版本管理,不单只是JDK,它还可以管理Scala,groovy等JVM语言。
安装
install里面讲的很详细,步骤操作即可
# 下载并安装
[thinktik@thinkvm ~]$ curl -s "https://get.sdkman.io" | bash
# 可选操作:生效环境变量,不执行下面的命令也行,新开一个终端即可生效环境变量
[thinktik@thinkvm ~]$ source "$HOME/.sdkman/bin/sdkman-init.sh"
# 检查版本
[thinktik@thinkvm ~]$ sdk version
SDKMAN 5.13.1
[thinktik@thinkvm ~]$
建议: SDKMEN在安装某种SDK的时候,它需要把文件下载下来后,再对文件进行解压,然后才能继续做版本管理;这个过程中需要Linux本身有一些下载/解压工具被安装,所以我建议安装如下的工具
[thinktik@thinkvm ~]$ sudo dnf install unzip zip tar wget curl -y
如果你的电脑上没有以上的工具,很可能会遇到Download has failed, aborting!,Can not install java xxx at this time...这类问题
JDK版本管理
sdkman jdk和sdkman usage有全面的说明,下面我仅对JDK做演示。
查看可安装的JDK列表:
[thinktik@thinkvm ~]$ sdk list java
================================================================================
Available Java Versions for Linux 64bit
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
Corretto | | 17.0.2.8.1 | amzn | | 17.0.2.8.1-amzn
| | 17.0.1.12.1 | amzn | | 17.0.1.12.1-amzn
| | 17.0.0.35.1 | amzn | | 17.0.0.35.1-amzn
| | 11.0.14.9.1 | amzn | | 11.0.14.9.1-amzn
| | 11.0.13.8.1 | amzn | | 11.0.13.8.1-amzn
| | 11.0.12.7.1 | amzn | | 11.0.12.7.1-amzn
......
SDKMEN版本管理
JDK管理
我们可以复制上一步中返回的Identifier内容,作为版本参数进行安装。以AWS Corretto JDK为例,安装JDK 17.0.2我们可以使用Identifier值17.0.2.8.1-amzn的候选版本.
首次安装JDK也会提示你是否设置为系统的默认版本
# 安装JDK 17
[thinktik@thinkvm thinktik]# sdk install java 17.0.2.8.1-amzn
Downloading: java 17.0.2.8.1-amzn
In progress...
################################################################################################################################################################################## 100.0%
Repackaging Java 17.0.2.8.1-amzn...
Done repackaging...
Installing: java 17.0.2.8.1-amzn
Done installing!
Do you want java 17.0.2.8.1-amzn to be set as default? (Y/n): y
Setting java 17.0.2.8.1-amzn as default.
[thinktik@thinkvm thinktik]# java -version
openjdk version "17.0.2" 2022-01-18 LTS
OpenJDK Runtime Environment Corretto-17.0.2.8.1 (build 17.0.2+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.2.8.1 (build 17.0.2+8-LTS, mixed mode, sharing)
# 检查JDK版本
[thinktik@thinkvm thinktik]# java -version
openjdk version "17.0.2" 2022-01-18 LTS
OpenJDK Runtime Environment Corretto-17.0.2.8.1 (build 17.0.2+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.2.8.1 (build 17.0.2+8-LTS, mixed mode, sharing)
# 安装JDK11
[thinktik@thinkvm thinktik]# sdk install java 11.0.12-open
java 11.0.12-open is already installed.
# 动态的切换JDK版本为JDK11
[thinktik@thinkvm thinktik]# sdk use java 11.0.12-open
Using java version 11.0.12-open in this shell.
# 检查JDK版本
[thinktik@thinkvm thinktik]# java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment 18.9 (build 11.0.12+7)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7, mixed mode)
# 安装JDK8
[thinktik@thinkvm thinktik]# sdk install java 8.0.292-open
Downloading: java 8.0.292-open
In progress...
################################################################################################################################################################################## 100.0%################################################################################################################################################################################## 100.0%
Repackaging Java 8.0.292-open...
Done repackaging...
Installing: java 8.0.292-open
Done installing!
Do you want java 8.0.292-open to be set as default? (Y/n): n
# 动态的切换JDK版本为JDK8
[thinktik@thinkvm thinktik]# sdk use java 8.0.292-open
Using java version 8.0.292-open in this shell.
# 检查JDK版本
[thinktik@thinkvm thinktik]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
所以我们可以看到使用SDKMEN做JDK的版本管理很方便
其他SDK管理
SDKMEN除了可以管理JDK外也可以管理其他的SDK,比如Groovy,Scala.细节请看sdks
比如scala的管理:
- 安装scala:
sdk install scala 3.1.0 - 卸载scala:
$ sdk uninstall scala 3.1.0