一部全網最全的 JDK 發展歷史軌跡圖

朱小廝的部落格發表於2022-12-08

Java語言的相關組織和規範(其他語言也有類似的組織):

  • JCP:(Java Community Process)由世界上各個為 Java 發展操心的人士組成的社群,參與 定義 Java 新特性和新版本制定標準的組織。
  • JSR:(Java Specification Requests)Java 語言規範請求文件,你可以對 Java 提出新的要求,然後 Java 相關的組織投票決定是否透過,透過後就將這個要求寫入 JSR 中,並且最終給出一個開源的實現。
  • JEP:(Java Enhancement Proposal),Java 增強建議,收集大家對於 JDK 的建議,起草增強 Java 哪些功能的方案,為 JDK 新版本釋出及相關工作指定路線。

JAVA 1.0 ,代號Oak(橡樹)

於1996-01-23發行

JAVA 1.1

1997-02-19發行,主要更新內容:

  1. 引入JDBC
  2. 新增內部類支援
  3. 引入JAVA BEAN
  4. 引入RMI
  5. 引入反射

JAVA 1.2, 代號Playground(操場)

1998-12-8發行,主要更新內容:

  1. 引入集合框架
  2. 對字串常量做記憶體對映
  3. 引入JIT(Just In Time)編譯器
  4. 引入打包檔案數字簽名
  5. 引入控制授權訪問系統資源策略工具
  6. 引入JFC(Java Foundation Classes),包括Swing1.0,拖放和Java2D類庫
  7. 引入Java外掛
  8. JDBC中引入可滾動結果集,BLOB,CLOB,批次更新和使用者自定義型別
  9. Applet中新增聲音支援

JAVA1.3,代號Kestrel(紅隼)

2000-5-8釋出,主要更新內容:

  1. 引入Java Sound API
  2. 引入jar檔案索引
  3. 對Java各方面多了大量最佳化和增強
  4. Java Platform Debugger Architecture用於 Java 調式的平臺。

JAVA 1.4,代號Merlin(隼)

2004-2-6釋出(首次在JCP下發行),主要更新內容:

  1. 新增XML處理
  2. 新增Java列印服務(Java Print Service API)
  3. 引入Logging API
  4. 引入Java Web Start
  5. 引入JDBC 3.0 API
  6. 引入斷言
  7. 引入Preferences API
  8. 引入鏈式異常處理
  9. 支援IPV6
  10. 支援正規表示式
  11. 引入Image I/O API
  12. NIO,非阻塞的 IO,最佳化 Java 的 IO 讀取。

JDK  5.0,代號Tiger(老虎),有重大改動

2004-9-30釋出,主要更新內容:

  1. 引入泛型
  2. For-Each迴圈 增強迴圈,可使用迭代方式
  3. 自動裝箱與自動拆箱
  4. 引入型別安全的列舉
  5. 引入可變引數
  6. 新增靜態引入
  7. 引入註解
  8. 引入Instrumentation
  9. 提供了 java.util.concurrent 併發包。

JDK 6,代號Mustang(野馬)

2006-12-11釋出,主要更新內容:

  1. 引入了一個支援指令碼引擎的新框架(基於 Mozilla Rhino 的 JavaScript 指令碼引擎)
  2. UI的增強
  3. 對WebService支援的增強(JAX-WS2.0 和 JAXB2.0)
  4. 引入JDBC4.0API
  5. 引入Java Compiler API
  6. 通用的Annotations支援

JDK 7,代號Dolphin(海豚)

2011-07-28釋出,這是sun被oracle收購(2009年4月)後的第一個版本,主要更新內容:

  1. switch語句塊中允許以字串作為分支條件
  2. 在建立泛型物件時應用型別推斷,比如你之前版本使用泛型型別時這樣寫 ArrayList<User> userList= new ArrayList<User>();,這個版本只需要這樣寫 ArrayList<User> userList= new ArrayList<>();,也即是後面一個尖括號內的型別,JVM 幫我們自動型別判斷補全了。
  3. 在一個語句塊中捕獲多種異常
  4. 新增try-with-resources語法支援,使用檔案操作後不用再顯示執行close了。
  5. 支援動態語言
  6. JSR203, NIO.2,AIO,新I/O檔案系統,增加多重檔案的支援、檔案原始資料和符號連結,支援ZIP檔案操作
  7. JDBC規範版本升級為JDBC4.1
  8. 引入Fork/Join框架,用於並行執行任務
  9. 支援帶下劃線的數值,如 int a = 100000000;,0 太多不便於人閱讀,這個版本支援這樣寫 int a = 100_000_000,這樣就對數值一目瞭然了。
  10. Swing元件增強(JLayer,Nimbus Look Feel…)參考

JDK 8

2014-3-19釋出,oracle原計劃2013年釋出,由於安全性問題兩次跳票,是自JAVA5以來最具革命性的版本,主要更新內容:

  1. 介面改進,介面居然可以定義預設方法實現和靜態方法了。
  2. 引入函式式介面
  3. 引入Lambda表示式
  4. 引入全新的Stream API,提供了對值流進行函式式操作。
  5. 引入新的Date-Time API
  6. 引入新的JavaScrpit引擎Nashorn
  7. 引入Base64類庫
  8. 引入併發陣列(parallel)
  9. 新增新的Java工具:jjs、jdeps
  10. JavaFX,一種用在桌面開發領域的技術
  11. 靜態連結 JNI 程式庫

