
做 Java 開發(fā)的同學最近應該都有明顯感覺2024 年還有人抱著 Java 8 不放到了 2025 年身邊討論 JDK21 的人越來越多IDE 也慢慢換到了 IntelliJ IDEA 2025 這個新版本。正好這幾天幫同事處理了兩臺機器一臺 Windows 本機一臺剛初始化完的 Linux 服務器把 JDK21 和 idea2025 安裝全流程走了一遍。這篇文章就圍繞這件事展開講清楚 JDK21 安裝包怎么選、Windows 和 Linux 下環(huán)境變量怎么配、IDEA 2025 怎么和 JDK21 關聯再把我實操中踩過的坑和排查思路一并整理出來。無論你是剛入門想照著抄作業(yè)還是老程序員準備升級開發(fā)環(huán)境這份記錄都能給你一個完整的參考。1. 動手之前JDK21 和 IDEA 2025 到底是什么組合1.1 JDK21 到底帶來了什么JDK21 是 Oracle 在 2023 年 9 月發(fā)布的長期支持版本LTS 意味著它能獲得長時間的安全補丁和穩(wěn)定性更新對于企業(yè)項目來說這是從 Java 8 或 Java 11 直接跳升的最佳目標版本。很多團隊卡在 Java 8 不升本質原因是“不值得折騰”但只要仔細看過 JDK21 的更新列表這個顧慮基本會被打消。JDK21 里最值得關注的是虛擬線程這是 JEP 444 正式帶來的功能。以前 Java 處理高并發(fā)靠線程池線程多了之后上下文切換開銷巨大而虛擬線程由 JVM 調度一個平臺線程可以承載成千上萬個虛擬線程寫并發(fā)代碼就像寫順序代碼一樣簡單性能還比傳統(tǒng)方式好不少。我自己的一個線上消息處理程序用 JDK21 的虛擬線程重寫后吞吐量提升非常明顯而代碼改動量卻小得驚人。除了虛擬線程記錄模式Record Patterns和 switch 模式匹配也讓代碼簡潔了很多。以前要寫一堆 instanceof 判斷和強制類型轉換現在一個模式匹配表達式就能解決。另外JDK21 還引入了分代 ZGC把 ZGC 的停頓時間進一步壓低大堆內存應用也能實現極低延遲。這些特性單獨看可能覺得沒什么但組合在一起就是讓 Java 這門語言重新變得性感。需要注意一點字符串模板String Templates在 JDK21 中還是預覽特性生產環(huán)境使用要謹慎別把預覽 API 當正式 API 寫到長期維護的代碼里。對于像我這種 Windows 和 Linux 兩套環(huán)境都要維護的人JDK21 還有一個隱藏好處它已經是比較新的 LTS社區(qū)里針對它的坑和解決方案已經沉淀得足夠多。遇到環(huán)境問題搜答案不會像當年 Java 9 時代那樣連個靠譜對照都沒處找。1.2 為什么選擇 IDEA 2025 搭配 JDK21IntelliJ IDEA 2025 這個版本名字就直接對應年份。它在啟動速度、內存占用和 JDK 識別上做了不少優(yōu)化。尤其是對新版本 JDK 的支持IDEA 2025 從代碼提示到編譯運行都做了針對性適配比如虛擬線程相關 API 的補全、新語法特性的高亮檢查老版本 IDEA 打開 JDK21 項目時偶爾會出現“誤報錯”或者提示不完整的問題這些問題在新版本上基本絕跡。版本組合上我推薦 Ultimate 和 Community 兩種選擇個人學習、寫小型項目Community 社區(qū)版完全夠用免費且無功能限制商業(yè)項目開發(fā)需要 Spring、數據庫工具這類高級功能可以走 JetBrains 官方訂閱或試用。IDEA 啟動了正版授權體系打開軟件后用 JetBrains 賬號登錄即可公司有 License Server 或者訂閱的話在 Settings 里配置一下就能激活。注意千萬不要到處找破解補丁和注冊碼一個是安全風險極大另一個是新版 IDEA 對激活信息的校驗越來越嚴格出了問題很難排查不如正規(guī)渠道來得省心。另外一個實用建議是安裝 IDEA 2025 前先把 JDK21 搞定因為 IDEA 本身雖然內置了 JBRJetBrains Runtime但新建項目時如果沒有外部 JDK你只能選擇 IDEA 自帶的版本那并不是完整的 JDK 開發(fā)環(huán)境。先把 JDK21 配好IDEA 里指定一下整個鏈路就通了。2. 下載準備JDK21 安裝包怎么選、去哪下2.1 Windows 下選擇哪個 JDK 發(fā)行版很多新手上來就搜“jdk21 下載”結果在五花八門的網站里迷了路。其實 JDK 的發(fā)行版遠不止 Oracle 一家選哪個取決于你的用途。如果是做 Java 標準開發(fā)我建議優(yōu)先考慮這幾個主流發(fā)行版Oracle JDK 是官方原版商業(yè)使用有許可限制但個人開發(fā)、學習和很多非商業(yè)場景都能用優(yōu)點是和官方文檔一致版本更新及時。OpenJDK 是開源的參考實現官方構建版本一般生產上很多人不直接用。Eclipse Temurin 是 Adoptium 社區(qū)維護的 OpenJDK 發(fā)行版完全開源、免費可以作為 Oracle JDK 的替代品尤其適合追求免費和穩(wěn)定的團隊。Amazon Corretto 是 AWS 維護的發(fā)行版兼容性很好云上部署順理成章。我個人的選擇邏輯很簡單如果是個人電腦上學習、實驗或者給公司做開發(fā)直接下載 Oracle JDK 21省事如果是 Linux 服務器生產環(huán)境想完全避開許可問題用 Eclipse Temurin 或 Corretto 都行下載地址分別在 adoptium.net 和 aws.amazon.com/corretto這些站點都是正規(guī)來源不要隨手在個別博客里掛的私鏈下載安裝包。下載時還要留意架構Windows 上絕大多數是 x64如果你的筆記本是高通 ARM 芯片就選 aarch64 版本。這個細節(jié)很關鍵選錯架構哪怕安裝成功也容易出現“找不到主類”這類跑不起來的詭異問題。下載完成后我建議順手校驗一下文件哈希值官方頁面會給出 SHA256 校驗碼在 PowerShell 里執(zhí)行 Get-FileHash 命令計算本地安裝包的哈希值比對一致再安裝能擋住至少九成的“下載文件損壞”問題。2.2 Linux 服務器下載 JDK21 安裝包Linux 新服務器裝 JDK21很多人第一反應是用 apt install openjdk-21-jdk 或者 yum 安裝。這個思路沒錯但很多剛初始化的服務器上系統(tǒng)源里的 openjdk 版本比較舊或者根本沒有 openjdk-21 這個包。即使有你想裝 Oracle 官方 JDK21 也不方便從源里裝。所以更通用的方案是手動下載 tar.gz 包再解壓。以 x64 Linux 為例我一般是先下載 jdk-21_linux-x64_bin.tar.gz 到服務器 /tmp 目錄然后用 tar 解壓到 /opt 下。手動安裝的優(yōu)點很明顯版本完全可控裝到哪個目錄你說了算環(huán)境變量也清清楚楚。缺點就是你得手動維護但這對我來說并不是麻煩反而讓服務器的 Java 環(huán)境更透明。在 Linux 上我更推薦 Temurin 發(fā)行版因為它的 tar.gz 包對純命令行環(huán)境非常友好。下載命令大概長這樣wget https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.3%2B9/OpenJDK21U-jdk_x64_linux_hotspot_21.0.3_9.tar.gz注意鏈接里的 %2B 是 號的編碼在 wget 里直接寫加號也可以但寫全鏈接更保險。下載完以后執(zhí)行sha256sum OpenJDK21U-jdk_x64_linux_hotspot_21.0.3_9.tar.gz把輸出的哈希值和官網提供的校驗碼比一比一致后再解壓。這一步沒人強迫你做但我見過太多人在服務器上裝了損壞的 JDK然后折騰半天才發(fā)現是安裝包本身有問題。因為這些網絡下載經常中斷wget 默認斷點續(xù)傳也可能留下一個看起來完整實際截斷的文件。3. Windows 環(huán)境安裝 JDK21 與配置環(huán)境變量3.1 安裝包執(zhí)行與目錄規(guī)劃Windows 下 Oracle JDK21 的安裝包是一個 exe 文件雙擊運行建議不要直接默認路徑而是把安裝目錄改成一個簡潔、無空格、無中文的路徑。我習慣裝到 C:\Java\jdk-21 或者 D:\Java\jdk-21。為什么這么講究因為路徑里有空格和中文在 IDEA 的構建工具、Maven 插件以及一些命令行腳本里很容易出現路徑解析錯誤特別是國內用戶系統(tǒng)用戶名經常是中文默認安裝路徑很容易踩中這個雷。JDK21 的安裝過程和老版本不太一樣安裝包里不會單獨出現“公共 JRE”選項因為從 JDK 9 以后JRE 就不再單獨發(fā)布了而是集成在 JDK 里。安裝過程中你只需要把“源代碼”、“開發(fā)工具”這些組件全部勾上一路確認即可。還有一個細節(jié)安裝完成后系統(tǒng)里可能已經有舊版本 JDKOracle 安裝程序會詢問你“是否注冊 Java 的自動更新”建議取消因為開發(fā)機上你更希望用哪個版本完全是可控的自動更新反而會把環(huán)境搞亂。裝完以后先別急著打開 IDEA立刻去做環(huán)境變量。很多人以為裝完就完事了實際上如果沒有配置環(huán)境變量IDEA 里雖然能識別到 JDK但命令行里的 java、javac 全都會報“不是內部或外部命令”后面排查起來非常頭疼。3.2 JAVA_HOME 和 PATH 怎么配才標準在 Windows 上配置環(huán)境變量我推薦在“系統(tǒng)變量”里操作而不是“用戶變量”。原因很簡單系統(tǒng)變量對所有用戶生效并且能避免一些工具讀取 getUserHome 路徑時出現不一致問題。具體流程是右鍵“此電腦”選“屬性”點擊“高級系統(tǒng)設置”進到“環(huán)境變量”窗口然后在系統(tǒng)變量區(qū)域點擊“新建”變量名寫 JAVA_HOME變量值寫你的 JDK 安裝路徑比如 C:\Java\jdk-21。接下來編輯 Path 變量在變量值的末尾添加一行 %JAVA_HOME%\bin注意是追加不要把原有的 System32 那些條目刪掉。這里用相對引用而不是寫死絕對路徑是怕以后升級 JDK 版本時到處改 Path。用 %JAVA_HOME%\bin 只需要改 JAVA_HOME 一個地方所有引用自動生效。關于 CLASSPATH我只想說一句新版本的 JDK沒有人再去手動配置 classpath 了JVM 會自己找標準庫你的項目依賴由 Maven/Gradle 管理所以千萬別在網上抄那種老教程新建一個 CLASSPATH 變量指向 lib純屬給自己找麻煩。配置完環(huán)境變量后有一個最重要的動作關掉當前所有命令行窗口重新打開一個新的 CMD 或 PowerShell。不管是 CMD、PowerShell 還是 IDEA啟動的那一刻都會讀取環(huán)境變量快照之前已經打開的窗口不會自動拿到新的變量我見過太多人配好環(huán)境變量后順手在舊窗口敲 java -version結果報錯以為沒配上反復折騰半天。這個問題無解只能重新打開窗口。3.3 驗證安裝到底看什么重新打開一個新的命令提示符窗口依次執(zhí)行java -version javac -version正常情況下 java -version 會輸出類似 openjdk version 21.0.3 或者 java version 21.0.3 以及一些運行環(huán)境信息。javac -version 則會輸出 javac 21.0.3。這里有兩個容易踩的坑第一個坑是如果你電腦里以前裝過其他 JDK執(zhí)行 java -version 顯示的卻不是 21那說明 PATH 里有一個更靠前的舊 JDK 路徑把 Path 里舊 JDK 的條目刪掉或者把 %JAVA_HOME%\bin 往前挪到最前面。第二個坑是執(zhí)行到 javac 時提示“無法運行”但 java -version 正常這通常是你只裝了 JRE 而不是完整 JDK。JDK21 安裝包不會出現這種情況但如果你當初圖省事裝了 JRE就會遇到。我還習慣順手驗證一下 JAVA_HOME 是否被正確識別echo %JAVA_HOME%輸出結果應該和你設置的路徑完全一致多一個斜杠、少一個空格都會讓后面的工具栽跟頭。Windows 上環(huán)境變量配置完成IDEA 安裝好后能自動檢測到這個 JDK整個過程到這里就順利貫通了。4. Linux 服務器安裝 JDK21 與全局環(huán)境變量配置4.1 解壓安裝和目錄約定Linux 新服務器安裝 JDK21 的第一件事不是下載而是先確定目錄結構。我習慣統(tǒng)一放在 /opt 下原因很簡單/opt 本來就是存放第三方獨立軟件的規(guī)范路徑權限也更清晰。服務器上如果有多個 JDK 版本還可以用 /opt/jdk-21 這樣帶版本號的目錄一目了然。具體操作mkdir -p /opt/java tar -zxvf /tmp/jdk-21_linux-x64_bin.tar.gz -C /opt/java mv /opt/java/jdk-21.0.3 /opt/java/jdk-21解壓完成后檢查一下目錄ls /opt/java/jdk-21/bin/java看到 bin/java 存在說明解壓沒問題。這里提醒一點如果服務器上內存比較緊張解壓 tar.gz 是一個 CPU 密集操作不要一邊解壓一邊跑大任務否則服務器可能卡頓看起來像死機。Linux 上還有一種更“正規(guī)”的安裝方式用系統(tǒng)的 update-alternatives 來管理 JDK 版本。它能讓你在系統(tǒng)里同時裝多個 JDK需要切換時一條命令就能完成。我強烈建議服務器上嘗試一下因為線上環(huán)境經常遇到“某個老應用只兼容 JDK11另一個新應用需要 JDK21”的情況靠手改環(huán)境變量切換很容易切混亂而 update-alternatives 就是為這個場景設計的。具體路徑和方式我放在后面第 4.3 小節(jié)講。4.2 Linux 環(huán)境變量配置的最佳實踐很多博客會叫你直接編輯 /etc/profile把 JAVA_HOME 塞進去。這個做法能用但不夠優(yōu)雅因為 /etc/profile 是全局配置的“主入口”升級系統(tǒng)、安裝其他軟件時可能會被覆蓋或沖突。我推薦的方案是使用 /etc/profile.d/ 目錄下的獨立腳本文件。在 /etc/profile.d/ 下新建一個 jdk21.sh寫入以下內容export JAVA_HOME/opt/java/jdk-21 export PATH$JAVA_HOME/bin:$PATH保存后重新登錄服務器或者執(zhí)行 source /etc/profile 讓腳本生效。這個方式的優(yōu)勢在于/etc/profile 啟動時會自動加載 /etc/profile.d/ 下所有 .sh 腳本相當于把你的個性化配置和系統(tǒng)默認配置解耦了以后卸載 JDK21 時只需要刪除這一個文件干凈利落。驗證時同樣要注意必須新開一個終端會話或者執(zhí)行 source /etc/profile 再驗證因為當前會話里的環(huán)境變量不會自動刷新。執(zhí)行java -version which javawhich java 應該輸出來自 /usr/bin/java 或者 $JAVA_HOME/bin/java 的路徑。如果你執(zhí)行 which java 查不到說明 PATH 里沒有變量檢查一下 jdk21.sh 的權限chmod 644 /etc/profile.d/jdk21.sh保證它對所有用戶可讀即可因為 profile 腳本只需要讀取權限不需要執(zhí)行權限。除了終端用戶環(huán)境Linux 服務器還有一個容易被忽略的場景通過 systemd 啟動的服務進程不會讀取 /etc/profile.d。如果你部署的應用是用 systemd 管理即使 JAVA_HOME 配好了服務進程也拿不到這個變量。這種情況下我建議在 service 文件里顯式寫 EnvironmentJAVA_HOME/opt/java/jdk-21或者更常見的做法是把 java 路徑做成符號鏈接ln -sf /opt/java/jdk-21/bin/java /usr/bin/java這樣應用直接調用 java 命令時走的還是你指定的 JDK21繞開了環(huán)境變量的生效范圍問題。4.3 多版本 JDK 切換update-alternatives真到了服務器上同時需要 JDK11 和 JDK21 的時候手動改 /etc/profile.d 就太痛苦了。Debian/Ubuntu 系的 update-alternatives 是標準動作。把兩個 JDK 都解壓好之后執(zhí)行update-alternatives --install /usr/bin/java java /opt/java/jdk-21/bin/java 2100 update-alternatives --install /usr/bin/java java /opt/java/jdk-11/bin/java 1100 update-alternatives --config java這里末尾的 2100 和 1100 是優(yōu)先級數字大的默認被優(yōu)先選中。執(zhí)行 update-alternatives --config java 后系統(tǒng)會列出所有已注冊的 java 鏈接你輸入編號就能切換。注意到我裝的是 /usr/bin/java 而不是 /usr/local/bin/java這是因為 update-alternatives 默認管理 /usr/bin 下的鏈接如果你習慣裝在 /usr/local 下也可以對應改成 /usr/local/bin/java邏輯完全一樣。JAVA_HOME 也可以交給 update-alternatives 管理再創(chuàng)建一個 jdk 組update-alternatives --install /usr/bin/javac javac /opt/java/jdk-21/bin/javac 2100然后配置 JAVA_HOME 時指向 /usr/lib/jvm 之類的動態(tài)鏈接路徑但這一套配置對新手來說確實復雜了一些。如果你只有一臺服務器只跑一個應用我建議用第 4.2 小節(jié)的 profile.d 方案就夠了只有當你明確知道自己要頻繁切換 JDK 版本時才值得引入 update-alternatives。5. IDEA 2025 安裝與 JDK21 的關聯配置5.1 IDEA 2025 安裝流程要點IDEA 2025 的安裝本身不復雜從 JetBrains 官網下載對應系統(tǒng)的安裝包下載地址直接搜“IntelliJ IDEA download”就能看到官方入口Windows 版是一個 exe 安裝器運行后基本一路 Next。需要注意幾個安裝選項第一個是安裝路徑同樣不要帶中文和空格建議 D:\Program Files\JetBrains\IntelliJ IDEA 2025 這類較短的路徑。第二個是安裝器會問你要不要創(chuàng)建“64 位啟動器”和“創(chuàng)建關聯文件”建議全部勾上右鍵 .java 文件直接用 IDEA 打開非常方便。第三個是安裝完成后會問你要不要立即啟動可以先不啟動因為最好先去確認 JDK 環(huán)境已經配好了。如果你的機器是 Linux 桌面環(huán)境IDEA 2025 的安裝方式是下載 tar.gz 后解壓到 /opt初次啟動運行 bin/idea.sh 即可??梢皂樖謩?chuàng)建一個桌面快捷方式。這里需要注意Linux 桌面上運行 IDEA同樣得注意 JDK 環(huán)境變量因為 IDEA 啟動腳本會調用系統(tǒng)的 java 判斷運行環(huán)境雖然它也會使用內置的 JBR但如果 JAVA_HOME 配置錯誤某些插件和構建工具依然會報錯。啟動后的首次歡迎界面會引導你選擇主題、導入以前的配置等。我自己一般選擇不導入直接全新的開始避免上一版本遺留的配置和新版沖突。5.2 在 IDEA 2025 里把項目 SDK 指定為 JDK21IDEA 安裝完以后最關鍵的一步就是把項目里的 SDK 指向 JDK21。操