SDKMAN一个基于命令行界面的SDK用户环境管理程序
1、背景
使用过Python开发的朋友,应该了解到Python2和Python3语法的差异,有时候从网上下载了基于不同解释器的代码,要来回切换版本,
使用起来不是很方便,有时候甚至很麻烦。于是有人发明了Conda,可以灵活切换版本。
本文要介绍的工具与Conda类似,名字叫SDKMAN,也可以灵活切换JDK版本。比如笔者最近从网上下载了一个源代码,编译时基于JDK11
,本地没安装,对于JDK11不熟,又怕破坏本地环境变量,于是就有了这个尝试。
SDKMAN支持以下JDK厂商及产品:
亚马逊
Corretto
Oracle
GraalVM 下一代新型SDK集成环境
Liberica
Bellsoft(与IDEA有合作)
OpenJDK
AdoptOpenJDK(JVM引擎可选项:OpenJDK HotSpot 、 Eclipse OpenJ9)
OpenJDK
jdk.java.net
SapMachine
SAP(the JCP Executive committee 专家组成员开发的分支)
Zulu
Azul Systems(商用级JDK)
2、摘要
SDK是一个基于命令行(Command Line Interface)用户界面的程序,太能在类Unix的平台上运行(Mac OSX, Linux, Cygwin, Solaris 、 FreeBSD)
该工具依赖于curl、unzip、zip。安装依赖命令如下
sudo apt install curl zip unzip
如果出现以下界面说明你本地环境缺少依赖。
安装方法
curl -s "https://get.sdkman.io" | bash
安装到自定义位置
$ export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash
安装截图
然后打开一个新的终端执行:
source "/home/nginx/.sdkman/bin/sdkman-init.sh"
查看工具版本
sdk version
Windows上也可以安装,需要依赖Cygwin或者Windows10的WLS子系统,笔者没有去测试
卸载方法
tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman
$ rm -rf ~/.sdkman
其次执行以下步骤,打开.bashrc,.bash_profile甚至是profile删除以下内容,如果使用zsh,从.zshrc删除以下类似内容
#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"
支持的软件库(这里应该是开源项目库,类似于maven)
sdk list
比如查询springboot,输入/spring
查看springboot
sdk list springboot
比如安装springboot 2.0.2(这里和Conda功能类似)
sdk install springboot 2.0..RELEASE
卸载
sdk uninstall springboot 2.0..RELEASE
使用特定版本的jar包
sdk use springboot 2.0..RELEASE
安装JAVA SDK
java的安装也可以使用以上方式
查看支持的java版本
sdk list java
安装命令格式
亚马逊Corretto
sdk install java x.y.z-amzn
Oracle GraalVM
sdk install java x.y.z-grl
Liberica Bellsoft
sdk install java x.y.z-librca
OpenJDK AdoptOpenJDK
sdk install java x.y.z-adpt
OpenJDK jdk.java.net
sdk install java x.y.z-open
SapMachine SAP
sdk install java x.y.z-sapmchn
Zulu Azul Systems
sdk install java x.y.z-zulu
以下我们来安装ZuLu 8.0.232
sdk install java 8.0.-zulu
本文的命令大量参照/转载自:https://www.jianshu.com/p/8597c22550a6
SDKMAN一个基于命令行界面的SDK用户环境管理程序的更多相关文章
- [Java] 实现一个基于命令行的用户管理
实现基于一个命令行的用户管理,控制台操作 控制类 /* * 文 件 名: mvc.my.test.UserInterface.java * 版 权: XXX Technologies Co., Ltd ...
- 一个基于和围绕Docker生态环境构建的早期项目列表
https://blog.docker.com/2013/07/docker-projects-from-the-docker-community/
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...
- 基于gulp编写的一个简单实用的前端开发环境好了,安装完Gulp后,接下来是你大展身手的时候了,在你自己的电脑上面随便哪个地方建一个目录,打开命令行,然后进入创建好的目录里面,开始撸代码,关于生成的json文件请点击这里https://docs.npmjs.com/files/package.json,打开的速度看你的网速了注意:以下是为了演示 ,我建的一个目录结构,你自己可以根据项目需求自己建目
自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.8. 配置用户环境
2.8.配置用户环境 2.8.1. 配置节点RAC1 配置grid用户环境变量: cat >> /home/grid/.bash_profile <<EOF export TM ...
- 基于gulp编写的一个简单实用的前端开发环境
自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...
- 从零开始搭建一个简单的基于webpack的vue开发环境
原文地址:https://segmentfault.com/a/1190000012789253?utm_source=tag-newest 从零开始搭建一个简单的基于webpack的react开发环 ...
- 基于fastweixin的微信开发环境搭建(一)
由于公司业务需要,开发微信版本,才开始接触微信公众平台.在github折腾了几天,试过好几个微信sdk,最终选择fastweixin.个人觉得这个框架还是值得使用的,使用也简单.那么问题来了,很多人想 ...
- 最新基于adt-bundle-windows-x86的android开发环境筹建
最新基于adt-bundle-windows-x86的android开发环境搭建 某系统要配套做一个android客户端,来一次android开发环境快速搭建,系统Win7,具体步骤如下: 1.下载j ...
随机推荐
- 图论篇3——最短路径 Dijkstra算法、Floyd算法
最短路径 问题背景:地图上有很多个城市,已知各城市之间距离(或者是所需时间,后面都用距离了),一般问题无外乎就是以下几个: 从某城市到其余所有城市的最短距离[单源最短路径] 所有城市之间相互的最短距离 ...
- dfs 排列组合——找所有子集(重复元素和不重复元素)
17. 子集 中文 English 给定一个含不同整数的集合,返回其所有的子集. 样例 样例 1: 输入:[0] 输出: [ [], [0] ] 样例 2: 输入:[1,2,3] 输出: [ [3], ...
- selenium+python自动化100-centos上搭建selenium启动chrome浏览器headless无界面模式
环境准备 前言 selenium在windows机器上运行,每次会启动界面,运行很不稳定.于是想到用chrome来了的headless无界面模式,确实方便了不少. 为了提高自动化运行的效率和稳定性,于 ...
- Vuex之Mutation
[前言] 数据在页面是获取到了,但是如果需要修改count值怎么办?更改 Vuex 的 store 中的状态的唯一方法是提交 mutation.Vuex 中的 mutation 非常类似于事件:每个 ...
- wordpress去掉category的另一个方法
今天ytkah的客户问wordpress网站一直去不掉分类url中的/category/,他说已经按ytkah之前的方法设置了还是不起作用,进入网站后台发现,他们的网站有安装yoast,然后就大概知道 ...
- shell脚本中大于,大于等于,小于,小于等于、不等于的表示方法
症状:shell中大于,大于等于,小于等于,lt,gt ,ne,ge,le 很对应. 应对方法: 大于 -gt (greater than) 小于 -lt (less than) 大于或等于 -ge ...
- Opencv python图像处理-图像相似度计算
一.相关概念 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你 ...
- podium micro-frontends 简单试用
以下是一个简单的podium 试用,包含了layout 以及podlets,使用docker 运行 podium 主要包含了两大部分 podlets 片段服务 layouts 片段组合服务 环境准备 ...
- js处理事件冒泡(兼容写法)
event = event || window.event; if (event.stopPropagation) { event.stopPropagation(); } else { event. ...
- 第01组 团队Git现场编程实战
目录 一.组员职责分工 二.github 的提交日志截图(鼓励小粒度提交) 三.程序运行截图 四.程序运行环境 五.GUI界面 六.基础功能实现 七.鼓励有想法且有用的功能 八.遇到的困难及解决方法 ...