首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

Java升级那么快,多个版本如何灵活切换和管理?

2019-12-19

近两年,Java 版别晋级频频,感觉刚刚把握 Java8,写本文时,已听到 java14 的音讯,无论是尝鲜新特性,仍是因为项目晋级/兼容需求,咱们或许都要面对办理多个 Java 版别的情

别的 Oracle 自 Java11 开端,更改了用户协议,任何商用都会收费。在写本文时,得到音讯「微软宣告参加 OpenJDK」,打不过就挑选 OpenJDK。随意 G 一下,当个故事了解就能够

装备单个 Java 环境变量自身没什么技能含量可言,但当需求办理多个 Java 版别,重复装备环境变量明显是十分单调的,依照传统的装备方法咱们又不能灵敏的切换 Java 版别

那要怎么轻松办理与运用多个版别 Java?

明显咱们不是第一个有这种窘境的人,我所知道的现有计划有三种:

本文首要阐明怎么经过 sdkman 打破咱们面对的窘境,协助咱们灵敏装备与运用 Java

SDKMAN 是一个用于在大多数根据 Unix 体系上办理 多个软件开发东西包 的并行版别的东西 。

它供给了一个便利的指令行接口 和 API,用于 装置 、 切换 、 删去 和 列出候选目标 。本文首要经过办理 Java 来阐明 sdkman 的运用

在类 unix 平台上装置 sdkman 十分简单。它能够顺畅的装置在Mac OSX、Linux、WLS、Cygwin、Solaris和FreeBSD 上,一起还支撑Bash和 ZSH shell。

只需翻开一个新终端机并输入:

$ curl -s https://get.sdkman.io | bash

依照相应的指令提示,完结相应的操作后持续输入:

$ source $HOME/.sdkman/bin/sdkman-init.sh 

到这儿咱们就能够验证 sdk 的装置版别了:

$ sdk version

上图赤色框符号显现我当时 sdkman 的版别,每次履行 sdk version 指令时,都会检查是否会有新版别,假如要更新输入 y 就能够

有些体系发行版别不包括 zip 和 unzip ,假如装置时遇到相关过错,能够输入如下指令装置 zip 和 unzip

$ sudo apt-get install zip unzip

从上面的装置指令上能够看出,sdkman 默许的装置途径是在 $HOME/.sdkman 下,咱们也能够自定义装置途径,只需求指定 SDKMAN_DIR 变量值就好了:

$ export SDKMAN_DIR= /usr/local/sdkman curl -s https://get.sdkman.io | bash

到这儿 sdkman 的装置就完毕了,咱们来看看怎么运用

指令行下学习一个新玩意当然是检查它的 help 指令,输入:

$ sdkman help

感觉上图按色彩区别内容后,sdkman 的运用阐明也就完毕了,咱们依照上面的图来具体阐明一下运用教程

先来输入:

$ sdk list

绿色的符号便是 sdkman 集成的一切可用的 candidate,经过按回车「enter」按键,会看到更多可用 candidate

咱们指定 candidate,输入:

$ sdk list java

从上图中能够看到一切 java 可用的版别 version,以及标识 indentifier,以及状况 status,我现已装置了 java 12 和 11

有了这些信息做衬托,咱们能够装置恣意 sdkman 内置的软件开发包了,持续以 java 为例

回看 sdkman help 指令的输出,运用 install 指令,咱们再装置一个 Java 最新 13.0.1.j9 版别

从上图你能够看出,绿色符号的内容是 list 指令成果中的 version 值,可是报错不可用,输入 indentifier 编号才干正常下载,这儿需求留意

装置完后,status 就会编程 installed 状况

当装置多个版别的 java 时,咱们输入下面指令获取当时正在用 candidate 的版别

$ sdk current java

了解了当时运用版别,假如咱们想切换到其他版别, 能够输入:

$ sdk use java 12.0.2.j9-adpt

留意:warning:: 这儿相同是指定的 indentifier 的值

假如咱们想指定某个版别为默许版别,能够输入:

$ sdk default java jdk1.8.0_162.jdk

留意:warning:: 这儿相同是指定的 indentifier 的值

当咱们想卸载某个版别能够输入:

$ sdk uninstall java 12.0.2.j9-adpt

留意:warning:: 这儿相同是指定的 indentifier 的值

假如咱们想晋级某个 candidate,能够输入:

$ sdk upgrade java

运用 sdkman 时刻变长也会渐渐发生许多缓存内容,咱们能够输入

整理播送音讯:

$ sdk flush broadcast

整理下载的 sdk 二进制文件:

$ sdk flush archives

整理暂时文件内容:

$ sdk flush temp

到这儿 sdkman 的根本运用就现已介绍完了,其实这些指令都不必急,想不起来的时分履行 sdk help 来暂时检查一下就好

假如咱们不喜欢 sdkman 了,咱们也能够轻松的卸载掉它:

$ tar zcvf ~/sdkman-backup_$.tar.gz -C ~/ .sdkman
$ rm -rf ~/.sdkman

最终翻开你的 .bashrc、.bash_profile 和/或许 .profile,找到并删去下面这几行。

#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 

我用的 zshrc,找到 .zshrc 文件删去掉上面内容即可

到这儿根据 Unix 体系的,有关 sdkman 的装置,运用及下载都现已介绍完了,能够上手试一试了,信任许多小伙伴用的是 Windows,除了 jenv, sdkman 和 Jabba 都有 windows 用户的解决计划:

在 sdkman 官网主页相同为 windows 用户供给了解决计划,小伙伴们找到如下方位检查即可

我看了一下进程,也是很简单,因为手头没有 windows 电脑,这个请小伙伴们自行测验吧,有问题欢迎留言

欢迎重视我的大众号 「日拱一兵」,兴趣原创解析Java技能栈问题,将复杂问题简单化,将笼统问题图形化落地

假如对我的专题内容感兴趣,或抢先看更多内容,欢迎拜访我的博客 dayarch.top

热门文章

随机推荐

推荐文章