宣告:不適用於 M1 晶片的 Mac 系列。

無論你是一名 Javaer 新手還是老兵,只要給你臺新 Mac 總少不了折騰一下 Java 開發環境。那麼問題來了:現在都 2020 年了,如何在初始化 Java 開發環境時你能愉快地去喝咖啡。看完這篇文章,希望可以解決你的困惑,那就開始吧。

本文分為三部分:準備工具,安裝配置 JDK,安裝開發工具。

準備

首先,在你的 Mac 上安裝軟體管理神器 ——> Homebrew。

新 Mac 如何優雅地配置 Java 開發環境

關於 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

新 Mac 如何優雅地配置 Java 開發環境

自 Oracle 將 JDK 許可協議從 BCL 換成了 OTN 之後,生產環境就要慎用 Oracle JDK 了,以免法律糾紛。老版本 JDK 的後續支援補丁也成了問題,詳情戳下面的連結吧,這裡就不展開了。

從 2018 年開始,我們也逐漸切換到 OpenJDK 版本上開發和生產環境部署。所以這裡,建議開發機可以安裝的 OpenJDK 版本為:openjdk@8 和 openjdk@11 。儘管現在都2020年了,但大部分公司依然很有可能生產上還是以 JDK 8 為主。

新 Mac 如何優雅地配置 Java 開發環境

那麼,

為什麼也推薦了 openjdk@11 呢?首先,LTS 版本避雷必備;其次,JDK 8 釋出於2014年,時隔4年拋開中間的

兩個非LTS版本,

JDK 11 釋出於2018年。帶來了諸多穩定的新特性,完美甩開

歷史包袱,GC方面引來了 ZGC,預設GC演算法改用 G1 。

新 Mac 如何優雅地配置 Java 開發環境

安裝 OpenJDK

新 Mac 如何優雅地配置 Java 開發環境

brew search openjdk

brew search openjdk

之後,你就會出現上圖中的情況。

我們看一下 openjdk@8 的安裝描述資訊,`brew info openjdk@8`。

新 Mac 如何優雅地配置 Java 開發環境

基於 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

新 Mac 如何優雅地配置 Java 開發環境

IDEA CE 版就夠了

16 年前,寫 Java 還是用 Eclipse;16年後,就全面切換 IDEA 了,它真的太 Intelligent 了!

新 Mac 如何優雅地配置 Java 開發環境

其他工具就不推薦了,用它,就用它。

新手手頭緊張,社群版就夠用了。老兵,覺得它不錯就訂閱走一波,當然還有萬能的淘寶,還有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版本切換。