課程第一週核心知識點梳理:Java 跨平台機制、三大核心組件區別、運行流程、開發環境變量配置、主流 IDE 對比、Oracle JDK 與 OpenJDK 差異,適合入門學習者建立完整知識骨架。
Java 源碼 → 編譯器 → 字節碼 (.class) → JVM 解釋/即時編譯 → 機器碼運行。
javac HelloWorld.java # 編譯 → HelloWorld.class (字節碼)
java HelloWorld # 運行 → JVM 加載類 → 執行 main 方法
javac:前端編譯器,語法檢查、生成字節碼。java:啟動 JVM,類加載器加載 HelloWorld.class,查找 main 入口執行。+-------------------------- JDK (Java Development Kit) --------------------------+
| +------------------------- JRE (Java Runtime Environment) ------------------+ |
| | +------------------- JVM (Java Virtual Machine) -----------------------+ | |
| | | 類加載器 | 執行引擎(解釋器+JIT) | 運行時數據區(堆/棧/方法區) | | | |
| | +---------------------------------------------------------------------+ | |
| | +------------------- 核心類庫 (rt.jar: lang/util/io/...) -------------+ | |
| | +---------------------------------------------------------------------+ | |
| +--------------------------------------------------------------------------+ |
| +------------------- 開發工具: javac, javadoc, jdb, jconsole, ... --------+ |
+------------------------------------------------------------------------------+
HelloWorld:全限定類名 (不含 .class 後綴)。HelloWorld.class,加載並執行其 main 方法。java com.example.HelloWorld。JDK安裝目錄/bin 加入系統 PATH。javac、java、javadoc 等命令在任意目錄下可直接調用。C:\JDK\bin\javac。| 階段 | Java | C/C++ |
|---|---|---|
| 源碼 | .java | .c/.cpp |
| 編譯產物 | .class (字節碼,平台無關) | .obj/.o (目標文件,平台相關) |
| 鏈接/運行 | JVM 解釋/ JIT 編譯 → 機器碼 | 鏈接器 → .exe (Windows) / .out (Linux) |
| 可移植性 | 高 (字節碼統一) | 低 (需重新編譯) |
| 維度 | Oracle JDK | OpenJDK |
|---|---|---|
| 授權協議 | OTN License (商業用途需付費) | GPL v2 + Classpath Exception (免費商用) |
| 構建來源 | OpenJDK + 商業特性 (Flight Recorder 等) | 社區開源構建 |
| 發布節奏 | LTS 長期支持 (8/11/17/21...) | 每 6 個月特性版,無官方 LTS |
| 字體渲染 | 商業字體引擎 | FreeType 開源替代 |
| 部署功能 | 含 Java Web Start, Plugin, Control Panel | 無部署模組 (需額外安裝) |
| 商標 | 可用 Java 商標 | 顯示 OpenJDK 版本字符串 |
生產選型建議:優先選擇 OpenJDK 構建版 (Adoptium/Temurin、Amazon Corretto、Azul Zulu),免費、長期支持、無商業授權風險。Oracle JDK 仅在必须使用商业特性(如 Java Flight Recorder 企業版功能)時考慮。
javac/java 命令、CLASSPATH、模塊路徑基礎。