JDK 9

2017-9-21釋出

  1. 模組化(jiqsaw)
  2. 互動式命令列(JShell)
  3. 預設垃圾回收期切換為G1
  4. 程式操作改進
  5. 競爭鎖效能最佳化
  6. 分段程式碼快取
  7. 最佳化字串佔用空間

JDK 10

2018-3-21釋出

  1. JEP286,var 區域性變數型別推斷。
  2. JEP296,將原來用 Mercurial 管理的眾多 JDK 倉庫程式碼,合併到一個倉庫中,簡化開發和管理過程。
  3. JEP304,統一的垃圾回收介面。
  4. JEP307,G1 垃圾回收器的並行完整垃圾回收,實現並行性來改善最壞情況下的延遲。
  5. JEP310,應用程式類資料 (AppCDS) 共享,透過跨程式共享通用類後設資料來減少記憶體佔用空間,和減少啟動時間。
  6. JEP312,ThreadLocal 握手互動。在不進入到全域性 JVM 安全點 (Safepoint) 的情況下,對執行緒執行回撥。最佳化可以只停止單個執行緒,而不是停全部執行緒或一個都不停。
  7. JEP313,移除 JDK 中附帶的 javah 工具。可以使用 javac -h 代替。
  8. JEP314,使用附加的 Unicode 語言標記擴充套件。
  9. JEP317,能將堆記憶體佔用分配給使用者指定的備用記憶體裝置。
  10. JEP317,使用 Graal 基於 Java 的編譯器,可以預先把 Java 程式碼編譯成原生程式碼來提升效能。
  11. JEP318,在 OpenJDK 中提供一組預設的根證照頒發機構證照。開源目前 Oracle 提供的的 Java SE 的根證照,這樣 OpenJDK 對開發人員使用起來更方便。
  12. JEP322,基於時間定義的釋出版本,即上述提到的釋出週期。版本號為$FEATURE.$INTERIM.$UPDATE.$PATCH,分別是大版本,中間版本,升級包和補丁版本。

JDK  11

2018-9-25釋出

官網公開的 17 個 JEP(JDK Enhancement Proposal 特性增強提議):

  1. JEP181: Nest-Based Access Control(基於巢狀的訪問控制)
  2. JEP309: Dynamic Class-File Constants(動態的類檔案常量)
  3. JEP315: Improve Aarch64 Intrinsics(改進 Aarch64 Intrinsics)
  4. JEP318: Epsilon: A No-Op Garbage Collector(Epsilon 垃圾回收器,又被稱為”No-Op(無操作)”回收器)
  5. JEP320: Remove the Java EE and CORBA Modules(移除 Java EE 和 CORBA 模組,JavaFX 也已被移除)
  6. JEP321: HTTP Client (Standard)
  7. JEP323: Local-Variable Syntax for Lambda Parameters(用於 Lambda 引數的區域性變數語法)
  8. JEP324: Key Agreement with Curve25519 and Curve448(採用 Curve25519 和 Curve448 演算法實現的金鑰協議)
  9. JEP327: Unicode 10
  10. JEP328: Flight Recorder(飛行記錄儀)
  11. JEP329: ChaCha20 and Poly1305 Cryptographic Algorithms(實現 ChaCha20 和 Poly1305 加密演算法)
  12. JEP330: Launch Single-File Source-Code Programs(啟動單個 Java 原始碼檔案的程式)
  13. JEP331: Low-Overhead Heap Profiling(低開銷的堆分配取樣方法)
  14. JEP332: Transport Layer Security (TLS) 1.3(對 TLS 1.3 的支援)
  15. JEP333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)(ZGC:可伸縮的低延遲垃圾回收器,處於實驗性階段)
  16. JEP335: Deprecate the Nashorn JavaScript Engine(棄用 Nashorn JavaScript 引擎)
  17. JEP336: Deprecate the Pack200 Tools and API(棄用 Pack200 工具及其 API)

JDK 12

2019-3-19釋出

  1. JEP189:Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
  2. JEP230:Microbenchmark Suite
  3. JEP325:Switch Expressions (Preview)
  4. JEP334:JVM Constants API
  5. JEP340:One AArch64 Port, Not Two
  6. JEP341:Default CDS Archives
  7. JEP344:Abortable Mixed Collections for G1
  8. JEP346:Promptly Return Unused Committed Memory from G1

JDK 13

2019-9-17 釋出

  1. JEP350:Dynamic CDS Archives
  2. JEP351:ZGC: Uncommit Unused Memory
  3. JEP353:Reimplement the Legacy Socket API
  4. JEP354:Switch Expressions
  5. JEP355:Text Blocks

JDK 14

預計2020/03/17 General Availability

  1. JEP 305: Pattern Matching for instanceof (Preview)
  2. JEP 358: Helpful NullPointerExceptions
  3. JEP 361: Switch Expressions (Standard)
  4. JEP 345: NUMA-Aware Memory Allocation for G1
  5. JEP 349: JFR Event Streaming
  6. JEP 366: Deprecate the ParallelScavenge + SerialOld GC Combination
  7. JEP 363: Remove the CMS Garbage Collector
  8. JEP 364: ZGC on macOS
  9. JEP 368: Text Blocks (Second Preview)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940568/viewspace-2678131/,如需轉載,請註明出處,否則將追究法律責任。

相關文章