跳到主要內容

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

前言


近兩年,Java 版本升級頻繁,感覺剛剛掌握 Java8,寫本文時,已聽到 java14 的消息,無論是嘗鮮新特性(),還是由於項目升級/兼容需要,我們可能都要面臨管理多個 Java 版本的情



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



配置單個 Java 環境變量本身沒什麼技術含量可言,但當需要管理多個 Java 版本,重複配置環境變量顯然是非常枯燥的,按照傳統的配置方式我們又不能靈活的切換 Java 版本


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


多版本 Java 管理


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







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


sdkman 介紹


SDKMAN 是一個用於在大多數基於 Unix 系統上管理 多個軟件開發工具包 (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。


只需打開一個新終端機並輸入:


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

按照相應的指令提示,完成相應的操作後繼續輸入:


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

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


$ sdk version


上圖紅色框標記显示我當前 sdkman 的版本,每次執行 sdk version 命令時,都會檢查是否會有新版本,如果要更新輸入 y 就可以


有些系統發行版本不包含 zipunzip,如果安裝時遇到相關錯誤,可以輸入如下命令安裝 zipunzip


$ 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 的安裝就結束了,我們來看看如何使用


sdkman 使用教程


命令行下學習一個新玩意當然是查看它的 help 命令,輸入:


$ sdkman help


感覺上圖按顏色區分內容后,sdkman 的使用說明也就結束了,我們按照上面的圖來詳細說明一下使用教程


sdk list


先來輸入:


$ sdk list


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


我們指定 candidate,輸入:


$ sdk list java


從上圖中可以看到所有 java 可用的版本 version,以及標識 indentifier,以及狀態 status,我已經安裝了 java 12 和 11


有了這些信息做鋪墊,我們可以安裝任意 sdkman 內置的軟件開發包了,繼續以 java 為例


sdk install


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



從上圖你可以看出,綠色標記的內容是 list 命令結果中的 version 值,但是報錯不可用,輸入indentifier 編號才能正常下載,這裏需要注意


安裝完后,status 就會編程 installed 狀態


sdk current


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


$ sdk current java


sdk use


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


$ sdk use java 12.0.2.j9-adpt

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


sdk default


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


$ sdk default java jdk1.8.0_162.jdk

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



sdk uninstall


當我們想卸載某個版本可以輸入:


$ sdk uninstall java 12.0.2.j9-adpt

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


sdk upgrade


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


$ sdk upgrade java

sdk flush


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


$ sdk flush broadcast

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


$ sdk flush archives

清理臨時文件內容:


$ sdk flush temp

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


sdkman 卸載


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


$ tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).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 解決方案


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



我看了一下過程,也是很簡單,由於手頭沒有 windows 電腦,這個請小夥伴們自行嘗試吧,有問題歡迎留言


靈魂追問



  1. 你現在用的 Java 版本是多少?

  2. 有跟隨新版本嘗試更多新特性嗎?

  3. 你的燈還亮着嗎?



    歡迎持續關注公眾號:「日拱一兵」



    • 前沿 Java 技術乾貨分享

    • 高效工具匯總 | 回復「工具」

    • 面試問題分析與解答

    • 技術資料領取 | 回復「資料」





以讀偵探小說思維輕鬆趣味學習 Java 技術棧相關知識,本着將複雜問題簡單化,抽象問題具體化和圖形化原則逐步分解技術問題,技術持續更新,請持續關注......



本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線



※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益



※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象



南投搬家前需注意的眉眉角角,別等搬了再說!



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

留言

這個網誌中的熱門文章

Python 併發總結,多線程,多進程,異步IO

1 測量函數運行時間 import time def profile(func): def wrapper(*args, ** kwargs): import time start = time.time() func( *args, ** kwargs) end = time.time() print ' COST: {} ' .format(end - start) return wrapper @profile def fib(n): if n<= 2 : return 1 return fib(n-1) + fib(n-2 ) fib( 35 )   2 啟動多個線程,並等待完成   2.1 使用threading.enumerate() import threading for i in range(2 ): t = threading.Thread(target=fib, args=(35 ,)) t.start() main_thread = threading.currentThread() for t in threading.enumerate(): if t is main_thread: continue t.join()   2.2 先保存啟動的線程 threads = [] for i in range(5 ): t = Thread(target=foo, args= (i,)) threads.append(t) t.start() for t in threads: t.join()   3 使用信號量,限制同時能有幾個線程訪問臨界區 from threading import Semaphore import time sema = Semaphor...

