Java **語法風格繼承自 C/C++**,但執行模型、記憶體管理、類型系統、生態定位截然不同。Java 不是 C 的超集,也不是「帶 GC 的 C++」,而是獨立設計的**管理式、跨平台、企業級**語言。
| 維度 | C 語言 | Java |
|---|---|---|
| 執行模型 | 編譯為原生機器碼,直接在硬體/OS 上運行 | 編譯為 Bytecode,在 JVM 上解釋/JIT 執行 |
| 記憶體管理 | 手動 `malloc/free`,程式設計師完全控制 | 自動垃圾回收 (GC),開發者無感知 |
| 指標 | 顯式指標運算,任意記憶體訪問 | 無指標,物件引用隱式管理,安全性高 |
| 多重繼承 | 不支援(結構體無方法) | 介面多實現模擬,單一類別繼承 |
| 泛型 | 無(靠巨集/void* 模擬) | 類型擦除泛型,運行期無泛型資訊 |
| 預處理器 | 強大 (`#define`、`#include`、條件編譯) | 無(靠註解處理器/建構工具替代) |
| 標準庫 | 極精簡,依賴 POSIX/平台 API | 龐大統一庫 (collections, I/O, concurrency, network, crypto...) |
| 部署單元 | 可執行檔 / 共享庫 | JAR/WAR/EAR,類載入器動態載入 |
| 效能特徵 | 啟動快、峰值效能高、記憶體佔用低 | 啟動慢 (JIT 預熱)、長時間運行效能逼近 C、記憶體佔用高 |
| 主要陣營 | 系統軟體、嵌入式、高效能、編譯器 | 企業級後端、Android (早期)、大數據、金融中台 |
Java 與 C 是**針對不同問題域優化的兩種極端設計**:C 追求極致控制與效能,Java 追求開發效率與跨平台穩定。理解兩者差異與互補,能讓你在系統級與應用級邊界自由穿梭,成為真正的全棧工程師。