Java語言的相關組織和規範(其餘語言也有相似的組織):java
JCP:(Java Community Process)由世界上各個爲 Java 發展操心的人士組成的社區,參與web
定義 Java 新特性和新版本制定標準的組織。正則表達式
JSR:(Java Specification Requests)Java 語言規範請求文檔,你能夠對 Java 提出新的要求,而後 Java 相關的組織投票決定是否經過,經過後就將這個要求寫入 JSR 中,而且最終給出一個開源的實現。算法
JEP:(Java Enhancement Proposal),Java 加強建議,收集你們對於 JDK 的建議,起草加強 Java 哪些功能的方案,爲 JDK 新版本發佈及相關工做指定路線。數組
它,是一部全網最全的JDK發展歷史軌跡圖...緩存
# JAVA 1.0 ,代號Oak(橡樹)安全
於1996-01-23發行性能優化
# JAVA 1.1併發
1997-02-19發行,主要更新內容:oracle
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
正在開發階段,預計解決的任務。
2019/12/12 Rampdown Phase One (fork from main line)
2020/01/16 Rampdown Phase Two
2020/02/06 Initial Release Candidate
2020/02/20 Final Release Candidate
2020/03/17 General Availability