| 語言 | 執行方式 | 編譯產物 | 執行環境 | 效能 | 特性 |
|---|---|---|---|---|---|
| C | 完全編譯 | 機器碼 (native code) | 作業系統 (直接在 CPU 跑) | 最快 | 低階控制,需手動管理記憶體 |
| Java | 編譯 + JVM 解譯/JIT | Bytecode (.class) | JVM (跨平台) | 中等(JIT 可接近 C) | 自動 GC,跨平台性強 |
| JavaScript | 直譯 + JIT | IR / 即時轉換 | 瀏覽器 / Node.js | 最慢(但現代引擎已優化) | 動態語言,靈活,跨平台 |
編譯型語言 (Compiled Language)
執行原理:
C 程式碼經過 編譯器 (Compiler) 轉換成 機器碼 (Machine Code)。
編譯好的執行檔直接在作業系統上跑。
特點:
執行速度快(接近底層硬體)。
需要不同平台重新編譯(不具可攜性)。
管理記憶體需要手動(malloc/free)。
半編譯半直譯 (Compiled + Interpreted / JVM Model)
執行原理:
Java 原始碼先經過 javac 編譯器 編譯成 Bytecode (.class)。
Bytecode 交給 Java Virtual Machine (JVM) 執行。
JVM 會解譯 (Interpret) Bytecode,或使用 JIT (Just-In-Time Compiler) 動態編譯成本機機器碼再執行。
特點:
一次編譯,到處執行(跨平台,因為 JVM 存在於各平台)。
相比 C 稍慢,但 JIT 可提升效能。
自動垃圾回收 (Garbage Collection)。
直譯型語言 (Interpreted Language,現代多為 JIT + Interpreter 混合)
執行原理:
JS 程式碼通常嵌入在 HTML 內,由 瀏覽器內建的 JavaScript 引擎(如 Chrome 的 V8, Firefox 的 SpiderMonkey)執行。
傳統上是 解譯執行 (Interpreted),但現代引擎會先將部分程式碼編譯成 中間表示 (IR),再 JIT 成機器碼以提升速度。
特點:
不需要事先編譯,隨寫隨執行(動態性高)。
跨平台(依賴於瀏覽器或 Node.js 執行環境)。
動態型別,執行效率通常比 Java、C 慢。