目錄
- Java18(2022.3)
- Java17(2021.9)(LTS版本)
- Java16(2021.3)
- Java15(2020.9)
- Java14(2020.3)
- Java13(2019.9)
- Java12(2019.3)
- Java11(2018.9)(LTS版本)
- Java10(2018.3)
- Java9(2017.9)
- Java8(2014.3)(LTS版本)
- Java7(2011.7)(LTS版本)
- Java6(2006)
- Java 5(2004)
- java1.4(2004)
- java1.3 (2000)
- java1.2 (1998)
- java1.1 (1997)
- java1.0 (1996 初代版本)
Java18(2022.3)
- 將 UTF-8 指定為標準 Java API 的默認字符集
- 提供支持靜態檔案的最小 Web 服務器命令列工具jwebserver
- 定義了一個全新的 SPI(service-provider interface),用于主要名稱和地址的決議
- 棄用 Finalization
Java17(2021.9)(LTS版本)
- Free Java License
- JDK 17 將取代 JDK 11 成為下一個長期支持版本
- Spring 6 和 Spring Boot 3需要JDK17
- 移除實驗性的 AOT 和 JIT 編譯器
- 恢復始終執行嚴格模式 (Always-Strict) 的浮點定義
- 正式引入密封類sealed class,限制抽象類的實作
- 統一日志異步重繪,先將日志寫入快取,然后再異步重繪
雖然JDK17也是一個LTS版本,但是并沒有像JDK8和JDK11一樣引入比較突出的特性,主要是對前幾個版本的整合和完善,
Java16(2021.3)
- 允許在 JDK C ++源代碼中使用 C ++ 14功能
- ZGC性能優化,去掉ZGC執行緒堆疊處理從安全點到并發階段
- 增加 Unix 域套接字通道
- 彈性元空間能力
- 提供用于打包獨立 Java 應用程式的 jpackage 工具
JDK16相當于是將JDK14、JDK15的一些特性進行了正式引入,如instanceof模式匹配(Pattern matching)、record的引入等最終到JDK16變成了final版本,
Java15(2020.9)
- EdDSA 數字簽名演算法
- Sealed Classes(封閉類,預覽),通過sealed關鍵字修飾抽象類限定只允許指定的子類才可以實作或繼承抽象類,避免抽象類被濫用,
- Hidden Classes(隱藏類)
- 移除 Nashorn JavaScript引擎
- 改進java.net.DatagramSocket 和 java.net.MulticastSocket底層實作
Java14(2020.3)
- instanceof模式匹配,instanceof型別匹配語法簡化,可以直接給物件賦值,如if(obj instanceof String str),如果obj是字串型別則直接賦值給了str變數
- 引入Record型別,類似于Lombok 的@Data注解,可以向Lombok一樣自動生成構造器、equals、getter等方法;
- Switch 運算式-標準化
- 改進 NullPointerExceptions提示資訊,列印具體哪個方法拋的空指標例外,避免同一行代碼多個函式呼叫時無法判斷具體是哪個函式拋例外的困擾,方便例外排查;
- 洗掉 CMS 垃圾回收器
Java13(2019.9)
- Switch 運算式擴展(引入 yield 關鍵字);switch運算式增加yield關鍵字用于回傳結果,作用類似于return,如果沒有回傳結果則使用break,
- 文本塊升級 """;引入了文本塊,可以使用"""三個雙引號表示文本塊,文本塊內部就不需要使用換行的轉義字符,
- SocketAPI 重構;(Socket的底層實作優化,引入了NIO)
- FileSystems.newFileSystem新方法
- 增強 ZGC 釋放未使用記憶體;(ZGC優化,將標記長時間空閑的堆記憶體空間返還給作業系統,保證堆大小不會小于配置的最小堆記憶體大小,如果堆最大和最小記憶體大小設定一樣,則不會釋放記憶體還給作業系統,)
重要特性:ZGC優化,釋放記憶體還給作業系統、socket底層實作引入NIO,
Java12(2019.3)
- Switch 運算式擴展,可以有回傳值
- 新增NumberFormat對復雜數字的格式化
- 字串支持transform、indent操作
- 新增方法Files.mismatch(Path, Path)
- Teeing Collector
- 支持unicode 11
- Shenandoah GC,新增的GC演算法
- G1收集器的優化,將GC的垃圾分為強制部分和可選部分,強制部分會被回收,可選部分可能不會被回收,提高GC的效率
重要特性:switch運算式語法擴展、G1收集器優化、新增Shenandoah GC垃圾回收演算法,
Java11(2018.9)(LTS版本)
- 增加一些符串處理方法
- 用于 Lambda 引數的區域變數語法
- Http Client重寫,支持HTTP/1.1和HTTP/2 ,也支持 websockets
- 可運行單一Java原始碼檔案,如:java Test.java
- ZGC:可伸縮低延遲垃圾收集器,(ZGC可以看做是G1之上更細粒度的記憶體管理策略,由于記憶體的不斷分配回識訓產生大量的記憶體碎片空間,因此需要整理策略防止記憶體空間碎片化,在整理期間需要將對于記憶體參考的執行緒邏輯暫停,這個程序被稱為"Stop the world",只有當整理完成后,執行緒邏輯才可以繼續運行,(并行回收))
- 支持 TLS 1.3 協議
- Flight Recorder(飛行記錄器),基于OS、JVM和JDK的事件產生的資料收集框架
- 對Stream、Optional、集合API進行增強
重要特性:對于JDK9和JDK10的完善,主要是對于Stream、集合等API的增強、新增ZGC垃圾收集器,
Java10(2018.3)
- 區域變數型別推斷,(類似JS可以通過var來修飾區域變數,編譯之后會推斷出值的真實型別)
- 不可變集合的改進
- 并行全垃圾回收器 G1,來優化G1的延遲
- 執行緒本地握手,(允許在不執行全域VM安全點的情況下執行執行緒回呼,可以停止單個執行緒,而不需要停止所有執行緒或不停止執行緒)
- Optional新增orElseThrow()方法
- 類資料共享
- Unicode 語言標簽擴展
- 根證書
重要特性:通過var關鍵字實作區域變數型別推斷,使Java語言變成弱型別語言、JVM的G1垃圾回收由單執行緒改成多執行緒并行處理,降低G1的停頓時間,
Java9(2017.9)
- 模塊化
- 提供了List.of()、Set.of()、Map.of() 和 Map.ofEntries() 等工廠方法
- 介面支持私有方法
- Optional 類改進
- 多版本兼容Jar包
- JShell工具
- try-with-resources的改進
- Stream API的改進
- 設定G1為JVM默認垃圾收集器
- 支持http2.0和websocket的API
重要特性:主要是API的優化,如支持HTTP2的Client API、JVM采用G1為默認垃圾收集器,
Java8(2014.3)(LTS版本)
- lambada運算式
- 函式式介面
- 方法參考
- 默認方法
- Stream API 對元素流進行函式式操作
- Optional 解決NullPointerException
- Date Time API
- 重復注解 @Repeatable
- Base64
- 使用元空間Metaspace代替持久代(PermGen space)
Java7(2011.7)(LTS版本)
- switch 支持String字串型別
- try-with-resources,資源自動關閉
- 整數型別能夠用二進制來表示
- 數字常量支持下劃線
- 泛型實體化型別自動推斷,即”<>”
- catch捕獲多個例外型別,用(|)分隔開
- 全新的NIO2.0 API
- Fork/join 并行執行任務的框架
Java6(2006)
- java.awt新增Desktop類和SystemTray類
- 使用JAXB2來實作物件與XML之間的映射
- 輕量級 Http Server API
- 插入式注解處理API(lombok使用該特性來實作的)
- STAX,處理XML檔案的API
- Compiler API
- 對腳本語言的支持(ruby, groovy, javascript)
Java 5(2004)
- 泛型(本質是引數化型別,解決不確定具體物件型別的問題)
- 增強的for回圈(for-each)
- 自動裝箱和自動拆箱(包裝型別有:Integer,Double,Float,Long,Short,Character和Boolean)
- 型別安全的列舉(enum)
- 可變長度引數
- 靜態引入(import static)
- 元資料(注解)
- 執行緒并發庫(java.util.concurrent)
java1.4(2004)
- XML決議器
- Java列印服務
- Logging API(日志功能)
- Java Web Start
- JDBC 3.0 API(jdbc高級)
- 斷言
- Preferences API
- 鏈式例外處理
- 支持IPV6
- 支持正則運算式
- 引入Imgae I/O API (圖片流);
- NIO(高級流)
- XSLT轉換器
java1.3 (2000)
- Timer API(時間)
- Java Sound API(聲音)
- RMI通信協議
- jar檔案索引
- 優化和增強
java1.2 (1998)
- J2SE/J2EE/J2ME
- EJB
- Java IDL(平臺物件請求代理體系結構)
- 集合框架
- JIT(Just In Time)編譯器
- 數字簽名
- JFC(Java Foundation Classes), 包括Swing1.0, 拖放和Java2D類別庫
- Java Plug-In(運行插件)
- JDBC中引入可滾動結果集,BLOB,CLOB,批量更新和用戶自定義型別
- Applet中添加聲音支持
- 字串常量做記憶體映射
- 控制授權/訪問系統資源的策略工具
java1.1 (1997)
- JAR
- JDBC
- JavaBean
- RMI(遠程呼叫)
- Inner Class(內部類)
- Reflection(反射)
java1.0 (1996 初代版本)
- Classic VM(虛擬機)
- Applet(java小應用程式)
- AWT(java圖形設計)
下圖是 Oracle 官方給出的 Oracle JDK 支持的時間線,
LTS:是 Long Term Support,Oracle官宣可以免費商用的LTS版本,也就是官方保證會長期支持的版本,

參考鏈接:
https://blog.oxings.com/article/31.html
https://mp.weixin.qq.com/s/YPJ-sfx04-fOGt4WuPDwIQ
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539507.html
標籤:其他
