| 維度 | C 語言 | Java (含 J2ME/ME) |
|---|---|---|
| 設計哲學 | 「信任程式設計師」,提供硬體抽象層,保留完全控制權 | 「保護程式設計師」,強制物件導向、記憶體安全、沙箱隔離 |
| 執行模型 | 編譯 → 機器碼 → 直接在 CPU/OS 上裸跑 | 編譯 → Bytecode → JVM 解譯/JIT/AOT → 受管執行環境 |
| 記憶體管理 | 手動 `malloc/free`、RAII 風格、自定義分配器 | 自動 GC (分代、G1、ZGC、Shenandoah…),不可手動釋放 |
| 型別系統 | 靜態、弱型別(隱含轉換多)、無泛型、標準庫極薄 | 靜態、強型別、泛型 (擦除)、豐富標準庫 (Collections, Stream, NIO) |
| 跨平台策略 | 原始碼級可移植:重新編譯、條件編譯、平台抽象層 | 二進制級可移植:Write Once, Run Anywhere (JVM 屏蔽 OS/硬體差異) |
| 效能特徵 | 啟動極快、記憶體佔用極低、確定性延遲、易向量化/內建函式 | 啟動慢 (JVM Warmup)、記憶體基線高、JIT 熱點優化後極強、GC 停頓不可控 |
| 互操作 | 所有語言的通用 ABI,FFI 原生 | JNI/JNA 橋接 C/C++,開銷大、易崩潰、簽名繁瑣 |
| 場景 | 首選 | 理由 |
|---|---|---|
| 作業系統核心、驅動、裸機嵌入式、RTOS | C / Rust | 無執行期、確定性、硬體存取、極小記憶體 |
| 高頻交易、遊戲引擎核心、即時多媒體處理 | C / C++ / Rust | 微秒級延遲、SIMD/GPU 直接控制、記憶體池 |
| 企業級後端、微服務、雲原生、中大型團隊協作 | Java / Go / C# | 生態成熟、GC 降低認知負載、反射/註解驅動框架、工具鏈完善 |
| Android App (歷史) | Java (早期) → Kotlin (現代) | Google 官方支援、JVM 生態、漸進式遷移 |
| 跨平台桌面/行動 App (單一代碼庫) | Flutter (Dart) / React Native (TS) / Compose Multiplatform (Kotlin) | UI 一致性、熱重載、原生效能 |
| 腳本、自動化、資料科學、快速原型 | Python / JavaScript / Lua | 語法簡潔、庫豐富、REPL 互動 |
C 是**計算機系統的基石**,Java 是**企業級應用的主力**。二者非對立,而是**分層協作**。掌握 C 的底層視角 + Java 的工程生態,你將具備從晶體管到業務架構的全棧穿透力。