首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 簡介:歷史、特性與架構概覽

     編輯:Java 程式設計入門

Java 從 1990 年代的嵌入式語言「Oak」演變而來,隨著網際網路興起成為跨平台開發主流。本文回顧 Java 發展史,並系統整理其核心特性、JVM 架構、中介軟體角色與已知弱點。

發展歷程

  1. 1990-1994:Sun 公司 James Gosling 領導「Green 專案」,開發 Oak 語言,目標為家電嵌入式系統(互動式電視)。因 MPEG 標準未定案而暫停。
  2. 1995:更名為 Java,Sun 正式發布 JDK 1.0,主打「Write Once, Run Anywhere」跨平台特性,乘網際網路浪潮迅速普及。
  3. 1998:J2EE (Java 2 Enterprise Edition) 推出,確立企業級開發標準 (Servlet, EJB, JMS, JTA 等)。
  4. 2006:Sun 開源 Java (OpenJDK),GPLv2 授權。
  5. 2010:Oracle 收購 Sun,接管 Java 發展。
  6. 2017-至今:Java 9 引入模組系統,Java 11/17/21 為長期支援 (LTS) 版本,六個月釋出節奏。

核心特性 (Java 白皮書關鍵字)

特性說明
簡單性移除 C++ 複雜特性 (指標、多重繼承、運算子多載),語法接近 C/C++,易上手。
物件導向核心為類別/物件,支援封裝、繼承、多型,單根繼承 (Object)。
分散式內建網路庫 (java.net)、RMI、支援 URL 存取資源如同本地檔案。
健壯性強型別、例外處理、自動記憶體管理 (GC)、編譯期/執行期檢查。
安全性沙箱模型、類別載入器隔離、位元組碼驗證、安全性管理員、加密 API。
架構中立編譯為平台無關的位元組碼,由 JVM 解譯/即時編譯執行。
可攜性基本型別大小固定 (int 32-bit 等)、字元採 Unicode、標準庫抽象平台差異。
多執行緒內建 Thread 類別、synchronized、java.util.concurrent 高階併發工具。
動態性執行期類別載入、反射、動態代理、支援熱部署/熱替換。
高效能JIT 編譯器、逃逸分析、內聯優化、現代 GC (G1, ZGC, Shenandoah) 低延遲。

跨平台四維度

  • 跨作業系統/硬體:同一組 .class 檔在 Windows/Linux/macOS/Solaris/AIX 上執行。
  • 跨網路:B/S 架構 (Browser/Server),三層結構:Client / Web/App Server / DB Server。
  • 跨語言 (國際化):java.util.Locale, ResourceBundle, Unicode 內建支援多語系。
  • 跨時間 (版本相容):向後相容極佳,舊位元組碼可在新 JVM 執行,模組系統強化封裝。

JVM (Java 虛擬機器) 架構

軟體 CPU:模擬一個基於堆疊的指令集架構。

  • 類別載入子系統:Bootstrap / Extension / Application 三層載入器,雙親委派模型。
  • 執行引擎:解譯器 + JIT 編譯器 (C1 Client / C2 Server) + 即時編譯決策。
  • 記憶體區域:
    • 堆 : 物件實例、陣列 (GC 主戰場)
    • 方法區 : 類別中繼資料、常數池、靜態變數 (Metaspace, Java 8+)
    • Java 虛擬機堆疊 : 執行緒私有、棧框 (局部變數表、運算堆疊、動態連結、方法返回地址)
    • 本地方法堆疊 : Native 方法呼叫
    • 程式計數器 : 當前執行指令位址
  • 垃圾收集器:Serial, Parallel, CMS, G1, ZGC, Shenandoah,分代/區域/並發/低延遲演進。

中介軟體角色

Java Client 通常為「瘦客戶端」,商業邏輯與資料存取下沉至中介層 (Application Server: WebLogic, JBoss/WildFly, Tomcat+Spring, WebSphere 等)。中介軟體提供:

  • 交易管理 (JTA)
  • 連線池/資料來源
  • 安全性/角色存取控制
  • 叢集/負載平衡/失效轉移
  • 訊息佇列 (JMS)

中介軟體本身運行於 JVM 之上,故同樣具備跨平台特性,解決異構環境整合問題。

已知弱點與挑戰

  1. 啟動/暖機較慢:JVM 啟動、類別載入、JIT 編譯需時間,不適合極短命程序 (Serverless 冷啟動挑戰)。
  2. 記憶體佔用較大:JVM 基礎開銷 (Metaspace, Code Cache, Thread Stacks, GC 保留) 通常 > 100MB。
  3. 安全性攻擊面:反序列化漏洞、Log4j2 RCE、不安全的反射/代理用法,需持續修補與最小權限原則。
  4. GUI 應用體驗:Swing/JavaFX 與原生 UI 風格差異,桌面應用市佔率低。
  5. 大型單體應用啟動慢:類別掃描、依賴注入容器初始化 (Spring) 耗時,微服務化、GraalVM Native Image 為改善方向。

現代 Java 生態關鍵字

  • 模組系統 (JPMS):module-info.java、強封裝、自訂運行時映像 (jlink)。
  • GraalVM Native Image:提前編譯 (AOT) 為原生執行檔,毫秒級啟動、低記憶體。
  • Virtual Threads (Java 21+):輕量級執行緒 (綠色執行緒),百萬級併發不再依賴平台執行緒。
  • Records / Pattern Matching / Sealed Classes:資料導向程式設計語法糖。
  • Spring Boot 3 / Quarkus / Micronaut:雲原生框架,支援 GraalVM、Virtual Threads、觀測性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved