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

Java 發展史:從 Oak 到 Java 21 的關鍵里程碑完整時間軸

     編輯:Java 相關知識

前言

Java 自 1995 年誕生以來,經歷了從 Oak 到現代模組化、函數式、雲原生平台的演進。本文梳理 **28 年 (1995-2023)** 關鍵版本里程碑、架構變革、語法革新與生態演變,助你建立完整歷史脈絡。

一、誕生與早期 (1991-1996)

時間事件關鍵意義
1991.04Green Project 啟動James Gosling 領導,目標:消費性電子裝置通用平台 (機頂盒、家電)
1992Oak 語言誕生命名靈感來自辦公室外的橡樹,後因商標衝突改名
1995.05.23**Java 1.0 發布** (SunWorld)**「Write Once, Run Anywhere」** 口號確立,Applet 燃爆瀏覽器端
1996.01.23JDK 1.0 正式版首個生產級運行環境,含 Sun Classic VM (純解釋執行)、AWT
1996.05首屆 JavaOne 大會確立 Java 開發者年度盛會傳統

二、奠基擴展期:JDK 1.1 (1997)

  • 核心 API:JDBC (資料庫連接)、JavaBeans (組件模型)、RMI (遠端方法調用)、JAR 封裝格式
  • 語法新增:內部類、反射
  • 版本命名:1.1.4 Sparkler → 1.1.8 Chelsea (啟動代號命名慣例)

三、企業級平台化:J2SE/J2EE/J2ME 三劍客 (1998-2000)

版本時間代號里程碑特性
JDK 1.21998.12Playground**三大版本劃分** (J2SE/EE/ME)、Swing、Collections 框架、JIT 編譯器內建、strictfp、Java Plug-in、IDL、EJB
JDK 1.32000.05KestrelHotSpot VM 成為預設、JNDI 納入平台、RMI over IIOP、JavaSound、Java 2D 增強、Timer API
JDK 1.42002.02Merlin**成熟里程碑**:正則表達式、NIO、日誌 API、XML 解析器/XSLT、異常鏈、圖片 I/O、偏好 API

關鍵轉折:HotSpot VM 與 JIT

  • 1999 HotSpot 發布 (Longview Technologies 開發,Sun 收購)
  • JDK 1.3 起成為預設 VM,引入**即時編譯 (JIT)**、自適應優化、分代垃圾回收,效能飛躍。

四、語法現代化大躍進:JDK 5 (2004)

代號 Tiger — Java 語法易用性最大單次升級:

JVM 層:Java Memory Model (JMM) 修正、java.util.concurrent 並發包 (AQS、線程池、鎖、原子類)。

五、長期支援 (LTS) 時代開啟:JDK 6/7/8

特性語法範例影響
泛型List list = new ArrayList<>();類型安全、消除強制轉型、API 表達力飛躍
自動裝箱/拆箱Integer i = 10; int n = i;基本型別與包裝類無縫轉換
增強 for 迴圈for (String s : list) { ... }簡化集合/陣列遍歷
可變參數void print(String... args)替代陣列包裝
枚舉enum Season { SPRING, SUMMER }類型安全常數、支援方法/欄位
靜態導入import static java.lang.Math.*;簡化常用靜態方法調用
註解@Override, @Deprecated, @SuppressWarnings元資料編程基石,催生 Spring/Hibernate/JPA 生態
版本時間代號核心特性狀態
JDK 62006.12Mustang腳本引擎 (JSR-223)、編譯器 API、輕量 HTTP Server、大量 VM 優化 (鎖膨脹/消除、類載入、GC)2013 結束公共更新
JDK 72011.07DolphinG1 GC (實驗→正式)、NIO.2 (Path/Files)、try-with-resources、菱形語法 <>、Switch on String、二進位字面值、動態語言支援 (invokedynamic)2015 結束公共更新
JDK 82014.03SpiderLambda 表達式、Stream API、函數式介面、Optional、新日期時間 API (java.time)、預設方法、Nashorn JS 引擎、Metaspace 取代 PermGenLTS (至 2030+)

JDK 8 里程碑意義

  • **函數式編程進入主流**,徹底改變 Java 代碼風格 (集合操作、併發、回調)。
  • **最長壽 LTS 版本**,至今仍佔生產環境 50%+ 份額。
  • OpenJDK 成為參考實現,Oracle JDK 商業授權模式轉變 (2019 起)。

六、模組化與釋放節奏重塑:JDK 9-17

