Mac安裝和配置Java JDK的完整教程
一、Java JDK 詳解
1.1 什么是 JDK?
JDK(Java Development Kit,Java 開發(fā)工具包)是 Oracle 公司提供的用于 Java 程序開發(fā)的完整軟件包。它是 Java 開發(fā)者不可或缺的核心工具,包含了編寫、編譯、調(diào)試和運(yùn)行 Java 程序所需的一切組件。
1.2 JDK 的核心組成
JDK 主要由以下幾個(gè)關(guān)鍵部分組成:
1. JRE(Java Runtime Environment,Java 運(yùn)行時(shí)環(huán)境)
- JRE 是 JDK 的子集,提供 Java 程序運(yùn)行所需的環(huán)境
- 包含 JVM(Java Virtual Machine,Java 虛擬機(jī))和核心類庫(kù)
- 如果只需要運(yùn)行 Java 程序而不進(jìn)行開發(fā),僅安裝 JRE 即可
2. 開發(fā)工具
JDK 提供了豐富的命令行工具,其中最常用的包括:
| 工具命令 | 功能說(shuō)明 |
|---|---|
javac | Java 編譯器,將 .java 源文件編譯為 .class 字節(jié)碼文件 |
java | Java 解釋器,啟動(dòng) JVM 運(yùn)行編譯后的字節(jié)碼文件 |
jar | Java 歸檔工具,用于打包和管理 JAR 文件 |
javadoc | API 文檔生成器,從源代碼注釋中生成 HTML 格式的文檔 |
jdb | Java 調(diào)試器,用于調(diào)試 Java 程序 |
javap | 反編譯工具,查看類文件的反匯編信息 |
jps | 查看當(dāng)前運(yùn)行的 Java 進(jìn)程信息 |
jstat | 監(jiān)控 JVM 的統(tǒng)計(jì)信息,如垃圾回收、類加載等 |
3. 核心類庫(kù)(Java API)
JDK 內(nèi)置了龐大的類庫(kù)集合,為開發(fā)者提供了豐富的現(xiàn)成功能:
java.lang:Java 語(yǔ)言的核心類,如String、Math、System等java.util:集合框架、日期時(shí)間、隨機(jī)數(shù)等工具類java.io:文件輸入輸出操作java.net:網(wǎng)絡(luò)編程支持java.sql:數(shù)據(jù)庫(kù)訪問接口javax.swing:圖形用戶界面組件
1.3 JDK 版本說(shuō)明
Java 的版本演進(jìn)經(jīng)歷了幾個(gè)重要階段:
- Java 8 (LTS):目前應(yīng)用最廣泛的長(zhǎng)期支持版本,穩(wěn)定可靠
- Java 11 (LTS):繼 Java 8 之后的長(zhǎng)期支持版本,引入了模塊化系統(tǒng)
- Java 17 (LTS):最新的長(zhǎng)期支持版本,性能和安全均有顯著提升
- Java 21 (LTS):最新 LTS,引入了虛擬線程等重大特性
LTS(Long-Term Support) 指長(zhǎng)期支持版本,Oracle 會(huì)提供至少 8 年的維護(hù)和更新,適合生產(chǎn)環(huán)境使用。
1.4 JDK 與 JRE 的關(guān)系圖
┌─────────────────────────────────────────────────────────┐ │ JDK │ │ ┌───────────────────────────────────────────────────┐ │ │ │ JRE │ │ │ │ ┌─────────────────────────────────────────────┐ │ │ │ │ │ JVM │ │ │ │ │ └─────────────────────────────────────────────┘ │ │ │ │ 核心類庫(kù) (rt.jar) │ │ │ └───────────────────────────────────────────────────┘ │ │ 開發(fā)工具 (javac, jar, javadoc...) │ └─────────────────────────────────────────────────────────┘
二、Mac 安裝 Java JDK 詳細(xì)步驟
2.1 方法一:通過(guò) Homebrew 安裝(推薦)
Homebrew 是 Mac 上最流行的包管理器,可以簡(jiǎn)化安裝流程。
步驟 1:檢查 Homebrew 是否已安裝
brew --version
如果未安裝,執(zhí)行以下命令安裝 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
步驟 2:搜索可用的 Java 版本
# 搜索所有 Java 相關(guān)包 brew search jdk # 或搜索特定版本 brew search openjdk
步驟 3:安裝指定版本的 JDK
# 安裝最新版本的 OpenJDK brew install openjdk # 安裝 Java 17 (LTS) brew install openjdk@17 # 安裝 Java 11 (LTS) brew install openjdk@11 # 安裝 Java 8 brew install openjdk@8
步驟 4:創(chuàng)建符號(hào)鏈接(如需要)
Homebrew 安裝的 OpenJDK 通常會(huì)自動(dòng)鏈接,但某些版本可能需要手動(dòng)處理:
# 對(duì)于 OpenJDK 17 sudo ln -sfn $(brew --prefix)/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk # 對(duì)于 OpenJDK 11 sudo ln -sfn $(brew --prefix)/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk # 對(duì)于 OpenJDK 8 sudo ln -sfn $(brew --prefix)/opt/openjdk@8/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-8.jdk
2.2 方法二:從 Oracle 官網(wǎng)下載安裝
步驟 1:訪問 Oracle 官網(wǎng)
訪問Oracle JDK 下載頁(yè)面
步驟 2:選擇適合的版本
- 選擇 macOS 平臺(tái)
- 選擇
.dmg安裝包格式 - 下載 ARM64(Apple Silicon)或 x64(Intel)版本
步驟 3:安裝 JDK
- 雙擊下載的
.dmg文件 - 雙擊安裝包圖標(biāo)
- 按照安裝向?qū)瓿砂惭b
- 安裝完成后,JDK 默認(rèn)安裝在
/Library/Java/JavaVirtualMachines/目錄下
2.3 驗(yàn)證安裝
無(wú)論使用哪種安裝方式,安裝完成后都需要驗(yàn)證:
# 查看 Java 版本 java -version # 查看 javac 編譯器版本 javac -version # 查看 JDK 安裝路徑 /usr/libexec/java_home -V
正常輸出示例:
openjdk version "17.0.9" 2023-10-17 LTS OpenJDK Runtime Environment (build 17.0.9+8-LTS) OpenJDK 64-Bit Server VM (build 17.0.9+8-LTS, mixed mode, sharing)
三、環(huán)境變量配置
3.1 確定 Shell 類型
Mac 默認(rèn)使用 zsh(自 macOS Catalina 起),首先確認(rèn)當(dāng)前使用的 Shell:
echo $SHELL
- 輸出
/bin/zsh→ 使用 zsh,配置文件為~/.zshrc - 輸出
/bin/bash→ 使用 bash,配置文件為~/.bash_profile
3.2 配置 JAVA_HOME
步驟 1:找到 JDK 安裝路徑
# 獲取 JDK 安裝路徑 /usr/libexec/java_home # 如果需要指定版本 /usr/libexec/java_home -v 17
步驟 2:編輯 Shell 配置文件
# 如果是 zsh vim ~/.zshrc # 如果是 bash vim ~/.bash_profile
步驟 3:添加環(huán)境變量配置
在文件末尾添加以下內(nèi)容:
# JAVA_HOME 配置 export JAVA_HOME=$(/usr/libexec/java_home) # 如果安裝了多個(gè)版本,可以指定特定版本 # export JAVA_HOME=$(/usr/libexec/java_home -v 17) # 將 JAVA_HOME 添加到 PATH export PATH=$JAVA_HOME/bin:$PATH
步驟 4:使配置生效
# 根據(jù)實(shí)際 Shell 選擇 source ~/.zshrc # 或 source ~/.bash_profile
步驟 5:驗(yàn)證環(huán)境變量
# 驗(yàn)證 JAVA_HOME 是否設(shè)置成功 echo $JAVA_HOME # 驗(yàn)證 PATH 是否包含 Java echo $PATH | grep java # 再次驗(yàn)證 Java 命令 java -version javac -version
3.3 多版本 Java 管理
如果需要同時(shí)使用多個(gè) Java 版本,可以配置版本切換功能:
方法一:使用 alias 快速切換
在 ~/.zshrc 中添加:
# Java 版本切換函數(shù)
function setjava() {
export JAVA_HOME=$(/usr/libexec/java_home -v $1)
export PATH=$JAVA_HOME/bin:$PATH
echo "Switched to Java $1"
java -version
}
# 設(shè)置快捷別名
alias java8='setjava 1.8'
alias java11='setjava 11'
alias java17='setjava 17'
使用方法:
# 切換到 Java 8 java8 # 切換到 Java 11 java11 # 切換到 Java 17 java17
方法二:使用 jEnv 管理
# 安裝 jEnv brew install jenv # 配置 jEnv echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc echo 'eval "$(jenv init -)"' >> ~/.zshrc source ~/.zshrc # 添加已安裝的 Java 版本 jenv add /Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home jenv add /Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home # 設(shè)置全局版本 jenv global 17 # 設(shè)置當(dāng)前目錄版本 jenv local 11
四、驗(yàn)證與測(cè)試
4.1 編寫第一個(gè) Java 程序
創(chuàng)建 HelloWorld.java 文件:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java JDK on Mac!");
System.out.println("Java Version: " + System.getProperty("java.version"));
System.out.println("Java Home: " + System.getProperty("java.home"));
System.out.println("OS Name: " + System.getProperty("os.name"));
}
}4.2 編譯與運(yùn)行
# 編譯 Java 源文件 javac HelloWorld.java # 運(yùn)行編譯后的字節(jié)碼文件 java HelloWorld
預(yù)期輸出:
Hello, Java JDK on Mac! Java Version: 17.0.9 Java Home: /Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home OS Name: Mac OS X
4.3 查看編譯后的文件
# 查看目錄內(nèi)容 ls -la # 使用 javap 查看字節(jié)碼信息 javap -c HelloWorld
五、常見問題與解決方案
5.1 “command not found: java”
原因:環(huán)境變量未正確配置
解決方案:
# 檢查 JDK 是否已安裝 ls /Library/Java/JavaVirtualMachines/ # 重新配置環(huán)境變量 export JAVA_HOME=$(/usr/libexec/java_home) export PATH=$JAVA_HOME/bin:$PATH
5.2 “Unable to locate a Java Runtime”
原因:系統(tǒng)未找到 Java 運(yùn)行時(shí)
解決方案:
# 安裝 JDK brew install openjdk@17 # 或創(chuàng)建符號(hào)鏈接 sudo ln -sfn $(brew --prefix)/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
5.3 版本沖突問題
原因:系統(tǒng)存在多個(gè) Java 版本
解決方案:
# 查看所有已安裝版本 /usr/libexec/java_home -V # 明確指定使用的版本 export JAVA_HOME=$(/usr/libexec/java_home -v 17)
六、詳細(xì)總結(jié)
6.1 安裝方式對(duì)比
| 安裝方式 | 優(yōu)點(diǎn) | 缺點(diǎn) | 適用場(chǎng)景 |
|---|---|---|---|
| Homebrew | 命令行操作,版本管理便捷,更新簡(jiǎn)單 | 默認(rèn)安裝 OpenJDK(非 Oracle 官方) | 開發(fā)環(huán)境,習(xí)慣包管理的用戶 |
| Oracle 官網(wǎng) | 官方原版,包含商業(yè)功能 | 需要手動(dòng)下載,更新不便 | 企業(yè)環(huán)境,需要官方支持 |
| SDKMAN | 多版本管理強(qiáng)大,切換靈活 | 需要額外安裝 | 需要頻繁切換版本的開發(fā)者 |
6.2 關(guān)鍵要點(diǎn)回顧
- JDK 的核心價(jià)值:JDK 不僅是運(yùn)行 Java 程序的環(huán)境(JRE),更包含了完整的開發(fā)工具鏈(javac、jar、javadoc 等),是 Java 開發(fā)的基石。
- 環(huán)境配置的重要性:正確配置 JAVA_HOME 和 PATH 是保證 Java 開發(fā)工具正常運(yùn)行的前提,這些變量告訴操作系統(tǒng)去哪里尋找 Java 命令和庫(kù)文件。
- 版本選擇建議:
- 個(gè)人學(xué)習(xí):推薦 Java 17 或 Java 21(最新 LTS)
- 企業(yè)開發(fā):Java 8 或 Java 11(生態(tài)成熟,兼容性好)
- 嘗鮮體驗(yàn):Java 21+(新特性探索)
- 多版本管理:對(duì)于需要維護(hù)多個(gè)項(xiàng)目的開發(fā)者,掌握多版本管理能力至關(guān)重要,可以通過(guò) jEnv 或自定義函數(shù)實(shí)現(xiàn)快速切換。
6.3 后續(xù)學(xué)習(xí)建議
完成 JDK 安裝與環(huán)境配置后,可以繼續(xù)學(xué)習(xí):
- 構(gòu)建工具:Maven 或 Gradle,用于項(xiàng)目依賴管理和構(gòu)建
- IDE 集成:IntelliJ IDEA、Eclipse 或 VS Code 中配置 JDK
- 版本控制:Git 與 GitHub 的協(xié)作開發(fā)
- 框架學(xué)習(xí):Spring Boot 等主流框架的開發(fā)實(shí)踐
通過(guò)本教程,成功在 Mac 上完成了 Java JDK 的安裝和環(huán)境配置。這是 Java 開發(fā)之路的第一步,也是至關(guān)重要的一步。配置完成后,就可以開始編寫、編譯和運(yùn)行 Java 程序,開啟 Java 開發(fā)之旅了。
以上就是Mac安裝和配置Java JDK的完整教程的詳細(xì)內(nèi)容,更多關(guān)于Mac安裝Java JDK的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java實(shí)現(xiàn)UDP通信過(guò)程實(shí)例分析【服務(wù)器端與客戶端】
這篇文章主要介紹了Java實(shí)現(xiàn)UDP通信過(guò)程,結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)UDP服務(wù)器端與客戶端相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2020-05-05
SpringBoot攔截器(Interceptor)自定義實(shí)現(xiàn)登錄鑒權(quán)功能
在 Web 項(xiàng)目中,登錄鑒權(quán)是最核心的安全機(jī)制,SpringBoot 提供的?HandlerInterceptor 攔截器,是實(shí)現(xiàn)登錄校驗(yàn)、日志記錄、接口限流最優(yōu)雅的方案,本篇文章將介紹原理、自定義攔截器、登錄校驗(yàn)實(shí)戰(zhàn)、放行白名單、全局異常處理,需要的朋友可以參考下2026-03-03
關(guān)于spring中不同包中類名相同報(bào)錯(cuò)問題的總結(jié)
這篇文章主要介紹了關(guān)于spring中不同包中類名相同報(bào)錯(cuò)問題的總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
關(guān)于Java實(shí)體類Serializable序列化接口的作用和必要性解析
序列化是將對(duì)象狀態(tài)轉(zhuǎn)化為可保持或者傳輸?shù)母袷竭^(guò)程,與序列化相反的是反序列化,完成序列化和反序列化,可以存儲(chǔ)或傳輸數(shù)據(jù),一般情況下,在定義實(shí)體類時(shí)會(huì)使用Serializable,需要的朋友可以參考下2023-05-05
解析Spring事件發(fā)布與監(jiān)聽機(jī)制
本篇文章給大家介紹Spring事件發(fā)布與監(jiān)聽機(jī)制,通過(guò) ApplicationEvent 事件類和 ApplicationListener 監(jiān)聽器接口,可以實(shí)現(xiàn) ApplicationContext 事件發(fā)布與處理,需要的朋友參考下吧2021-06-06

