個人認為下列列出來的都是版本較為突出的特性
Java 5
1.引入泛型功能(僞泛型)
2.增強循環,可以使用疊代循環,Iterator
3.支援自動裝箱和自動拆箱
4.支援類型安全的枚舉
5.支援可變參數
6.支援靜态引入
7.支援中繼資料(注解)功能
8.引入Java Instrumentation
Java 6
1.支援腳本語言
2.引入JDBC 4.0 API
3.引入Java Compiler API
4.支援可插拔注解
Java 7
1. 支援了switch語句以String作為條件,至此已支援4中基本類型(byte, char , short ,int),2種對象類型(枚舉,String)
2.優化增強了泛型對象類型推斷
3.支援了在一個語句塊中捕獲多種異常,既一個catch,可以|多個異常
4.支援try-with-resources文法,自動為資源類進行關閉,而無需finally進行
5.引入Java NIO2開發包,支援了AIO
6.支援了數值的二進制表示方式,比如0b1010000, 以前隻能8,10,16進制的表示
7.鑽石型文法,省略類型參數的聲明
8.支援了動态語言
Java 8
1.支援lambda表達式
2.支援集合的Stream流處理
3.支援Functional函數式接口
4.對各個類支援了很多對應的lambda增強方法
5.增強接口,支援了接口的預設和靜态的具體方法
6.支援LocalDate等時間包,以改進原有Date
7.支援Optional來改進Null值的處理
8.優化了HashMap和ConcurrentHashMap
Java 9
1.支援Java平台級子產品系統,既子產品化
2.支援了JShell,既類似node.js, python一樣的指令行工具,對待簡單的東西,可以直接指令測試
3.改進Javadoc, 使得Javadoc可以搜尋
4.支援了List.of(), Set.of(), Map.of()的方式初始化不可變集合,省略了大量代碼,文法糖
5.改進的Stream API,比如ofNullable(),dropWhile(),takeWhile()等
6.增強接口,支援了私有接口具體方法,補充了Java8預設和靜态方法的支援
7.把G1垃圾收集器作為預設的垃圾收集器,并标注CMS為過時收集器
8.引入了響應式流Reactive Streams API, 支援了響應式程式設計
9.支援了HTTP/2用戶端
Java 10
1.支援了局部變量的類型推導,支援了局部變量的var聲明
2.優化改進了G1垃圾回收器,采用并行化mark-sweep-compact算法
Java 11
1.簡化了啟動單個源代碼檔案的方法,使得小白指令式編譯運作Java檔案變成更加簡單,java Helloworld.java 即可
2.增加支援了一個叫Epsilon的低開銷垃圾收集器
3.增加支援了一個叫ZGC(Z Garbage Collector)的可伸縮低延遲垃圾收集器, 相比G1,停頓時間有了很大的改進,穩定在10ms以下
4.重寫了HttpClient,提供了新的标準化HttpClient API, 以後不再需要引入apache包的HttpClient或是okhttp就能支援高性能的網絡5.程式設計
6.增加了對TLS 1.3的支援
7.允許了飛行記錄器進行商用下的使用
8.更好的支援了動态語言,在JVM層面增加了invokedynamic指令
9.支援了在lambda内部使用var聲明局部變量