- JCP:(Java Community Process)由世界上各個為 Java 發(fā)展操心的人士組成的社區(qū),參與
定義 Java 新特性和新版本制定標準的組織。
- JSR:(Java Specification Requests)Java 語言規(guī)范請求文檔,你可以對 Java 提出新的要求,然后 Java 相關(guān)的組織投票決定是否通過,通過后就將這個要求寫入 JSR 中,并且最終給出一個開源的實現(xiàn)。
- JEP:(Java Enhancement Proposal),Java 增強建議,收集大家對于 JDK 的建議,起草增強 Java 哪些功能的方案,為 JDK 新版本發(fā)布及相關(guān)工作指定路線。
JAVA 1.0 ,代號Oak(橡樹)
于1996-01-23發(fā)行
JAVA 1.1
1997-02-19發(fā)行,主要更新內(nèi)容:
JAVA 1.2, 代號Playground(操場)
1998-12-8發(fā)行,主要更新內(nèi)容:
- 引入控制授權(quán)訪問系統(tǒng)資源策略工具
- 引入JFC(Java Foundation Classes),包括Swing1.0,拖放和Java2D類庫
- JDBC中引入可滾動結(jié)果集,BLOB,CLOB,批量更新和用戶自定義類型
JAVA1.3,代號Kestrel(紅隼)
2000-5-8發(fā)布,主要更新內(nèi)容:
- Java Platform Debugger Architecture用于 Java 調(diào)式的平臺。
JAVA 1.4,代號Merlin(隼)
2004-2-6發(fā)布(首次在JCP下發(fā)行),主要更新內(nèi)容:
- 添加Java打印服務(Java Print Service API)
- NIO,非阻塞的 IO,優(yōu)化 Java 的 IO 讀取。
JDK 5.0,代號Tiger(老虎),有重大改動
2004-9-30發(fā)布,主要更新內(nèi)容:
- For-Each循環(huán) 增強循環(huán),可使用迭代方式
- 提供了 java.util.concurrent 并發(fā)包。
JDK 6,代號Mustang(野馬)
2006-12-11發(fā)布,主要更新內(nèi)容:
- 引入了一個支持腳本引擎的新框架(基于 Mozilla Rhino 的 JavaScript 腳本引擎)
- 對WebService支持的增強(JAX-WS2.0 和 JAXB2.0)
JDK 7,代號Dolphin(海豚)
2011-07-28發(fā)布,這是sun被oracle收購(2009年4月)后的第一個版本,主要更新內(nèi)容:
- 在創(chuàng)建泛型對象時應用類型推斷,比如你之前版本使用泛型類型時這樣寫 ArrayList<User> userList= new ArrayList<User>();,這個版本只需要這樣寫 ArrayList<User> userList= new ArrayList<>();,也即是后面一個尖括號內(nèi)的類型,JVM 幫我們自動類型判斷補全了。
- 添加try-with-resources語法支持,使用文件操作后不用再顯示執(zhí)行close了。
- JSR203, NIO.2,AIO,新I/O文件系統(tǒng),增加多重文件的支持、文件原始數(shù)據(jù)和符號鏈接,支持ZIP文件操作
- 引入Fork/Join框架,用于并行執(zhí)行任務
- 支持帶下劃線的數(shù)值,如 int a = 100000000;,0 太多不便于人閱讀,這個版本支持這樣寫 int a = 100_000_000,這樣就對數(shù)值一目了然了。
- Swing組件增強(JLayer,Nimbus Look Feel…)參考
JDK 8
2014-3-19發(fā)布,oracle原計劃2013年發(fā)布,由于安全性問題兩次跳票,是自JAVA5以來最具革命性的版本,主要更新內(nèi)容:
- 接口改進,接口居然可以定義默認方法實現(xiàn)和靜態(tài)方法了。
- 引入全新的Stream API,提供了對值流進行函數(shù)式操作。
- 引入并發(fā)數(shù)組(parallel)
- JavaFX,一種用在桌面開發(fā)領(lǐng)域的技術(shù)
JDK 9
2017-9-21發(fā)布
JDK 10
2018-3-21發(fā)布
- JEP296,將原來用 Mercurial 管理的眾多 JDK 倉庫代碼,合并到一個倉庫中,簡化開發(fā)和管理過程。
- JEP307,G1 垃圾回收器的并行完整垃圾回收,實現(xiàn)并行性來改善最壞情況下的延遲。
- JEP310,應用程序類數(shù)據(jù) (AppCDS) 共享,通過跨進程共享通用類元數(shù)據(jù)來減少內(nèi)存占用空間,和減少啟動時間。
- JEP312,ThreadLocal 握手交互。在不進入到全局 JVM 安全點 (Safepoint) 的情況下,對線程執(zhí)行回調(diào)。優(yōu)化可以只停止單個線程,而不是停全部線程或一個都不停。
- JEP313,移除 JDK 中附帶的 javah 工具??梢允褂?javac -h 代替。
- JEP314,使用附加的 Unicode 語言標記擴展。
- JEP317,能將堆內(nèi)存占用分配給用戶指定的備用內(nèi)存設(shè)備。
- JEP317,使用 Graal 基于 Java 的編譯器,可以預先把 Java 代碼編譯成本地代碼來提升效能。
- JEP318,在 OpenJDK 中提供一組默認的根證書頒發(fā)機構(gòu)證書。開源目前 Oracle 提供的的 Java SE 的根證書,這樣 OpenJDK 對開發(fā)人員使用起來更方便。
- JEP322,基于時間定義的發(fā)布版本,即上述提到的發(fā)布周期。版本號為
$FEATURE.$INTERIM.$UPDATE.$PATCH
,分別是大版本,中間版本,升級包和補丁版本。
JDK 11
2018-9-25發(fā)布
官網(wǎng)公開的 17 個 JEP(JDK Enhancement Proposal 特性增強提議):
- JEP181: Nest-Based Access Control(基于嵌套的訪問控制)
- JEP309: Dynamic Class-File Constants(動態(tài)的類文件常量)
- JEP315: Improve Aarch74 Intrinsics(改進 Aarch74 Intrinsics)
- JEP318: Epsilon: A No-Op Garbage Collector(Epsilon 垃圾回收器,又被稱為”No-Op(無操作)”回收器)
- JEP320: Remove the Java EE and CORBA Modules(移除 Java EE 和 CORBA 模塊,JavaFX 也已被移除)
- JEP321: HTTP Client (Standard)
- JEP323: Local-Variable Syntax for Lambda Parameters(用于 Lambda 參數(shù)的局部變量語法)
- JEP324: Key Agreement with Curve25519 and Curve448(采用 Curve25519 和 Curve448 算法實現(xiàn)的密鑰協(xié)議)
- JEP328: Flight Recorder(飛行記錄儀)
- JEP329: ChaCha20 and Poly1305 Cryptographic Algorithms(實現(xiàn) ChaCha20 和 Poly1305 加密算法)
- JEP330: Launch Single-File Source-Code Programs(啟動單個 Java 源代碼文件的程序)
- JEP331: Low-Overhead Heap Profiling(低開銷的堆分配采樣方法)
- JEP332: Transport Layer Security (TLS) 1.3(對 TLS 1.3 的支持)
- JEP333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)(ZGC:可伸縮的低延遲垃圾回收器,處于實驗性階段)
- JEP335: Deprecate the Nashorn JavaScript Engine(棄用 Nashorn JavaScript 引擎)
- JEP336: Deprecate the Pack200 Tools and API(棄用 Pack200 工具及其 API)
JDK 12
2019-3-19發(fā)布
- JEP189:Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
- JEP230:Microbenchmark Suite
- JEP325:Switch Expressions (Preview)
- JEP340:One AArch74 Port, Not Two
- JEP341:Default CDS Archives
- JEP344:Abortable Mixed Collections for G1
- JEP346:Promptly Return Unused Committed Memory from G1
JDK 13
2019-9-17 發(fā)布
- JEP350:Dynamic CDS Archives
- JEP351:ZGC: Uncommit Unused Memory
- JEP353:Reimplement the Legacy Socket API
- JEP354:Switch Expressions
JDK 14
預計2020/03/17 General Availability
- JEP 305: Pattern Matching for instanceof (Preview)
- JEP 358: Helpful NullPointerExceptions
- JEP 361: Switch Expressions (Standard)
- JEP 345: NUMA-Aware Memory Allocation for G1
- JEP 349: JFR Event Streaming
- JEP 366: Deprecate the ParallelScavenge + SerialOld GC Combination
- JEP 363: Remove the CMS Garbage Collector
- JEP 368: Text Blocks (Second Preview)