Java 從 1991 年 Green 項目啟動至今已超 30 年,經歷了從嵌入式語言到企業級平台霸主的蛻變。本文梳理 Java 完整發展時間線,深度解讀白皮書 11 大核心特性(簡單性、面向對象、網絡技能、健壯性、安全性、體系結構中立、可移植性、解釋型、高性能、多線程、動態性),並展望現代 Java 演進趨勢。
| 年份 | 版本/里程碑 | 關鍵特性/事件 |
| 1991 | Green 項目啟動 | Patrick Naughton、James Gosling 領軍,目標:有線電視機頂盒嵌入式語言,需小巧、跨平台 |
| 1992 | 首個產品發布 | 智能遙控器 *7,無商業成功 |
| 1994 | First Person 解散 | 團隊回歸 Sun,Web 爆發,開發 HotJava 瀏覽器演示 Applet |
| 1995.5.23 | SunWorld 發布 Java 1.0 | 正式命名 Java,Applet 技術引爆關注,"Write Once, Run Anywhere" 概念確立 |
| 1996.1 | JDK 1.0 正式版 | 基礎庫、AWT、Applet,但無 JIT、集合框架不完善 |
| 1997 | JDK 1.1 | JDBC、RMI、反射、內部類、事件委派模型、JIT 編譯器引入 |
| 1998 | J2SE 1.2 (Java 2) | Collections 框架、Swing、JIT 成熟、JFC、定義三大版本:SE/EE/ME |
| 2000 | J2SE 1.3 | HotSpot VM 成為默認、JavaSound、JNDI、性能優化 |
| 2002 | J2SE 1.4 | NIO、正則表達式、日志 API、XML 解析器、斷言、性能大幅提升 |
| 2004 | J2SE 5.0 (1.5) | 里程碑版本:泛型、註解、枚舉、自動裝箱、foreach、varargs、靜態導入、JMX |
| 2006 | Java SE 6 | 腳本引擎 (JSR 223)、JAX-WS、JConsole、性能優化、開源 OpenJDK 進程啟動 |
| 2009 | Oracle 收購 Sun | Java 發展放緩,版本釋放週期不固定 |
| 2011 | Java SE 7 | try-with-resources、diamond 操作符、NIO.2、Fork/Join、invokedynamic、G1 GC |
| 2014 | Java SE 8 (LTS) | 里程碑版本:Lambda、Stream API、Optional、新日期時間、默認方法、Nashorn JS、Metaspace 替代 PermGen |
| 2017 | Java SE 9 | 模塊系統 (JPMS)、JShell、HTTP/2 Client、私有接口方法、多版本 JAR |
| 2018.3 | Java SE 10 | 局部變量類型推斷 (var)、GC 接口、線程局部握手 |
| 2018.9 | Java SE 11 (LTS) | HTTP Client 標準化、Lambda 參數 var、String 新方法、飛行記錄器、移除 Java EE/ CORBA 模塊 |
| 2019.3 | Java SE 12 | Switch 表達式 (預覽)、Shenandoah GC、Microbenchmark Suite |
| 2019.9 | Java SE 13 | 文本塊 (預覽)、ZGC 生產就緒、Socket API 重寫 |
| 2020.3 | Java SE 14 | Record (預覽)、Switch 表達式轉正、NVM 支持、移除 CMS GC |
| 2020.9 | Java SE 15 | 文本塊轉正、隱藏類、Sealed Classes (預覽)、ZGC 改進、移除 Nashorn |
| 2021.3 | Java SE 16 | Record 轉正、模式匹配 instanceof、Vector API (孵化) |
| 2021.9 | Java SE 17 (LTS) | Sealed Classes 轉正、模式匹配 switch (預覽)、移除 RMI 激活、強封裝 JDK 內部 API |
| 2022.3 | Java SE 18 | 簡單 Web 服務器、UTF-8 默認、代碼片段 API、Vector API 三次孵化 |
| 2022.9 | Java SE 19 | 虛擬線程 (預覽)、結構化並發 (孵化)、模式匹配 switch 三次預覽 |
| 2023.3 | Java SE 20 | 範圍值 (預覽)、Record 模式 (預覽)、虛擬線程二次預覽 |
| 2023.9 | Java SE 21 (LTS) | 里程碑版本:虛擬線程轉正、模式匹配 switch 轉正、Record 模式、字符串模板 (預覽)、結構化並發、未命名變量、Key Encapsulation API |
| # | 特性 | 白皮書原意 | 現代視角解讀 |
| 1 | 簡單性 | 易學 (近似 C++)、小巧 (嵌入式) | 語法相對簡單,但類庫龐大;Java 8+ Lambda/var 進一步簡化樣板代碼 |
| 2 | 面向對象 | 數據與行為封裝、接口導向、單繼承+接口 | 核心範式不變,Record/Sealed Classes 增強數據建模能力 |
| 3 | 網絡技能 | 內置 Socket/URL/RMI、分布式對象通信 | Netty/gRPC/HTTP Client 等生態更強,原生 API 較底層 |
| 4 | 健壯性 | 無指針算術、自動內存管理、編譯期/運行期雙重檢查 | GC 演進 (G1/ZGC/Shenandoah) 解決大內存低延遲,類型系統更強 |
| 5 | 安全性 | 沙箱模型、類加載器隔離、安全管理器、加密 API | 安全管理器已棄用,模塊系統強封裝、Supply Chain Security 成新焦點 |
| 6 | 體系結構中立 | 字節碼跨硬件平台、JVM 屏蔽底層差異 | GraalVM Native Image 打破「必須 JVM」限制,支援 AOT 編譯 |
| 7 | 可移植性 | 基本類型固定大小 (int 32bit)、無實現相關特性 | 規範嚴格,跨平台兼容性極佳,容器化部署更無差異 |
| 8 | 解釋型 | 字節碼在 JVM 解釋執行、便於調試/動態加載 | JIT 即時編譯 + AOT 混合模式,解釋只是啟動/冷代碼階段 |
| 9 | 高性能 | JIT 編譯器優化、內聯、逃逸分析、向量化 | 性能逼近 C++,GraalVM JIT 更激進,虛擬線程解決高併發吞吐 |
| 10 | 多線程 | 內置 Thread/監視器、平台無關的線程模型 | 虛擬線程 (Project Loom) 實現百萬級併發,結構化並發簡化協作 |
| 11 | 動態性 | 運行時類型信息、動態加載、反射、代理 | 模塊系統限制內部 API 反射,動態代理/字節碼增強 (ASM/ByteBuddy) 成主流 |