**Java ≠ JavaScript**。兩者僅在名稱上共享前四字母「Java」,這是 Netscape 為蹭 Sun Java 熱度而進行的行銷操作 (原名 LiveScript,1995 年 12 月更名)。**無任何語言設計血緣、執行環境、類型系統、應用場景關聯。**
| 維度 | Java | JavaScript |
|---|---|---|
| 誕生時間/公司 | 1995 年 5 月 / Sun Microsystems (James Gosling 團隊) | 1995 年 12 月 / Netscape (Brendan Eich, 10 天設計) |
| 語言範式 | 靜態強類型、類別基礎 OOP、編譯執行 (JIT/AOT) | 動態弱類型、原型基礎 OOP、解釋/JIT 執行 |
| 執行環境 | JVM (跨平台位元組碼)、GraalVM Native Image、Android ART | 瀏覽器引擎 (V8/SpiderMonkey/JavaScriptCore)、Node.js/Deno/Bun (伺服器端) |
| 類型系統 | 編譯期檢查、泛型、介面、抽象類、模組系統 | 運行期檢查、動態增刪屬性、TypeScript 提供靜態類型層 |
| 併發模型 | 多執行緒 (共享記憶體、鎖、CAS、Actor 庫) | 單執行緒事件迴圈 + 非阻塞 I/O (Promise/async-await)、Web Workers/Worker Threads |
| 模組系統 | JAR/模組 (JPMS)、Maven/Gradle 依賴管理 | ES Modules (import/export)、CommonJS (require)、npm/yarn/pnpm 生態 |
| 核心應用場景 | 企業級後端、大數據 (Flink/Spark)、Android (歷史)、桌面、嵌入式、高頻交易 | Web 前端 (React/Vue/Svelte/Angular)、全棧 (Node.js/Next.js/Nuxt)、Serverless、工具鏈 |
| 標準化組織 | JCP (Java Community Process) / OpenJDK / Eclipse Foundation (Jakarta EE) | ECMA International (ECMA-262 標準)、TC39 委員會 |
**「Java is to JavaScript as Car is to Carpet.」** (經典比喻:Java 之於 JavaScript,如汽車之於地毯)。理解兩者本質差異,避免認知混淆,才能在適當場景選擇適當工具,或成為稀缺的**雙棲工程師**。