| 維度 | Java | JavaScript |
|---|---|---|
| 開發公司 | Sun Microsystems | Netscape + Sun 合作 |
| 前身 | Oak 語言 | LiveScript |
| 類型系統 | 強類型,編譯時檢查 | 弱類型,運行時檢查 |
| 面向對象 | 純面向對象 (一切皆對象) | 基於原型的基於對象 |
| 執行方式 | 編譯為字節碼,JVM 運行 | 解釋執行,瀏覽器直接解析 |
| 代碼形式 | .class 字節碼文件 | 文本腳本嵌入 HTML |
| HTML 標識 | <applet> (已淘汰) | <script> |
| 綁定方式 | 靜態綁定 (編譯期) | 動態綁定 (運行期) |
Java 強制面向對象設計,即使簡單程序也需定義類。JavaScript 基於原型鏈,提供豐富內置對象 (Window, Document 等),支援事件驅動編程。
Java 源碼需編譯為字節碼,由 JVM 解釋/即時編譯執行,實現跨平台。JavaScript 源碼以文本形式傳輸,瀏覽器引擎直接解釋執行。
// Java: 必須聲明類型 Integer x; String y; x = 1234; y = "4321"; // JavaScript: 動態類型 var x = 1234; // 數值型 var y = "4321"; // 字符串 x = "hello"; // 可動態改變類型
Java 類文件獨立於 HTML,通過 <applet> 引用 (現已廢棄)。JavaScript 代碼可直接嵌入 HTML,或作為 .js 文件引入,與 DOM 緊密結合。
Java 有明確的堆/棧區分,垃圾回收器管理內存。JavaScript 變量提升、閉包、原型鏈繼承等特性獨特,內存管理由 JS 引擎自動管理。
1995 年 Netscape 為瀏覽器增加腳本能力,最初命名 Mocha → LiveScript。為蹭 Java 熱度,獲 Sun 授權改名 JavaScript。雙方合作推出,但語言設計理念完全不同。
「Java 是 JavaScript 的父親」純屬謠言。兩者僅在語法風格上借鑒了 C 語言,核心設計哲學、運行機制、應用領域截然不同。理解差異有助於技術選型與跨語言協作。