版本時間核心特性關鍵意義
JDK 92017.09模組系統 (JPMS/Jigsaw)、JShell REPL、集合工廠方法 List.of()、Stream 增強、私有介面方法、HTTP/2 Client (孵化)、多版本 JAR強封裝、模組化依賴、啟動效能優化
JDK 102018.03局部變數型別推斷 var、GC 平行化 (G1)、應用程式類資料共享 (AppCDS)、根憑證開源六個月釋放節奏確立、型別推斷減少樣板
JDK 112018.09HTTP Client 標準化、String 方法增強、Lambda 參數 var、Nest-Based 存取控制、ZGC (實驗)、Epsilon GC、移除 Java EE/COBRA 模組LTS (至 2026+)、長期支援基石版本
JDK 122019.03Switch 表達式 (預覽)、Shenandoah GC、Microbenchmark Suite、JVM Constants APISwitch 表達式奠基
JDK 132019.09文字區塊 (預覽)、Switch 表達式 (預覽二)、ZGC 釋放未用記憶體、Socket API 重寫多行字串語法雛形
JDK 142020.03Record (預覽)、模式匹配 instanceof (預覽)、Switch 表達式標準化、NVM 支援、JFR 事件串流資料載體 Record 登場
JDK 152020.09密封類、文字區塊標準化、Record 二次預覽、ZGC 生產就緒、EdDSA 加密、隱藏類領域建模工具鏈成熟
JDK 162021.03Record 標準化、模式匹配 instanceof 標準化、Vector API (孵化)、外部記憶體 API (孵化)、Unix Domain Socket資料導向編程正式可用
JDK 172021.09密封類標準化、模式匹配 Switch (預覽)、外部記憶體/函數 API (孵化)、移除 RMI 激活、強封裝 JDK 內部 API、Apple Silicon 支援LTS (至 2029+)、現代化 Java 基石

七、現代特性成熟期:JDK 18-21

版本時間核心特性
JDK 182022.03UTF-8 預設字符集、簡單 Web Server (jwebserver)、Code Snippets API、Vector API 三孵化、模式匹配 Switch 二預覽
JDK 192022.09虛擬執行緒 (Project Loom) 預覽、Record 模式 (預覽)、結構化並發 (孵化)、外部函數/記憶體 API (孵化二)、Linux/RISC-V 移植
JDK 202023.03範圍值 (Scoped Values) 孵化、Record 模式二預覽、模式匹配 Switch 三預覽、虛擬執行緒二預覽、結構化並發二孵化
JDK 212023.09虛擬執行緒 (標準化)、**結構化並發 (預覽)**、**範圍值 (預覽)**、**Record 模式 (標準化)**、**模式匹配 Switch (標準化)**、**未命名類/實例 main (預覽)**、**String 模板 (預覽)**、**分代 ZGC (標準化)**、**Key Encapsulation API**

JDK 21 里程碑:虛擬執行緒 (Virtual Threads) — 併發模型範式轉移

// 傳統平台執行緒 (OS 線程 1:1) - 昂貴、數量受限
ExecutorService executor = Executors.newFixedThreadPool(200);

// JDK 21 虛擬執行緒 (M:N 調度) - 輕量、百萬級可行
ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor();
for (int i = 0; i < 1_000_000; i++) {
    executor.submit(() -> {
        // 阻塞式 IO (資料庫、HTTP) 不再佔用平台執行緒
        String resp = httpClient.get(url);
        db.save(resp);
    });
}
  • **吞吐量提升 10-100 倍** (高併發阻塞場景)
  • **代碼風格回歸同步阻塞寫法**,無需 Reactive/Callback 地獄
  • **無縫兼容舊代碼**,Thread.startVirtualThread()、Executors.newVirtualThreadPerTaskExecutor()

八、版本策略與生態現狀 (2024)

策略說明
釋放節奏**每 6 個月** 一個功能版本 (3 月、9 月)
LTS 版本**每 2 年** 一個 (JDK 8, 11, 17, 21, 25...)
支援週期Oracle: LTS 8 年 (付費);社群: 6 個月 (功能版) / 4-8 年 (LTS, 如 Eclipse Temurin, Azul Zulu)
主流分發Eclipse Temurin (Adoptium)、Azul Zulu、Amazon Corretto、Oracle JDK、IBM Semeru、Red Hat、Google (內部)
遷移建議**JDK 8 → 17/21 LTS**;模組化遷移 (--add-opens)、移除內部 API (sun.misc.*)、GC 調優參數更新

九、Java 語言核心特性總結 (官方白皮書)

  1. 簡單性:移除 C++ 複雜特性 (指針、多重繼承、運算子重載)
  2. 面向物件:單繼承、介面、多態、封裝
  3. 分散式:RMI、HTTP Client、微服務生態
  4. 解釋執行/即時編譯:JVM 跨平台、JIT 優化
  5. 健壯性:強類型、自動記憶體管理、異常處理
  6. 安全性:沙箱、類載入器、位元組碼驗證、安全管理器
  7. 架構中立:位元組碼與平台無關
  8. 可移植性:基本型別固定大小、Unicode 字符
  9. 高效能:JIT、AOT (GraalVM)、向量化、虛擬執行緒
  10. 多執行緒:內建同步、並發包、虛擬執行緒
  11. 動態性:反射、動態載入、代理、JVMTI

結語

從 Oak 到 JDK 21,Java 歷經 **「平台戰爭贏家」→「企業標準」→「語法現代化」→「模組化重構」→「雲原生併發重塑」** 五大階段。**虛擬執行緒 (Project Loom) 標誌著 Java 進入「輕量級併發原生」新紀元**。掌握版本演進脈絡,能幫助團隊做出理性的技術選型、遷移規劃與人才培養決策。

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