成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java升級那么快,多個版本如何靈活切換和管理?

開發(fā) 后端
配置單個 Java 環(huán)境變量本身沒什么技術(shù)含量可言,但當(dāng)需要管理多個 Java 版本,重復(fù)配置環(huán)境變量顯然是非常枯燥的,按照傳統(tǒng)的配置方式我們又不能靈活的切換 Java 版本。那要如何輕松管理與使用多個版本 Java?

前言

近兩年,Java 版本升級頻繁,感覺剛剛掌握 Java8,寫本文時,已聽到 java14 的消息,無論是嘗鮮新特性(Java12 中 Collectors.teeing 超強(qiáng)功能使用),還是由于項目升級/兼容需要,我們可能都要面臨管理多個 Java 版本的情

另外 Oracle 自 Java11 開始,更改了用戶協(xié)議,任何商用都會收費。在寫本文時,得到消息「微軟宣布加入 OpenJDK」,打不過就選擇 OpenJDK。隨便 G 一下,當(dāng)個故事了解就可以

配置單個 Java 環(huán)境變量本身沒什么技術(shù)含量可言,但當(dāng)需要管理多個 Java 版本,重復(fù)配置環(huán)境變量顯然是非常枯燥的,按照傳統(tǒng)的配置方式我們又不能靈活的切換 Java 版本。

那要如何輕松管理與使用多個版本 Java?

多版本 Java 管理

顯然我們不是第一個有這種困境的人,我所知道的現(xiàn)有方案有三種:

  1. Jabba
  2. jenv
  3. sdkman

本文主要說明如何通過 sdkman 打破我們面臨的困境,幫助我們靈活配置與使用 Java

sdkman 介紹

SDKMAN 是一個用于在大多數(shù)基于 Unix 系統(tǒng)上管理 多個軟件開發(fā)工具包 (Java, Groovy, Scala, Kotlin and Ceylon. Ant, Gradle 等) 的并行版本的工具 。

它提供了一個方便的命令行接口 (CLI) 和 API,用于安裝切換刪除列出候選對象。本文主要通過管理 Java 來說明 sdkman 的使用

sdkman 安裝

在類 unix 平臺上安裝 sdkman 非常容易。它可以順利的安裝在Mac OSX、Linux、WLS、Cygwin、Solaris和FreeBSD 上,同時還支持Bash和 ZSH shell。

只需打開一個新終端機(jī)并輸入:

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

按照相應(yīng)的指令提示,完成相應(yīng)的操作后繼續(xù)輸入:

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

到這里我們就可以驗證 sdk 的安裝版本了:

  1. $ sdk version 

 

上圖紅色框標(biāo)記顯示我當(dāng)前 sdkman 的版本,每次執(zhí)行 sdk version 命令時,都會檢查是否會有新版本,如果要更新輸入 y 就可以

有些系統(tǒng)發(fā)行版本不包含 zipunzip,如果安裝時遇到相關(guān)錯誤,可以輸入如下命令安裝 zipunzip

  1. $ sudo apt-get install zip unzip 

從上面的安裝命令上可以看出,sdkman 默認(rèn)的安裝路徑是在$HOME/.sdkman 下,我們也可以自定義安裝路徑,只需要指定 SDKMAN_DIR 變量值就好了:

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

到這里 sdkman 的安裝就結(jié)束了,我們來看看如何使用

sdkman 使用教程

命令行下學(xué)習(xí)一個新玩意當(dāng)然是查看它的 help 命令,輸入:

  1. $ sdkman help 

 

感覺上圖按顏色區(qū)分內(nèi)容后,sdkman 的使用說明也就結(jié)束了,我們按照上面的圖來詳細(xì)說明一下使用教程

sdk list

先來輸入:

  1. $ sdk list 

 

綠色的標(biāo)記就是 sdkman 集成的所有可用的 candidate,通過按回車「enter」按鍵,會看到更多可用 candidate

我們指定 candidate,輸入:

  1. $ sdk list java 

 

從上圖中可以看到所有 java 可用的版本 version,以及標(biāo)識 indentifier,以及狀態(tài) status,我已經(jīng)安裝了 java 12 和 11

有了這些信息做鋪墊,我們可以安裝任意 sdkman 內(nèi)置的軟件開發(fā)包了,繼續(xù)以 java 為例

sdk install

回看 sdkman help 命令的輸出,使用 install 命令,我們再安裝一個 Java 最新 13.0.1.j9 版本

 

從上圖你可以看出,綠色標(biāo)記的內(nèi)容是 list 命令結(jié)果中的 version 值,但是報錯不可用,輸入indentifier 編號才能正常下載,這里需要注意

安裝完后,status 就會編程 installed 狀態(tài)

sdk current

當(dāng)安裝多個版本的 java 時,我們輸入下面命令獲取當(dāng)前正在用 candidate 的版本

  1. $ sdk current java 

 

sdk use

了解了當(dāng)前使用版本,如果我們想切換到其他版本, 可以輸入:

  1. $ sdk use java 12.0.2.j9-adpt 

