Java 自 1995 年問世以來,便以「一次編寫,到處運行」的跨平台特性,迅速成為軟體開發領域的主流語言。無論是企業級應用、行動裝置、嵌入式系統,還是大數據與雲端運算,Java 的身影無處不在。本章將帶您走進 Java 的世界,了解其發展脈絡、核心優勢,以及為何它能經久不衰。
故事始於 1991 年,Sun Microsystems 公司內部啟動了一個代號為「Green」的專案。目標雄心勃勃:設計一種精簡、可移植的程式語言,應用於機上盒、家電控制晶片等資源受限的消費性電子裝置。專案由 James Gosling 與 Patrick Naughton 領導,團隊多為 Unix 與 C++ 背景工程師,這深刻影響了 Java 後來的物件導向設計風格。
為了解決不同處理器架構不相容的問題,團隊採用了經典的「中間碼」模型:原始碼編譯為平台無關的位元碼,再由各平台專屬的解譯器(Java Virtual Machine, JVM)執行。這一設計奠定了 Java 跨平台的基石。
語言最初命名為「Oak」(源自 Gosling 辦公室窗外的橡樹),但因商標衝突而更名。最終選定「Java」—— 一種印尼產咖啡的名稱,寓意這門語言能像咖啡一樣令人振奮、廣為人知。至今,那杯熱氣騰騰的咖啡仍是 Java 的標誌性圖示。
Green 專案早期嘗試開發智慧型遙控器失利,團隊於 1994 年面臨解散。然而,World Wide Web 的爆發式成長帶來了轉機。團隊成員意識到:Java 非常適合編寫網頁瀏覽器,並能在瀏覽器中運行小程式。由此誕生了 HotJava 瀏覽器,並於 1995 年 SunWorld 大會首度亮相,瞬間引爆全球關注。
1995 年底,Netscape 宣佈支援 Java,意味著數百萬瀏覽器用戶能直接運行 Java Applet。隨後 IBM、Oracle(當時為 Inprise)、Symantec 等巨頭紛紛取得授權,連宿敵微軟也在 IE 中內建 JVM(雙方後因兼容性爭議對簿公堂)。1996 年初,JDK 1.0 正式發布;1998 年 Java 2(JDK 1.2)推出,以 Swing 取代 AWT,功能大幅增強,邁向成熟。
「Write Once, Run Anywhere」不只是口號。Java 原始碼編譯為 .class 位元碼,只要目標平台安裝對應 JVM 即可運行。這在異構環境部署、雲端遷移、微服務架構中極具價值。
Java 摒棄 C++ 的多重繼承、指標、運算子多載等複雜特性,提供單一繼承 + 介面機制,語法簡潔嚴謹。所有代碼必須置於類別中,強制執行封裝、繼承、多型三大支柱,降低維護成本。
程式設計師無需手動 malloc/free 或 new/delete,JVM 自動追蹤物件引用並回收無用記憶體,徹底消除記憶體洩漏、野指標等 C/C++ 常見災難。
Thread 類別與 synchronized 關鍵字提供輕量級併發原語;java.net 套件讓 Socket 程式設計像呼叫本地 API 一樣簡單。這使 Java 成為高併發伺服器、分散式系統的首選。
類別載入器機制、位元碼驗證器、安全管理員構成多層防護;編譯期強型別檢查、執行期邊界檢查、異常處理機制,讓錯誤在早期被攔截。
類別在首次使用時才載入,支援運行時動態載入新類別、透過反射檢查類別結構,為插件架構、框架開發(如 Spring、Hibernate)提供底層支撐。
早期 Java 因解譯執行被詬病效能。現代 JVM 採用即時編譯:熱點程式碼動態編譯為機器碼並快取,配合逃逸分析、鎖消除等優化,效能已逼近 C++,滿足絕多數應用場景。
| 問題 | 真相 |
|---|---|
| Java 是 HTML 的延伸嗎? | 否。HTML 是標記語言,Java 是完整程式語言,兩者屬不同範疇。Java 可賦予網頁動態互動能力。 |
| JavaScript 與 Java 有關係嗎? | 無直接關係。JavaScript 原名 LiveScript,因語法類似 Java 且蹭熱度改名,實為瀏覽器端腳本語言。 |
| Java 程式只能在網頁跑嗎? | 否。分為 Applet(瀏覽器沙箱)與 Application(獨立運行,擁有完整系統權限)兩種形態。 |
| 解譯執行太慢,不適合高效能運算? | 早期確實。但 JIT 編譯器成熟後,科學運算、遊戲引擎、高頻交易系統均有 Java 成功案例。 |
| Java 容易上手嗎? | 比 C++ 容易,比 Python 難。關鍵在於理解物件導向思維,並大量實作練習。 |
| Applet 安全性堪慮? | 沙箱機制嚴格限制權限(無法讀寫本地檔案、連接非來源伺服器)。歷年漏洞遠少於 ActiveX,風險可控。 |
Java 從家電嵌入式語言蛻變為企業級開發基石,憑藉的是前瞻的虛擬機架構、開放的生態系統、持續演進的語言特性(Lambda、Stream、Module、Record、Pattern Matching...)。掌握 Java,不僅是學會一門語言,更是獲得通往現代軟體工程核心領域的入場券。