java多版本管理
背景
- java版本的升级也比较频繁, 每年一个版本或更多
- 虽然java环境变量的配置无技术性可言, 但对于频繁切换也是比较枯燥的
java版本管理工具
- sdkman: https://sdkman.io/
- jenv
- Jabba
sdkman的安装--mac
安装
curl -s "https://get.sdkman.io" | bash
立即生效
source "$HOME/.sdkman/bin/sdkman-init.sh"
测试
sdk version
结果
$ sdk version
==== BROADCAST =================================================================
* 2020-09-02: jbang 0.43.0 @jbangdev https://git.io/JUqfJ
* 2020-09-02: jbang 0.42.1 @jbangdev https://git.io/JUqfJ
* 2020-08-25: Gradle 6.6.1 released on SDKMAN! #gradle
================================================================================
SDKMAN 5.9.0+555
sdkman的使用--mac
查看帮助
$ sdk help
Usage: sdk <command> [candidate] [version]
sdk offline <enable|disable>
commands:
install or i <candidate> [version] [local-path]
uninstall or rm <candidate> <version>
list or ls [candidate]
use or u <candidate> <version>
default or d <candidate> [version]
home or h <candidate> <version>
env or e [init]
current or c [candidate]
upgrade or ug [candidate]
version or v
broadcast or b
help
offline [enable|disable]
selfupdate [force]
update
flush <broadcast|archives|temp>
candidate : the SDK to install: groovy, scala, grails, gradle, kotlin, etc.
use list command for comprehensive list of candidates
eg: $ sdk list
version : where optional, defaults to latest stable if not provided
eg: $ sdk install groovy
local-path : optional path to an existing local installation
eg: $ sdk install groovy 2.4.13-local /opt/groovy-2.4.13
查看正在使用的java版本
$ sdk current java
Not using any version of java
查看所有的java版本
$ sdk list java
================================================================================
Available Java Versions
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
AdoptOpenJDK | | 14.0.2.j9 | adpt | | 14.0.2.j9-adpt
| | 14.0.2.hs | adpt | | 14.0.2.hs-adpt
| | 13.0.2.j9 | adpt | | 13.0.2.j9-adpt
| | 13.0.2.hs | adpt | | 13.0.2.hs-adpt
| | 12.0.2.j9 | adpt | | 12.0.2.j9-adpt
| | 12.0.2.hs | adpt | | 12.0.2.hs-adpt
| | 11.0.8.j9 | adpt | | 11.0.8.j9-adpt
| | 11.0.8.hs | adpt | | 11.0.8.hs-adpt
| | 8.0.265.j9 | adpt | | 8.0.265.j9-adpt
| | 8.0.265.hs | adpt | | 8.0.265.hs-adpt
Amazon | | 11.0.8 | amzn | | 11.0.8-amzn
| | 8.0.265 | amzn | | 8.0.265-amzn
Azul Zulu | | 14.0.2 | zulu | | 14.0.2-zulu
| | 13.0.4 | zulu | | 13.0.4-zulu
| | 13.0.4.fx | zulu | | 13.0.4.fx-zulu
| | 12.0.2 | zulu | | 12.0.2-zulu
| | 11.0.8 | zulu | | 11.0.8-zulu
| | 11.0.8.fx | zulu | | 11.0.8.fx-zulu
| | 10.0.2 | zulu | | 10.0.2-zulu
| | 9.0.7 | zulu | | 9.0.7-zulu
| | 8.0.265 | zulu | | 8.0.265-zulu
| | 8.0.265.fx | zulu | | 8.0.265.fx-zulu
| | 8.0.232.fx | zulu | | 8.0.232.fx-zulu
| | 8.0.202 | zulu | | 8.0.202-zulu
| | 7.0.262 | zulu | | 7.0.262-zulu
| | 7.0.181 | zulu | | 7.0.181-zulu
BellSoft | | 14.0.2.fx | librca | | 14.0.2.fx-librca
| | 14.0.2 | librca | | 14.0.2-librca
| | 13.0.2.fx | librca | | 13.0.2.fx-librca
| | 13.0.2 | librca | | 13.0.2-librca
| | 12.0.2 | librca | | 12.0.2-librca
| | 11.0.8.fx | librca | | 11.0.8.fx-librca
| | 11.0.8 | librca | | 11.0.8-librca
| | 8.0.265.fx | librca | | 8.0.265.fx-librca
| | 8.0.265 | librca | | 8.0.265-librca
GraalVM | | 20.2.0.r11 | grl | | 20.2.0.r11-grl
| | 20.2.0.r8 | grl | | 20.2.0.r8-grl
| | 20.1.0.r11 | grl | | 20.1.0.r11-grl
| | 20.1.0.r8 | grl | | 20.1.0.r8-grl
| | 20.0.0.r11 | grl | | 20.0.0.r11-grl
| | 20.0.0.r8 | grl | | 20.0.0.r8-grl
| | 19.3.1.r11 | grl | | 19.3.1.r11-grl
| | 19.3.1.r8 | grl | | 19.3.1.r8-grl
Java.net | | 16.ea.13 | open | | 16.ea.13-open
| | 15.ea.36 | open | | 15.ea.36-open
| | 14.0.2 | open | | 14.0.2-open
| | 13.0.2 | open | | 13.0.2-open
| | 12.0.2 | open | | 12.0.2-open
| | 11.0.2 | open | | 11.0.2-open
| | 10.0.2 | open | | 10.0.2-open
| | 9.0.4 | open | | 9.0.4-open
SAP | | 14.0.2 | sapmchn | | 14.0.2-sapmchn
| | 13.0.2 | sapmchn | | 13.0.2-sapmchn
| | 12.0.2 | sapmchn | | 12.0.2-sapmchn
| | 11.0.8 | sapmchn | | 11.0.8-sapmchn
================================================================================
Use the Identifier for installation:
$ sdk install java 11.0.3.hs-adpt
================================================================================
安装指定的java版本
安装jdk1.8, 版本号填写的是上图中的Identifier列
$ sdk install java 8.0.265.hs-adpt
Downloading: java 8.0.265.hs-adpt
In progress...
################################################################################################################################## 100.0%
################################################################################################################################## 100.0%
Repackaging Java 8.0.265.hs-adpt...
Done repackaging...
Cleaning up residual files...
Installing: java 8.0.265.hs-adpt
Done installing!
Setting java 8.0.265.hs-adpt as default.
同样的方式安装java 14.0.2.j9-adpt
再次查看有的java版本
$ sdk list java
================================================================================
Available Java Versions
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
AdoptOpenJDK | | 14.0.2.j9 | adpt | installed | 14.0.2.j9-adpt
| | 14.0.2.hs | adpt | | 14.0.2.hs-adpt
| | 13.0.2.j9 | adpt | | 13.0.2.j9-adpt
| | 13.0.2.hs | adpt | | 13.0.2.hs-adpt
| | 12.0.2.j9 | adpt | | 12.0.2.j9-adpt
| | 12.0.2.hs | adpt | | 12.0.2.hs-adpt
| | 11.0.8.j9 | adpt | | 11.0.8.j9-adpt
| | 11.0.8.hs | adpt | | 11.0.8.hs-adpt
| | 8.0.265.j9 | adpt | | 8.0.265.j9-adpt
| >>> | 8.0.265.hs | adpt | installed | 8.0.265.hs-adpt
- 已经安装的会显示
installed - 正在使用的会显示
>>>
切换java的版本
$ sdk use java 8.0.265.hs-adpt
Using java version 8.0.265.hs-adpt in this shell.
查看java的版本
$ java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.265-b01, mixed mode)
- 切换版本仅在当前shell有效, 新打开的终端会使用默认的java版本
- 可以通过设置默认版本, 使新终端也是相同的java版本
设置默认版本
$ sdk default java 8.0.265.hs-adpt
Default java version set to 8.0.265.hs-adpt
TODO 另外两种java版本管理调研
java多版本管理的更多相关文章
- Java-JRE:JRE百科
ylbtech-Java-JRE:JRE百科 JRE是Java Runtime Environment缩写,指Java运行环境,是Sun的产品.运行JAVA程序所必须的环境的集合,包含JVM标准实现及 ...
- Gradle实战(01)--介绍与安装
前言 本章你将学习到 Gradle的介绍 Gradle的安装 Gradle的hello world 1 Gradle的介绍 Gradle是专注于灵活性和性能的开源构建自动化工具 Gradle构建脚本是 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- Java开发学习(三十一)----Maven属性与版本管理
一.属性 1.1 问题分析 如下图所示 你会发现,如果现在想更新Spring的版本,你会发现依然需要更新多个jar包的版本,这样的话还是有可能出现漏改导致程序出问题,而且改起来也是比较麻烦. 问题清楚 ...
- Java Maven项目之Nexus私服搭建和版本管理应用
转载自:https://cloud.tencent.com/developer/article/1010603 1.Nexus介绍 Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓 ...
- linux下java版本管理工具jenv使用介绍
不同的项目使用的java版本不同,每次切换时都需要手动去修改java的环境变量,麻烦至极. jenv可以管理java版本,轻松实现管理多个java的问题. 一.下载jenv $ git clone h ...
- Java豆瓣电影爬虫——小爬虫成长记(附源码)
以前也用过爬虫,比如使用nutch爬取指定种子,基于爬到的数据做搜索,还大致看过一些源码.当然,nutch对于爬虫考虑的是十分全面和细致的.每当看到屏幕上唰唰过去的爬取到的网页信息以及处理信息的时候, ...
- Java新人学习(li)
一.项目中搭配使用SVN和Git 安装SVN:安装熟悉Git:安装maven,修改setting.xml文件:安装eclipse,配置jdk.maven路径: 建立自己的Git仓库,熟悉常用的Git命 ...
- Java开发面试总结
Java开发面试总结.. ----------------------- java 基础知识点这一块: 1.面向对象的三大特征.(继承,封装,多态) 1.1 在什么样的场合下面会使用到继承 1.2 什 ...
随机推荐
- JAVA三种多线程实现方法和应用总结
最近在做代码优化时学习和研究了下JAVA多线程的使用,看了菜鸟们的见解后做了下总结.1.JAVA多线程实现方式JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用Exe ...
- JavaScript学习系列博客_28_JavaScript 数组去重
数组去重 var arr = [1,2,3,2,2,1,3,4,2,5]; //去除数组中重复的数字 //获取数组中的每一个元素 for(var i=0 ; i<arr.length ; i++ ...
- python基础 Day13
python Day13 匿名函数(一句话函数,比较简单的函数) func=lambda a,b:a+b print(func(1,2)) ###结果:3 func=lambda a:(a[0],a[ ...
- Istio 网络弹性 实践 之 故障注入 和 调用超时
网络弹性介绍 网络弹性也称为运维弹性,是指网络在遇到灾难事件时快速恢复和继续运行的能力.灾难事件的范畴很广泛,比如长时间停电.网络设备故障.恶意入侵等. 超时时间 工作中常常会碰到这样的开发.测试场景 ...
- Java中校验身份证号合法性(真伪),获取出生日期、年龄、性别、籍贯
开发过程中有用的身份证号的业务场景,那么校验身份证的合法性就很重要了,另外还有通过身份证获取出生日期.年龄.性别.籍贯等信息, 下面是本人在开发中用到的关于校验身份证真伪的工具类,可以直接拿来使用,非 ...
- latex:公式的序号
1.排序单位 在文类book或report中,行间公式是以章为排序单位的,即每一新章节开始,公式序号计数器equation就被清零.比如第1章第3个公式的序号是(1.3),第2章第1个公式的序号是(2 ...
- 牛客网PAT练兵场-统计同成绩学生
题解:开100的数组,进行存储人数,方便查询 题目地址:https://www.nowcoder.com/questionTerminal/3df4810cc0664b8bb848d785f68f7c ...
- OMG,12 个精致的 Java 字符串操作小技巧,学它
字符串可以说是 Java 中最具有代表性的类了,似乎没有之一哈,这就好像直播界的李佳琪,脱口秀中的李诞,一等一的大哥地位.不得不承认,最近吐槽大会刷多了,脑子里全是那些段子,写文章都有点不由自主,真的 ...
- spring mvc 国际化的几种方案
spring mvc 国际化的几种方案 首先配置我们项目的service-servlet.xml文件添加的内容如下: <bean id="messageSource" cla ...
- 用python导入20个G的json数据到Mysql数据库
整体思路参考资料:https://blog.csdn.net/layman2016/article/details/79252499 作业:有一个16个G的跟疫情相关的json新闻大数据(articl ...