Java 作為一門經久不衰的語言,已經發展了20多年,本文簡單羅列了各個版本的一些重要特性。大家可以根據自己公司需要,選擇合適的版本。
1. Java 13
發布時間:2019年3月
新特性:
- switch 語法優化更新
- 文本塊升級
- 動態CDS檔案
- 取消使用未使用的內存
- 重新實現舊版套接字API
- FileSystems.newFileSystem新方法
- nio新方法
- 核心庫/ java.time
- 核心庫/ java.util中:I18N
- 熱點/ GC
- 安全庫/ java.security
- 刪除功能
2. Java 12
發布時間:2019年3月
新特性:
- Shenandoah:低暫停時間的 GC(實驗性功能)
- JMH 基准測試
- Switch 表達式(預覽功能)
- JVM 常量 API
- 只保留一個 ARM 64位實現(aarch64)
- 默認類數據共享歸檔文件
- G1的可中斷 mixed GC
- 改進G1垃圾收集器,以便在不活動時將Java堆內存歸還給操作系統
3. Java 11
Java 11 是自 Java 8 后的首個長期支持版本,將支持到2026年!
發布時間:2018年9月
新特性:
- 基於嵌套的訪問控制
- 動態的類文件常量
- 改進 Aarch64 Intrinsics
- Epsilon 垃圾回收器,又被稱為"No-Op(無操作)"回收器
- 移除 Java EE 和 CORBA 模塊,JavaFX 也已被移除
- HTTP Client (Standard)
- 用於 Lambda 參數的局部變量語法
- 采用 Curve25519 和 Curve448 算法實現的密鑰協議
- Unicode 10
- 實現 ChaCha20 和 Poly1305 加密算法
- 啟動單個 Java 源代碼文件的程序
- 低開銷的堆分配采樣方法
- 對 TLS 1.3 的支持
- ZGC:可伸縮的低延遲垃圾回收器,處於實驗性階段
- 棄用 Nashorn JavaScript 引擎
- 棄用 Pack200 工具及其 API
4. Java 10
發布時間:2018年3月
新特性:
- var 類型推斷
- 將原來用 Mercurial 管理的眾多 JDK 倉庫代碼,合並到一個倉庫中,簡化開發和管理過程。
- 統一的 GC 接口
- G1 垃圾回收器的並行完整垃圾回收,實現並行性來改善最壞情況下的延遲。
- 應用程序類數據 (AppCDS) 共享,通過跨進程共享通用類元數據來減少內存占用空間,和減少啟動時間。
- ThreadLocal 握手交互。在不進入到全局 JVM 安全點 (Safepoint) 的情況下,對線程執行回調。優化可以只停止單個線程,而不是停全部線程或一個都不停。
- 移除 JDK 中附帶的 javah 工具。可以使用 javac -h 代替。
- 使用附加的 Unicode 語言標記擴展。
- 能將堆內存占用分配給用戶指定的備用內存設備。
- 使用 Graal 基於 Java 的編譯器,可以預先把 Java 代碼編譯成本地代碼來提升效能。
- 在 OpenJDK 中提供一組默認的根證書頒發機構證書
5. Java 9
發布時間:2017年9月
新特性:
- “JShell”的新工具
- 完全支持 HTTP 2.0 並帶來新的 HTTP 客戶端,它會代替 HttpURLConnection —— 同時還會實現 HTTP 2.0 和 Web Socket。
- 模塊化的 JVM,使之可以在內存有限的設備上運行。JVM 可以只運行那些應用程序需要的模塊和 API。
- 輕量級的 JSON API
- 智能 Java 編譯
- 接口中引入私有方法。從 Java SE 9 開始可以在接口中使用 ‘private’ 關鍵字寫私有方法和私有靜態方法了。
- 響應式流
- 多分辨率圖像 API
- 改進 GC (垃圾回收)
- HTML5 Javadocs
- 改進 Stream(流) API
- 增強 @Deprecated 注解
- 改進 Optional 類
- 改進 CompletableFuture API
6. Java 8
發布時間:2014年3月
新特性:
- 函數式接口
- Lambda表達式
- 方法引用
- -接口的default方法和靜態方法
- -Optional
- Streams
- Date和Time API
- Type注解
- Nashhorn JavaScript引擎
- 並發計數器
- Parallel操作
- 移除PermGen Error
- TLS SNI
7. Java 7
發布時間:2011年7月
新特性:
- switch增加對String的支持
- 在創建泛型對象時應用類型推斷;
- try/catch 可以 catch 多個異常類型
- 支持動態語言;
- 支持try-with-resources;
- 引入Java NIO.2開發包;
- 數值類型可以用二進制字符串表示,並且可以在字符串表示中添加下划線;
- 鑽石型語法;
- Boolean類型反轉,空指針安全,參與位運算
- Objects類增加避免空指針的equals方法
- 對Java集合( Collections)的增強支持
8. Java 6
發布時間:2006年4月
新特性:
- 支持腳本語言;
- 引入JDBC 4.0 API;
- 引入Java Compiler API;
- 可插拔注解;
- 增加對Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支持;
- 繼承Web Services;
9. Java 5
發布時間:2004年10月
新特性:
- 引入泛型;
- 增強循環,可以使用迭代方式;
- 自動裝箱與自動拆箱;
- 類型安全的枚舉;
- 可變參數;
- 靜態引入;
- 元數據(注解);
- 新的線程模型和並發庫
- 內省(introspector)
10. Java 1.4
發布時間:2004年2月
新特性:
- XML處理;
- Java打印服務;
- 引入Logging API;
- 引入Java Web Start;
- 引入JDBC 3.0 API;
- 引入斷言;
- 引入Preferences API;
- 引入鏈式異常處理;
- 支持IPv6;
- 支持正則表達式;
- 引入Image I/O slot machine API。
11. Java 1.3
發布時間:2000年5月
新特性:
- 引入Java Sound API;
- jar文件索引;
- 對Java的各個方面都做了大量優化和增強。
12. Java 1.2
發布時間:1998年12月
新特性:
- 引入集合(Collection)框架;
- 對字符串常量做內存映射;
- 引入JIT(Just In Time)編譯器;
- 引入對打包的Java文件進行數字簽名;
- 引入控制授權訪問系統資源的策略工具;
- 引入JFC(Java Foundation Classes),包括Swing 1.0、拖放和Java 2D類庫;
- 引入Java 插件;
- 在JDBC中引入可滾動結果集、BLOB、CLOB、批量更新和用戶自定義類型;
- 在Applet中添加聲音支持。
13. Java 1.1
發布時間:1997年2月
新特性:
- 引入JDBC(Java Database Connectivity);
- 支持內部類;
- 引入Java Bean;
- 引入RMI(Remote Method Invocation);
- 引入反射(僅用於內省)。