Java 是平台無關、物件導向、健壯、安全、多執行緒、分散式的通用程式語言。三大版本定位:
核心優勢:成熟生態、人才豐富、長期支援 (LTS)、雲原生友善 (Spring Boot/GraalVM/Quarkus)、效能持續優化 (JIT/AOT/虛擬執行緒/ZGC)。
| 組件 | 全名 | 包含內容 | 用途 | 大小 |
|---|---|---|---|---|
| JVM | Java Virtual Machine | 位元組碼解釋器、JIT 編譯器、記憶體管理 (GC)、執行緒同步、類別載入器、安全管理員 | 執行 .class 位元組碼的核心引擎,平台專屬實作 (HotSpot, OpenJ9, GraalVM, Zing) | ~50-100 MB |
| JRE | Java Runtime Environment | JVM + 核心類庫 (rt.jar / jrt-fs.jar) + 啟動器 + 部署工具 | 執行 Java 應用程式的最小環境 (終端用戶安裝) | ~50-80 MB |
| JDK | Java Development Kit | JRE + 編譯器 (javac) + 除錯器 (jdb) + 打包 (jar) + 文件 (javadoc) + 監控/診斷工具 (jcmd, jstack, jmap, jfr) + 原始碼 (src.zip) | 開發、編譯、除錯、打包、部署的完整工具箱 | ~150-300 MB |
💡 關係:
JDK ⊃ JRE ⊃ JVM。開發機必裝 JDK;生產伺服器僅需 JRE (或精簡jlink客製化運行時);容器映像建議使用eclipse-temurin:21-jre/eclipse-temurin:21-jdk基底映像。
.sdkmanrc / pom.xml maven.compiler.release / gradle toolchain 明確宣告 JDK 版本,避免「在我機器上能跑」問題。JAVA_HOME 指向 JDK 根目錄,PATH 前綴 $JAVA_HOME/bin。不再需要 手動設定 CLASSPATH (Maven/Gradle/模組系統自動管理)。| 階段 | 工具鏈 | 特徵 | 適用場景 |
|---|---|---|---|
| 1. 原始指令列 | javac / java / jar / javadoc | 零依賴、理解本質、教學驗證 | 學習前 2 週、極簡測試、嵌入式交叉編譯 |
| 2. 文字編輯器 + 建構腳本 | VS Code / Vim / Emacs + Maven/Gradle Wrapper | 輕量、可攜、鍵盤導向、多語言 | 微服務單模組、資源受限、遠端 SSH 開發 |
| 3. 輕量 IDE | IntelliJ IDEA Community / VS Code Java Extension Pack | 智能感知、重構、除錯、Git/建構工具整合 | 中小型專案、個人開發、開源貢獻 |
| 4. 全功能 IDE | IntelliJ IDEA Ultimate | 框架深度支援 (Spring/Jakarta EE/K8s/DB/HTTP/Profiling)、團隊協作、程式碼品質 | 企業級專業開發、大型單體/微服務、架構治理 |
| 5. 雲端開發環境 | GitHub Codespaces / Gitpod / Coder / 遠端 IDEA | 預置環境、一致性、零配置、隨時隨地 | 團隊標準化、新人入職、CI/CD 整合、安全合規 |
⚠️ 新手鐵律:前 2 週禁止使用 IDE 智能補全/自動 Import/重構。手寫每一行
import、try-with-resources、Stream鏈,強迫大腦內化語法與 API。理解CLASSPATH/模組路徑/輸出目錄結構,才能駕馭建構工具與 IDE,排查環境問題時不會無從下手。
docs.zip,IDE 設定離線文件路徑,Ctrl+Q (IDEA) / Shift+F1 (Eclipse) 即時查看。java.lang、java.util (集合/併發/時間)、java.io/java.nio、java.lang.reflect、java.util.stream、java.time。| 誤區 | 正確認知 |
|---|---|
| Java 會取代 C/C++/C#/Go/Rust | 無最佳語言,只有最適合場景的語言。Java 擅長企業級服務、大數據、Android (歷史)、高併發業務系統 |
| 裝了 IDE 就會寫 Java | IDE 是加速器,非替代品。不懂建構生命週期、類別載入、記憶體模型,IDE 只會幫你更快產出 Bug |
| 只學 Spring Boot 不學 Servlet/JDBC | 框架封裝標準 API。不懂 HttpServletRequest/DataSource/Connection,遇到異常、效能瓶頸、安全漏洞時無法深入診斷 |
| JDK 8 夠用了,不用升級 | JDK 8 2022 結束免費支援。JDK 17/21 帶來虛擬執行緒、Record、模式匹配、ZGC、效能提升 10-20%、安全性增強、現代語法 |
| CLASSPATH 必須手動設定 | 現代專案用 Maven/Gradle 管理依賴,IDE/建構工具自動構建模組路徑。手動 CLASSPATH 僅用於極簡測試 |
JAVA_HOME/PATH、驗證 java --versionjavac/java 編譯執行 HelloWorld、多檔案專案、套件結構javadoc 產生文件、jar 打包、javap -c 反組譯var (JDK 10+)List/Set/Map 介面與 ArrayList/LinkedList/HashSet/TreeSet/HashMap/TreeMap/ConcurrentHashMap 選型try-with-resources、自訂例外、錯誤碼 vs 例外Files/Paths、串流/通道/緩衝區、序列化/JSON (Jackson/Gson)Thread/Runnable/ExecutorService/Future/CompletableFuture/synchronized/Lock/ThreadLocal「千里之行,始於足下。」Java 知識體系龐大,但核心概念有限且穩定。按圖索驥、專案驅動、輸出倒逼輸入,三個月建立扎實基礎,一年進入專業開發行列,三年成為領域專家。從今天的第一行
javac開始,你的 Java 之旅已經啟程。