前言:近兩年,Java 版本升級頻繁,感覺剛剛掌握Java8,寫本文時,已聽到java14 的消息,無論是嚐鮮新特性(Java12 中Collectors.teeing 超強功能使用),還是由於項目升級/相容需要,我們可能都要面臨管理多個Java 版本的情況。
另外 Oracle 自 Java11 開始,更改了使用者協議,任何商用都會收費。寫本文時,得到訊息「微軟宣布加入 OpenJDK」,打不過就選擇 OpenJDK。隨便G 一下,當個故事了解就可以
(推薦影片:#java影片教學##)
#配置單一Java 環境變數本身沒什麼技術含量可言,但當需要管理多個Java 版本,重複配置環境變數顯然是非常枯燥的,按照傳統的配置方式我們又不能靈活的切換Java 版本
那要如何輕鬆管理與使用多個版本Java?
多重版本Java 管理
顯然我們不是第一個有這種困境的人,我所知道的現有方案有三種:● Jabba● jenv● sdkman
本文主要說明如何透過sdkman
打破我們面臨的困境,幫助我們靈活配置與使用Javasdkman 介紹
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
sdk version
$ sudo apt-get install zip unzip
$ export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash
到這裡sdkman 的安裝就結束了,我們來看看如何使用
sdkman 使用教程命令列下學習一個新玩意當然是查看它的help指令,輸入:
$ sdkman help sdk help[object Object]
感覺上圖按顏色區分內容後,sdkman 的使用說明也就結束了,我們按照上面的圖來詳細說明一下使用教學
##sdk list
$ sdk list sdk list[object Object]
我們指定candidate,輸入:
$ sdk list java sdk list java[object Object]
從上圖中可以看到所有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 current java
$ sdk use java 12.0.2.j9-adpt
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 的安装,使用及下载都已经介绍完了,可以上手试一试了
本文来自php中文网,java教程栏目,欢迎学习!
以上是搞定多個java版本的靈活切換與管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!