新 Mac 如何優雅地配置 Java 開發環境
宣告:不適用於 M1 晶片的 Mac 系列。
無論你是一名 Javaer 新手還是老兵,只要給你臺新 Mac 總少不了折騰一下 Java 開發環境。那麼問題來了:現在都 2020 年了,如何在初始化 Java 開發環境時你能愉快地去喝咖啡。看完這篇文章,希望可以解決你的困惑,那就開始吧。
本文分為三部分:準備工具,安裝配置 JDK,安裝開發工具。
準備
首先,在你的 Mac 上安裝軟體管理神器 ——> Homebrew。
關於 Homebrew 就不做介紹了,有興趣照著官網練習一遍就會了。安裝 Homebrew 的條件很簡單:命令列直接複製如下命令即可。
/bin/bash -c
“
$(
curl -fsSL https://raw。githubusercontent。com/Homebrew/install/master/install。sh
)
”
當然,執行上述命令需要可以正常地訪問 GitHub 的關聯網站才能完成安裝。
Have fun !安裝過程中去倒杯咖啡吧 ……
==> Next steps:
- Run `brew help` to get started
- Further documentation:
https://docs。brew。sh
看到上面這一句時,準備工作就完成了。我們繼續 ——
安裝並配置 JDK
自 Oracle 將 JDK 許可協議從 BCL 換成了 OTN 之後,生產環境就要慎用 Oracle JDK 了,以免法律糾紛。老版本 JDK 的後續支援補丁也成了問題,詳情戳下面的連結吧,這裡就不展開了。
從 2018 年開始,我們也逐漸切換到 OpenJDK 版本上開發和生產環境部署。所以這裡,建議開發機可以安裝的 OpenJDK 版本為:openjdk@8 和 openjdk@11 。儘管現在都2020年了,但大部分公司依然很有可能生產上還是以 JDK 8 為主。
那麼,
為什麼也推薦了 openjdk@11 呢?首先,LTS 版本避雷必備;其次,JDK 8 釋出於2014年,時隔4年拋開中間的
兩個非LTS版本,
JDK 11 釋出於2018年。帶來了諸多穩定的新特性,完美甩開
歷史包袱,GC方面引來了 ZGC,預設GC演算法改用 G1 。
安裝 OpenJDK
brew search openjdk
brew search openjdk
之後,你就會出現上圖中的情況。
我們看一下 openjdk@8 的安裝描述資訊,`brew info openjdk@8`。
基於 brew 安裝 openjdk@8 需要依賴的其他 package
openjdk@8 現階段的安裝統計相關資訊
廢話不多說了,直接安裝:
brew install openjdk@8
。安裝時間,取決於網速的快慢。
➜ ~ brew install openjdk@8
Updating Homebrew。。。
Warning: You are using macOS 11。0。
==> Downloading https://homebrew。bintray。com/bottles/openjdk%408-1。8。0%2B275。big_sur。bottle。tar。gz
==> Downloading from https://d29vzk4ow07wi7。cloudfront。net/b37ae302878e8bdbfaaa9eb085c7315bef27c09fee834c1e43a7540b2b986d5a?response-content-disposition
######################################################################## 100。0%
==> Pouring openjdk@8-1。8。0+275。big_sur。bottle。tar。gz
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /usr/local/opt/openjdk@8/libexec/openjdk。jdk /Library/Java/JavaVirtualMachines/openjdk-8。jdk
openjdk@8 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula。
If you need to have openjdk@8 first in your PATH run:
echo ‘export PATH=“/usr/local/opt/openjdk@8/bin:$PATH”’ >> ~/。zshrc
For compilers to find openjdk@8 you may need to set:
export CPPFLAGS=“-I/usr/local/opt/openjdk@8/include”
==> Summary
/usr/local/Cellar/openjdk@8/1。8。0+275: 742 files, 192。9MB
如上所述,
openjdk@8
就安裝好了。順便再安裝下
openjdk@11
吧。
配置 JDK
Mac 下如果讓你安裝的JDK 生效及可識別需要如下幾步操作。
⛽️執行如下命令
sudo ln -sfn /usr/local/opt/openjdk@8/libexec/openjdk。jdk /Library/Java/JavaVirtualMachines/openjdk-8。jdk
✊檢查 `tree /Library/Java`
➜ ~ tree /Library/Java
/Library/Java
├── Extensions
└── JavaVirtualMachines
└── openjdk-8。jdk -> /usr/local/opt/openjdk@8/libexec/openjdk。jdk
執行`/usr/libexec/java_home`
➜ ~ /usr/libexec/java_home
/usr/local/Cellar/openjdk@8/1。8。0+272/libexec/openjdk。jdk/Contents/Home
到這裡基本配置好了,看下安裝的 Java 版本吧。
➜ ~ java -version
openjdk version “1。8。0_275”
OpenJDK Runtime Environment (build 1。8。0_275-bre_2020_11_16_15_09-b00)
OpenJDK 64-Bit Server VM (build 25。275-b00, mixed mode)
JDK的參考連結,可以看這裡
OpenJDK
JDK from Oracle
Archived OpenJDK GA Releases 可直接下載 OpenJDK 的 MacOS 版
開OpenJDK Archive發工具 IDEA
IDEA CE 版就夠了
16 年前,寫 Java 還是用 Eclipse;16年後,就全面切換 IDEA 了,它真的太 Intelligent 了!
其他工具就不推薦了,用它,就用它。
新手手頭緊張,社群版就夠用了。老兵,覺得它不錯就訂閱走一波,當然還有萬能的淘寶,還有XX各種破解,這裡就不推薦了。一句話,如果你是一名從業者不尊重別人的勞動成果,出來混的總會要還的,時間也是要成本的。
最後
迴歸主題,既然說優雅地配置 Java 開發環境,那就需要滿足兩個條件:
可以乾淨地解除安裝 一條命令,世界就安靜了。
brew uninstall openjdk@8
快速地切換版本
快速切換版本就留個思考題吧,
2021-03-31 更新,很多人問到說如何切換JDK版本呢?
切換版本
以當前已安裝的JDK版本為例,一共安裝了1。8和11。
➜ ~ tree /Library/Java
/Library/Java
├── Extensions
└── JavaVirtualMachines
├── openjdk-11。jdk -> /usr/local/opt/openjdk@11/libexec/openjdk。jdk
└── openjdk-8。jdk -> /usr/local/opt/openjdk@8/libexec/openjdk。jdk
4 directories, 0 files
設定 JAVA_HOME
/usr/libexec/java_home
可以指定JDK版本,如下:
➜ ~ /usr/libexec/java_home -v1。8
/usr/local/Cellar/openjdk@8/1。8。0+282/libexec/openjdk。jdk/Contents/Home
➜ ~ /usr/libexec/java_home -v11
/usr/local/Cellar/openjdk@11/11。0。9/libexec/openjdk。jdk/Contents/Home
基於此特性我們可以採用如下策略:
export JAVA_HOME=$(/usr/libexec/java_home -v11)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1。8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
alias java8=‘export JAVA_HOME=$JAVA_8_HOME’
alias java11=‘export JAVA_HOME=$JAVA_11_HOME’
至此基於alias就可以實現一個 Terminal 例項下的JDK版本切換。