韋伯連續劇終於更新 期待第一季順利完結

  地球天文學界的跳票大王詹姆斯·韋伯空間望遠鏡 (James Webb Space Telescope,縮寫為 JWST)自 1996 年以來斷斷續續不按劇本演出的連續劇終於讓焦慮的觀眾們又等到了一次更新:五層遮陽罩測試順利完成。 裝配完成的韋伯望遠鏡與好夥伴遮陽罩同框啦。Credit: NASA   嚴格的測試是任何空間任務順利成功的重中之重。遮陽罩,這個韋伯望遠鏡異常重要的親密夥伴,要是無法正常運轉的話,韋伯的這一季天文界連續劇說不準就要一直拖更了。   詹姆斯·韋伯空間望遠鏡是歷史上造出的最先進的空間望遠鏡。它不僅是一架紅外望遠鏡,還具有特別高的靈敏度。但想要達到辣么高的靈敏度來研究系外行星和遙遠的宇宙童年,韋伯童鞋必須非常"冷靜",體溫升高的話,靈敏度會大大折損。這個時候,遮陽罩就要大顯身手啦。   遮陽罩在韋伯的設計中至關重要。韋伯望遠鏡會被發射到拉格朗日 L2 點,運行軌道很高,遠離太陽、地球與月球。太陽是韋伯的主要熱量干擾的來源,其次是地球與月球。遮陽罩會有效阻斷來自這三大熱源的能量並保護韋伯維持在工作溫度正常運轉。這個工作溫度指的是零下 220 攝氏度(-370 華氏度;50 開爾文)。 上圖中我們可以看出,韋伯望遠鏡的配置大致可分為兩部分:紅色較熱的一面溫度為 85 攝氏度,藍色較冷的一面溫度達到零下 233 攝氏度。紅色的這部分中,儀器包括太陽能板、通信設備、計算機、以及轉向裝置。藍色部分的主要裝置包括鏡面、探測器、濾光片等。Credit: STSci.   遮陽罩的那一部分和望遠鏡的鏡面這部分可以產生非常極端的溫差。遮陽的這面溫度可以達到 110 攝氏度,足以煮熟雞蛋,而背陰處的部分溫度極低,足以凍結氧氣。   工程師們剛剛完成了五層遮陽罩的測試,按照韋伯在 L2 時的運行狀態安裝了遮陽罩。L2 距離地球約 160 萬公里。NASA 表示這些測試使用了航天器的自帶系統來展開遮陽罩,測試目前都已成功完成。韋伯望遠鏡遮陽罩負責人 James Cooper 介紹說這是遮陽罩"第一次在望遠鏡系統的电子設備的控制下展開。儘管這個任務非常艱巨,難度高,但測試順利完成,遮陽罩展開時的狀態非常驚艷"。   遮陽罩由五層 Kapton 製成。Kapton 是一種聚酰亞胺薄膜材料, 耐高溫絕...

LINE 發票管家「一鍵分享發票」新功能,聚餐AA更好算帳

» » LINE 發票管家「一鍵分享發票」新功能,聚餐AA更好算帳 消費明細好清楚,不怕算錯錢啦! by in , 讀取中... 之前介紹過的「LINE 發票管家」,除了能對統一發票、管理消費紀錄,現在還能分享消費明細給其他朋友囉!趕快來看看該如何分享吧!讓大家在聚餐過後,不用再截圖、拍照把消費明細記錄下來分享到 LINE 好友群組,只要用 LINE發票管家就可以隨時一鍵分享消費明細,包括店家、消費時間、消費項目、金額通通都有,聚餐 AA 也更好算帳。 LINE 發票管家「一鍵分享發票」新功能,聚餐AA更好算帳 朋友聚餐完,經常會先由其中一位買單再事後收帳,不過難免擔心忘記拍照紀錄下消費明細,導致算帳變得很麻煩。但是,現在只要用 LINE發票管家,不僅能將發票存入載具後直接匯入發票,進而更方便管理每月的消費情況,現在還能用它來分享消費明細到 LINE 聊天室,不需要截圖,整個流程超級簡單! ▲圖片來源: 當使用 LINE發票管家並且綁定載具後,只要日常消費有將發票存入載具就通通會自動匯入 LINE發票管家。如果想暸解自己近期的消費情況,也能在 LINE發票管家點選「發票明細」查詢所有消費紀錄。 *小提醒:存入手機條碼的發票,待財政部 1-2 日作業時間將發票資料匯入後, 打開單筆消費後分享到指定對象或群組。 像是朋友聚餐或其它購物消費,就能在 LINE發票管家查看每一筆消費的所有消費明細,每一項餐點的項目、價格通通一目了然。如果想將該筆消費內容分享給好友收帳,只要點選該筆消費明細後,接著點選畫面右上角的「分享」按鈕。 網頁設計 最專業,超強功能平台可客製,窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機,請問 台中電動車 哪裡在賣比較便宜可以到台中景泰電動車門市去看看總店:臺中市潭子區潭秀里雅潭路一段102-1號。 電動車補助 推薦評價好的 iphone維修 中心擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢住家的頂樓裝 太陽光電 聽說可發揮隔熱功效一線推薦東陽能源擁有核心技術、...