JDK1.0——JDK1.11的一些主要變化

一 概述JDK

1. JDK   Java SE Development kit(JDK)     java開發工具包

JDK全稱Java SE Development kit(JDK),即java標準版開發包,是Oracle提供的一套用於開發java應用程序的開發包,它提供編譯,運行java程序所需要的各種工具和資源,包括java編譯器,java運行時環境,以及常用的java類庫等。

2. JRE   Java Runtime Environment(JRE) Java運行環境

Java運行環境,它的全稱Java Runtime Environment(JRE) ,因此也被稱爲JRE,它是運行java的必需條件。

3. JVM  Java Virtual Machine

Java虛擬機,JRE包含JVM。JVM是運行java程序的核心虛擬機,還需要其他的類加載器,字節碼校驗器,以及大量的基礎類庫。JRM除了包含JVM之外,還包含運行java程序的其它環境支持。

Oracle 把java分爲javaSE 、java EE 和java ME三部分,而且分別爲java SE 和javaEE 提供了JDK和Java EE SDK(Soft Development kit) 兩個開發包。

二 JDK的進化演變歷程

JDK1.0

  • 初代版本,解釋運行,使用JIT,性能較差,運行速度較慢。

JDK1.1

  • JDBC(Java DataBase Connectivity);
  • 支持內部類;
  • RMI(Remote Method Invocation);
  • 反射(反射解析);
  • Java Bean。

JDK1.2

  • 集合框架
  • JIT(Just In Time)編譯器;
  • 打包的java文件進行數字簽名;
  • JFC(Java Foundation Classes),包括Swing 1.0,拖放和java2D類庫;
  • Java插件;
  • JDBC中引入可滾動結果集,BLOB,CLOB,批量更新和用戶定義類型;
  • Applet中添加聲音支持。

JDK1.3

  • Java Sound API;
  • jar文件索引;
  • 對Java的各個方面都做了大量優化和增強。

JDK1.4

  • XML處理;
  • Java打印服務;
  • Logging API;
  • Java Web Start;
  • JDBC 3.0 API;
  • 斷言;
  • Preferences API;
  • 鏈式異常處理;
  • 支持IPV6;
  • 支持正則表達式;(正則表達式
  • 引入Image I/O API。

JDK1.5

  • 泛型(Generics);
  • 增強for循環;
  • 自動拆裝箱(Autoboxing/unboxing);
  • 類型安全的枚舉(Typesafeenums);
  • 靜態導入(Static import);
  • 元數據(Metadata);
  • 線程池。

泛型是JDK1.5中一個最"酷"的特徵,通過引入泛型,將編譯類型和運行時更小的拋出ClassCastException的可能。

線程池的基本是對象池的思想,開闢一塊內存空間,裏面存放了衆多(未死亡)的線程,池中線程執行調度由線程池管理器來處理。當有線程任務時,從池中取出一個,執行完成後線程對象回到線程池,這樣可以避免反覆創建線程對象所帶來的性能開銷,節省了系統的資源。

JDK1.6

  • Desktop類和SystemTray類(AWT中新增的兩個類);
  • 使用JAXB2來實現對象與XML之間的映射;
  • StAX(JDK1.6中除去了DOM和SAX之外的又一種處理XML文檔的API);
  • 使用Compiler API(結合反射功能可以實現動態的編譯Java源文件);
  • 輕量級Http Server API;
  • 插入式註解處理API(Pluggable Annotation Processing API);
  • 用Console開發控制檯程序;
  • 對腳本語言的支持(如ruby,groovy,javascript);
  • Common Annotations。

JDK1.7

  • 自動資源管理;
  • 改進的通用實例創建類型推斷;
  • 數字字面量下劃線支持(如 1_1 = 11);
  • switch中使用string;
  • 二進制字面量;
  • 簡化可變參數方法調用;
  • 引入Java NIO.2開發包。

JDK1.8

  • 接口的默認方法;
  • Lambda 表達式;
  • 函數式接口;
  • 方法與構造函數引用;
  • Lambda 作用域;
  • 訪問局部變量;
  • 訪問對象字段與靜態變量;
  • 訪問接口的默認方法;
  • Date API;
  • Annotation 註解。

JDK1.9

  • 模塊化系統;
  • jShell命令;
  • 多版本兼容jar包;
  • 接口的私有方法;
  • 鑽石操作符的使用升級;
  • 語法改進:try語句;
  • 下劃線使用限制;
  • String存儲結構變更;
  • 便利的集合特性:of();
  • 增強的Stream API;
  • 多分辨率圖像 API;
  • 全新的HTTP客戶端API;
  • Deprecated的相關API;
  • 智能Java編譯工具;
  • 統一的JVM日誌系統;
  • javadoc的HTML 5支持;
  • Javascript引擎升級:Nashorn;
  • java的動態編譯器。

JDK1.10

  • JEP286,var 局部變量類型推斷。
  • JEP296,將原來用 Mercurial 管理的衆多 JDK 倉庫代碼,合併到一個倉庫中,簡化開發和管理過程。
  • JEP304,統一的垃圾回收接口。
  • JEP307,G1 垃圾回收器的並行完整垃圾回收,實現並行性來改善最壞情況下的延遲。
  • JEP310,應用程序類數據 (AppCDS) 共享,通過跨進程共享通用類元數據來減少內存佔用空間,和減少啓動時間。
  • JEP312,ThreadLocal 握手交互。在不進入到全局 JVM 安全點 (Safepoint) 的情況下,對線程執行回調。優化可以只停止單個線程,而不是停全部線程或一個都不停。
  • JEP313,移除 JDK 中附帶的 javah 工具。可以使用 javac -h 代替。
  • JEP314,使用附加的 Unicode 語言標記擴展。
  • JEP317,能將堆內存佔用分配給用戶指定的備用內存設備。
  • JEP317,使用 Graal 基於 Java 的編譯器,可以預先把 Java 代碼編譯成本地代碼來提升效能。
  • JEP318,在 OpenJDK 中提供一組默認的根證書頒發機構證書。開源目前 Oracle 提供的的 Java SE 的根證書,這樣 OpenJDK 對開發人員使用起來更方便。
  • JEP322,基於時間定義的發佈版本,即上述提到的發佈週期。版本號爲\$FEATURE.\$INTERIM.\$UPDATE.\$PATCH,分別是大版本,中間版本,升級包和補丁版本。

JDK1.11

  • 181:Nest-Based訪問控制。
  • 309:動態類文件常量。
  • 315:改善Aarch64 intrinsic。
  • 318:無操作垃圾收集器。
  • 320:消除Java EE和CORBA模塊。
  • 321:HTTP客戶端(標準)。
  • 323:局部變量的語法λ參數。
  • 324:Curve25519和Curve448關鍵協議。
  • 327:Unicode 10。
  • 328:飛行記錄器。
  • 329:ChaCha20和Poly1305加密算法。
  • 330:發射一列縱隊源代碼程序。
  • 331:低開銷堆分析。
  • 332:傳輸層安全性(Transport Layer Security,TLS)1.3。
  • 333:動作:一個可伸縮的低延遲垃圾收集器 (實驗)。
  • 335:反對Nashorn JavaScript引擎。
  • 336:反對Pack200工具和API。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章