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用户环境管理程序的更多相关文章

  1. [Java] 实现一个基于命令行的用户管理

    实现基于一个命令行的用户管理,控制台操作 控制类 /* * 文 件 名: mvc.my.test.UserInterface.java * 版 权: XXX Technologies Co., Ltd ...

  2. 一个基于和围绕Docker生态环境构建的早期项目列表

    https://blog.docker.com/2013/07/docker-projects-from-the-docker-community/

  3. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  4. 基于gulp编写的一个简单实用的前端开发环境好了,安装完Gulp后,接下来是你大展身手的时候了,在你自己的电脑上面随便哪个地方建一个目录,打开命令行,然后进入创建好的目录里面,开始撸代码,关于生成的json文件请点击这里https://docs.npmjs.com/files/package.json,打开的速度看你的网速了注意:以下是为了演示 ,我建的一个目录结构,你自己可以根据项目需求自己建目

    自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...

  5. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.8. 配置用户环境

    2.8.配置用户环境 2.8.1. 配置节点RAC1 配置grid用户环境变量: cat >> /home/grid/.bash_profile <<EOF export TM ...

  6. 基于gulp编写的一个简单实用的前端开发环境

    自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...

  7. 从零开始搭建一个简单的基于webpack的vue开发环境

    原文地址:https://segmentfault.com/a/1190000012789253?utm_source=tag-newest 从零开始搭建一个简单的基于webpack的react开发环 ...

  8. 基于fastweixin的微信开发环境搭建(一)

    由于公司业务需要,开发微信版本,才开始接触微信公众平台.在github折腾了几天,试过好几个微信sdk,最终选择fastweixin.个人觉得这个框架还是值得使用的,使用也简单.那么问题来了,很多人想 ...

  9. 最新基于adt-bundle-windows-x86的android开发环境筹建

    最新基于adt-bundle-windows-x86的android开发环境搭建 某系统要配套做一个android客户端,来一次android开发环境快速搭建,系统Win7,具体步骤如下: 1.下载j ...

随机推荐

  1. python基础语法8 叠加装饰器,有参装饰器,wraps补充,迭代器

    叠加装饰器: 叠加装饰器 - 每一个新的功能都应该写一个新的装饰器 - 否则会导致,代码冗余,结构不清晰,可扩展性差 在同一个被装饰对象中,添加多个装饰器,并执行. @装饰1 @装饰2 @装饰3 de ...

  2. 网络I/O

    贴几个超级不错的博客 1.Linux IO模式及 select.poll.epoll详解 2.网络 I/O 模型 3.同步异步阻塞非阻塞 4.三种模式的区别与联系

  3. WHAT IS GAME-BASED LEARNING?

    https://www.growthengineering.co.uk/what-is-game-based-learning/ Gamification and game-based learnin ...

  4. ios Aspects面向切面沉思录—面向结构编程—面向修改记录编程—面向运行时结构编程—元编程?

    1.将主功能看成一个巨大的结构: 2.将切面注入的交叉业务看成是一组结构修改的注册:目标对象+方法是修改的键值: 3.Aspects引擎是修改的执行者.记录者.和维护者: 4.函数和方法是它操作和面对 ...

  5. log4j2 配置文件解读

    1.日志相关介绍 日志接口(slf4j):slf4j是对所有日志框架制定的一种规范.标准.接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具体的日志框架实现配合使用,比如log4j.l ...

  6. jquery ajax在ie9下跨域不执行 crossDomain: true == !(document.all)

    <!DOCTYPE html> <html> <head> <title>jQuery CORS in IE7 - IE10</title> ...

  7. PHP - Filters

    Retrieve the administrator password of this application. 对文件包含的介绍------------第一个链接需要谷歌 https://mediu ...

  8. 干货,不小心执行了rm -f,除了跑路,如何恢复?https://www.cnblogs.com/justmine/p/10359186.html

    前言 每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有bug,呵呵. 那么如果真的删除了不该删除的文件,比如数据库. ...

  9. 异常STATUS_FATAL_APP_EXIT(0x40000015)

    简介 STATUS_FATAL_APP_EXIT,值为0x40000015.代表的意思是"致命错误,应用退出".它定义在 ntstatus.h头文件里,如下: //// Messa ...

  10. Linux后台开发工具箱-葵花宝典

    Linux后台开发工具箱-葵花宝典 一见 2016/11/4 目录 目录 1 1. 前言 4 2. 脚本类工具 4 2.1. 双引号和单引号 4 2.2. 取脚本完整文件路径 5 2.3. 环境变量和 ...