注意⚠️: 這里同樣是指定的 indentifier 的值

sdk default

如果我們想指定某個版本為默認(rèn)版本,可以輸入:

  1. $ sdk default java jdk1.8.0_162.jdk 

注意⚠️: 這里同樣是指定的 indentifier 的值

 

sdk uninstall

當(dāng)我們想卸載某個版本可以輸入:

  1. $ sdk default java jdk1.8.0_162.jdk 

注意⚠️: 這里同樣是指定的 indentifier 的值

sdk upgrade

如果我們想升級某個 candidate,可以輸入:

  1. $ sdk upgrade java 

sdk flush

使用 sdkman 時間變長也會慢慢產(chǎn)生很多緩存內(nèi)容,我們可以輸入
清理廣播消息:

  1. $ sdk flush broadcast 

清理下載的 sdk 二進(jìn)制文件(長時間使用后清理,可以節(jié)省出很多空間):

  1. $ sdk flush archives 

清理臨時文件內(nèi)容:

  1. $ sdk flush temp  

到這里 sdkman 的基本使用就已經(jīng)介紹完了,其實這些命令都不用急,想不起來的時候執(zhí)行 sdk help 來臨時查看一下就好

sdkman 卸載

如果我們不喜歡 sdkman 了,我們也可以輕松的卸載掉它:

  1. $ tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman $ rm -rf ~/.sdkman 

最后打開你的 .bashrc、.bash_profile 和/或者 .profile,找到并刪除下面這幾行。

  1. #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 文件刪除掉上面內(nèi)容即可

到這里基于 Unix 系統(tǒng)的,有關(guān) sdkman 的安裝,使用及下載都已經(jīng)介紹完了,可以上手試一試了,相信很多小伙伴用的是 Windows,除了 jenv, sdkman 和 Jabba 都有 windows 用戶的解決方案:

sdkman windows 解決方案

在 sdkman 官網(wǎng)首頁同樣為 windows 用戶提供了解決方案,小伙伴們找到如下位置查看即可

 

我看了一下過程,也是很簡單,由于手頭沒有 windows 電腦,這個請小伙伴們自行嘗試吧。

靈魂追問

  1. 你現(xiàn)在用的 Java 版本是多少?
  2. 有跟隨新版本嘗試更多新特性嗎?
  3. 你的燈還亮著嗎?

 

責(zé)任編輯:龐桂玉 來源: segmentfault
相關(guān)推薦

2018-08-27 10:24:03

UbuntuPHP版本

2023-06-08 18:25:40

Doris場景查詢

2021-06-09 09:32:58

Esbuild 工具前端

2013-11-11 16:20:01

戴爾

2019-10-12 08:53:26

Redis多線程版本

2021-12-10 23:53:04

手機(jī)電池工具

2011-09-09 12:45:18

無線網(wǎng)絡(luò)安全有線局域網(wǎng)

2022-01-10 09:42:37

6G5G網(wǎng)絡(luò)

2018-07-11 15:08:35

2022-07-15 10:46:10

WindowsNodeJs版本

2021-09-29 19:16:07

前端React配置

2010-01-14 14:55:14

C++編譯器

2019-02-25 18:54:14

ERP云端遷移

2021-02-06 07:04:24

Linux運維Linux系統(tǒng)

2020-05-21 09:17:51

Vue 3Vue代碼

2011-06-13 10:07:56

機(jī)房布線管理配線架配線架

2022-05-18 08:05:20

pyenvPython解釋器

2017-11-13 09:20:19

技術(shù)程序員淘汰

2020-07-29 08:06:30

Kafka MQ消息

2023-10-15 12:23:10

單線程Redis
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲一区免费 | 久久九 | 在线看av网址 | 在线视频一区二区三区 | 91精品久久久 | 精品动漫一区 | 精品欧美色视频网站在线观看 | 一本一道久久a久久精品综合 | 男女视频在线观看 | 亚洲精品一区中文字幕乱码 | 在线播放日韩 | 午夜影院在线观看 | 国产精品久久久久无码av | 久久国产精品-国产精品 | 99视频久 | 亚洲综合无码一区二区 | 欧美阿v | 成人在线欧美 | 日本精品裸体写真集在线观看 | 伊人看片 | 久久久久亚洲精品 | 久久久久国产一区二区三区四区 | 99精品一区二区三区 | 欧美一区二区三区在线视频 | 久久久久久国产精品免费免费狐狸 | 婷婷久久久久 | 欧美亚洲国产日韩 | 嫩草视频在线免费观看 | 国产精品视频免费观看 | 亚洲bt 欧美bt 日本bt | 91大神在线看 | 久久久av| 999国产精品视频 | 欧美亚洲国产一区二区三区 | 成人欧美一区二区三区黑人孕妇 | 97av视频 | 免费精品| 激情 亚洲 | 孕妇一级毛片 | 久久亚洲精品久久国产一区二区 | 人人人人干|