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

重新認識 Java:語言、平台、JVM 與社群生態的演進

     編輯:Java 相關知識

前言:什麼是 Java?答案隨時代改變

十年前:Applet、位元組碼解譯、效能差、仰賴 Sun。
今天:雲原生、微服務、GraalVM 原生映像、OpenJDK 社群治理、Android/Kotlin/Scala 共舞 JVM。

一、Java 程式語言:在妥協中尋找平衡

核心特徵

  • 面向物件、單繼承、介面多實作
  • 靜態型別、強型別、檢查型異常
  • 自動記憶體管理 (GC)
  • 語法繼承 C/C++ (大括號)、語義受 Smalltalk 影響

爭議點與演進

議題早期現代 (Java 8~21)
基本型別非物件效能優先,破壞純 OO自動裝箱/拆箱、Value Types (Valhalla 專案進行中)
檢查型異常強制處理,API 簽名膨脹Try-with-resources、Functional Interface 不拋檢查異常、Vavr/Either 模式
註解無JSR 175 → 編譯期/執行期處理、Lombok、MapStruct、Spring 生態基石
模組系統無JPMS (Java 9)、強封裝、模組化 JDK、遷移挑戰大

生產力 vs 效能的動態平衡

CPU 週期成本遞減,開發者週期成本上升 → 抽象層不斷上移:
Bytecode → JIT → AOT (GraalVM) → Value Types → Pattern Matching → Virtual Threads (Loom)。
每一次妥協性能換取生產力,最終由硬體紅利填補。

二、Java 平台三大版本

版本定位關鍵差異
Java SE標準桌面/伺服器完整核心 API、JVM、工具鏈
Java EE / Jakarta EE企業級分散式應用SE 超集,Servlet、JPA、CDI、JTA、JSON-P/B 等
Java ME嵌入式/資源受限裝置子集 + 專有 API (MIDP/CLDC)、Android 另闢蹊徑

現代雲原生多基於 SE + 獨立庫 (Spring Boot、MicroProfile) 而非完整 EE 伺服器。

三、JVM:不只是 Java 的執行引擎

執行模式演進

  1. 解譯器:逐條指令轉譯
  2. JIT (C1/C2/G1/ZGC/Shenandoah):熱點偵測 → 編譯優化 → 去優化
  3. AOT (GraalVM Native Image):編譯期生成原生機器碼,啟動極快、記憶體低、適合 Serverless/Function

多語言虛擬機生態

語言特色典型場景
Kotlin現代語法、Null 安全、協程、100% 互通Android、Spring Boot、多平台
Scala函數式+OO、強型別、Akka、Spark巨量資料、高併發領域模型
Groovy動態、DSL、Gradle、Spock 測試建構腳本、測試、規則引擎
ClojureLisp、不可變資料、STM、JVM 互操作資料處理、並發系統
JRuby/JythonRuby/Python 遷移 JVM舊系統整合、腳本化

JSR 292 (invokedynamic) 為動態語言提供高效呼叫支援,Lambda/Method Handle 同受惠。

四、Java 社群治理:JCP 與 OpenJDK 雙軌制

JCP (Java Community Process)

  • 制定標準規格 (JSR):語言、API、JVM 行為
  • 專家組審議、RI (參考實作) + TCK (相容性測試)
  • 批評:Sun/Oracle 主導、專利授權條款、進度緩慢

OpenJDK

  • JDK 參考實作開源 (GPLv2 + CE)
  • 主要貢獻者:Oracle、Red Hat、IBM、Amazon、Microsoft、社群
  • 六個月發布節奏 (LTS 每三年)、多廠商建構版本 (Temurin、Corretto、Zulu、Liberica、Dragonwell…)

關鍵里程碑

  • 2006:Sun 開源 HotSpot/JDK
  • 2010:Oracle 收購 Sun
  • 2017:Java EE 移交 Eclipse 基金會 → Jakarta EE
  • 2018:JCP 改革、Oracle JDK 商業授權變更
  • 2023+:OpenJDK 成為事實標準、虛擬線程 (Loom) 交付、GraalVM 納入 OpenJDK

五、沒有 JVM 的 Java / 沒有 Java 的 JVM

  • GCJ / Excelsior JET / GraalVM Native Image:Java 源碼 → 原生二進制,無需 JVM 部署,適合 CLI 工具、Serverless、邊緣運算。
  • Axiomatic C → Bytecode / ASM / BCEL:非 Java 語言直接生成位元組碼,繞過 javac。
  • JSR 292 / Truffle/Graal:多語言實作框架,JS (Nashorn→GraalJS)、Python (GraalPython)、R (FastR)、WASM 等高效運行於 JVM。

六、展望:下一個十年

  1. Virtual Threads (Project Loom):百萬級併發、同步寫法異步效能、重塑伺服器架構。
  2. Value Types / Primitive Classes (Valhalla):扁平化記憶體佈局、消除物件頭、基本型別即類別。
  3. Pattern Matching / Data-Oriented Programming:Record、Sealed Class、Switch 表達式、解構賦值。
  4. GraalVM Native Image 普及:即時編譯 + AOT 混合、多語言互操作、Serverless 首選。
  5. 模組化演進:強封裝工具化、模組感知建構、減少類路徑地獄。

結語

「什麼是 Java?」不再有單一答案。它是一個語言家族、一個執行平台、一個開放標準、一個多語言生態系統。未來屬於能駕馭這個生態、在抽象層級間自由切換的開發者。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved