前言java
对于使用 Java 语言开发的朋友可能会遇到这种状况,有时想学习和探索 Java 的最新版本提供的一些新特性,好比 Java 11,但你没法将其安装在本身的计算机上,由于你的团队正在使用比这个旧的版本(咱们目前用的 Java 8),你并不想影响目前的项目。或者你目前是在维护和开发多个项目,而这些不一样的项目使用的 JDK 版本不同,好比那些维护的老项目使用的是 JDK 8,而新项目你打算使用比较新的版本 JDK 11,以上这些状况都须要在计算机上安装多个 JDK,而且应该可以在多个版本之间方便快速的切换。今天要介绍的主角 SDKMAN ( https://sdkman.io ) 能够很好的解决上面这种问题,它提供了在同一台计算机上对多个版本的开发工具包管理。须要注意的是:这个工具只适用于类 Unix 的系统(好比:Mac OSX、Linux、Cygwin、Solaris、FreeBSD 等)。bash
2curl
SDKMan 简介ide
直接引用 SDKMan 官网上的介绍以下:工具
SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. It provides a convenient Command Line Interface (CLI) and API for installing, switching, removing and listing Candidates.学习
简单来讲就是其提供了管理多个版本开发工具包的能力,同时也提供了一些命令行接口让咱们方便安装、版本切换、版本移除和显示版本列表。关于 SDKMan 还有几个要点以下:开发工具
SDKMan 是由开源社区开发的,无偿使用,。url
SDKMan 是用 bash 编写的,它只须要您的系统上安装了 curl 和 zip / unzip 命令便可。命令行
SDKMan 能够为 JVM 安装大约 29 个软件开发包,好比 Java、Groovy、Scala、Kotlin、Gradle、Maven、Spark、Spring Boot 等。3d
SDKMan 能够自动处理帮咱们配置 *_HOME(e.g.:JAVA_HOME) 和 PATH 环境变量,所以咱们不须要担忧切换版本后这些环境变量的设置。
3
安装 SDKMan
SDKMan 能够运行在任何类 Unix 系统上,咱们只须要在命令行输入如下命令便可安装:
curl -s "https://get.sdkman.io" | bash
而后执行如下命令,加载文件 sdkman-init.sh 到当前环境,执行完该命令以后咱们能够经过 sdk version 来验证是否安装成功,同时还能够经过 sdk help 命令显示有关 sdk 命令用法和帮助(PS: 对于使用 Windows 环境的朋友能够安装 Cygwin 或 Git Bash 运行以上命令)。
source "$HOME/.sdkman/bin/sdkman-init.sh"
4
使用 SDKMan 安装 JDK
前面已经介绍过,SDKMan 支持多达大约 29 个软件开发包管理,咱们也可使用 sdk list 命令来查看支持的完整列表,本文主要介绍 Java 相关的内容,能够经过命令 sdk list java 来查看支持安装的 Java 版本。
使用如下命令安装 Java 11 :
sdk install java 11.0.7.hs-adpt
该命令会花费一些时间,由于它会在咱们的计算机上下载对应版本的 JDK,执行完成以后 SDKman 会自动给咱们配置好 JAVA_HOME 和 PATH 等环境变量,能够经过 Java -version 命令验证。
如今,若是检查 Java 版本和 JAVA_HOME 环境变量,能够看到当前 Java 的版本已更新为 11.0.7。
可使用如下命令来设置默认使用的 JDK 版本。
sdk default java 11.0.7.hs-adpt
5
将 SDKMan 指向已安装 Java 版本
若是在你安装 SDKMan 以前本地电脑已经安装了 JDK 版本,默认是没法识别到的,那么你须要进行如下配置才能让 SDKMan 识别已安装的版本,首先,第一步你要先找到你的 Java 安装目录,我本地 Mac 的安装目录是 /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk,而后使用命令 ln -s 来为 Java 安装目录创建符号连接。
6
多个 JDK 版本切换示例
SDKMan 提供了命令 sdk use java在多个版本之间进行切换,使用 sdk use java jdk1.8.0_181.jdk 命令来使用以前本地安装的 Java 8。
使用命令 sdk use java 11.0.7.hs-adpt 来设置版本为 Java 11。
须要注意的是:使用命令 sdk use java只在当前会话有效,若是你关闭终端并再次打开它,则将使用之前安装的版本,不会改变你本地使用的版本,此时可使用 sdk default java来设置永久生效。
7
如何卸载指定的 JDK 版本
若是你想要卸载任何已安装的 JDK 版本,好比:11.0.7.hs-adpt,可使用如下命令卸载:
sdk uninstall java 11.0.7.hs-adpt
此时,若是你想再次安装以前经过 SDKMan 卸载的版本,此时不会再次从新下载,会提示 Found a previously downloaded java 11.0.7.hs-adpt archive. Not downloading it again...,由于以前删除操做并无真正的从你计算机上删除源压缩包文件。
8
IntelliJ IDEA 使用 SDMan 安装 JDK
SDKMan 全部安装的 JDK 都放在目录 .sdkman/candidates/java/,你能够在你当前用户的 home 文件夹下面看到该文件夹(注意是隐藏文件夹)。
在 IntelliJ IDEA 中打开任何一个 Java 项目后,您能够按 Command + : 快捷键打开项目结构窗口,在 Project SDK 模块选择新建一个 JDK 后输入你须要的 JDK 版本在 SDKMan 中的路径便可。
由于 .sdkman 是隐藏文件夹不太方便查找,可使用如下命令建立一个非隐藏文件夹指向它。
ln -s ~/.sdkman ~/sdkman