天天看點

Java發展:各版本JDK新特性 JVM發展 Java技術應用發展

                                          Java發展:各版本JDK新特性 JVM發展 Java技術應用發展     

       上篇《 Java體系:組成結構 運作機制 JRE/JDK/OpenJDK Java SE/EE/ME Java優點》我們對Java平台體系有了一個全面的了解。

       下面先簡單介紹Java發展曆史,然後在整個的發展史的基礎上,抽取幾個關注點的時間線,分别介紹各JDK版本的新特性、JVM發展、以及Java技術的應用發展。

1、Java發展曆史簡介

       1995年5月23日,網際網路興起,Oak改名為Java,Java語言誕生,提出"一次編譯,到處運作";

       1996年1月23日,第一個JDK--JDK1.0誕生,技術代表:純解釋執行的Java虛拟機(Sun Classic VM)、Applet、AWT等;

       1996年4月,10個最主要的作業系統供應商申明将在其産品中嵌入Java技術;

       1996年9月,約8.3萬個網頁應用了Java技術來制作;

       1997年2月19日,JDK1.1釋出,技術代表:JAR檔案格式、JDBC、JavaBeans、RMI,Java重要文法:内部類(Inter Class)和反射(Reflection)等;

       1997年9月,JavaDeveloperConnection社群成員超過十萬;

       1998年2月,JDK1.1被下載下傳超過2,000,000次;

       1998年12月4日,JDK1.2釋出,拆分三個版本:标準版(J2SE)、企業版(J2EE)和微型版(J2ME),技術代表:EJB、Java Plug-in、Java IDL、Swing等,JVM内置JIT,Java文法/API:strictft關鍵字、Collections集合類等;

       1999年4月27日,HotSpot虛拟機釋出,作為JDK1.2附加程式;

       2000年5月8日,JDK1.3釋出,内置預設HotSpot虛拟機,改進主要在一些類庫:JNDI、RMI、Timer API、Java 2D API等;

       2001年6月5日,NOKIA宣布,到2003年将出售1億部支援Java的手機;

       2002年2月13日,JDK1.4釋出,走向成熟的版本,釋出新特性:正規表達式、異常鍊、NIO、日志類、XML解析器和XSTL轉換器等;    

       2004年9月30日,JDK1.5(JDK5,公開版本号)釋出,java文法新特性:自動裝箱、泛型、動态注解、枚舉、可變長參數、周遊循環(foreach循環)等,Java API加入:java.util.concurrent并發包等,改進JVM記憶體模型(JMM);

       2006年11月13日,SUN開源JDK為OpenJDK,兩者代碼基本相同;

       2006年12月11日,JDK6釋出,J2EE更名為Java EE,J2SE更名為Java SE,J2ME更名為Java ME,改進:提供動态語言支援(内置JS引擎)、提供編譯API和微型HTTP伺服器API等,JVM改進:鎖與同步、垃圾收集、類加載等算法;

       2009年4月7日Google App Engine開始支援Java;

       2009年04月20日,Oracle74億美元收購Sun。取得java的版權;

       2011年7月28日,Oracle釋出JDK7的正式版,主要改進:提供新的G1收集器,加強對非Java語言的調用支援、更新加載類架構等;

       2014年3月18日,Oracle釋出JDK8的正式版,主要改進:支援Lambda表達式和虛拟擴充方法、新的日期和時間API、提供Nashhorn JavaScript引擎、提高安全性;

        2017年釋出java9.0的正式版(預計)…

2、各JDK版本的新特性

2-1、JDK5(JDK1.5)--2004年9月30日

語言新特性:

1、自動裝箱與拆箱;

2、枚舉;

3、靜态導入;

4、可變長參數;

5、内省;

6、泛型;

7、動态注解;

8、周遊循環(foreach循環);

9、Java API加入:java.util.concurrent并發包;

10、改進JVM記憶體模型(JMM)、自适應垃圾收集配置等;

2-2、JDK6--2006年12月11日

1、Web服務中繼資料;

2.、提供腳本語言/動态語言支援(内置JS引擎);

3、JTable的排序和過濾;

4、更簡單,更強大的JAX-WS;

5、輕量級Http Server;

6、嵌入式資料庫 Derby;

7、JVM改進:鎖與同步、并發垃圾收集、類加載等算法;

2-3、JDK7--2011年7月28日

語言改進:

1、switch支援使用字元串;

2、運用List<String> tempList = new ArrayList<>(); 即泛型執行個體化類型自動推斷;

3、文法上支援集合,而不一定是數組;

4、新增一些取環境資訊的工具方法;

5、Boolean類型反轉,空指針安全,參與位運算;

6、兩個char間的equals;

7、安全的加減乘除;

8、map集合支援并發請求,且可以寫成 Map map = {name:"xxx",age:18};

JVM改進:

9、提供新的G1收集器;

10、加強對動态的調用支援;

11、更嚴格的類檔案檢查;

核心基礎(core)改進:

12、更新加載類架構;

13、并發和集合更新;

IO改進:

14、提供全面的new I/O APIs(NIO.2)

更多請參考:《Java SE 7 Features and Enhancements》、《JDK 7 Features》

2-4、JDK8--2014年3月18日

語言改進:

1、允許在接口中有預設方法實作;

2、支援Lambda表達式 & 虛拟擴充方法;

3、内置函數式接口;

4、支援方法和構造函數引用;

5、提供Nashhorn JavaScript引擎,允許在Java程式中嵌入JS代碼

核心改進:

6、新的日期和時間API;

7、支援多重Annotations注解;

VM改進:

8、減少指定字段上的緩存争用;

9、移除Permanent Generation(永久代);

10、移除一些很少使用的垃圾回收器組合等;

更多請參考:《What's New in JDK 8》、《JDK 8 Features》

2-5、JDK9—2017年(預計)

1、JDK、源碼子產品化;

2.、簡化程序API;

3、輕量級 JSON API;

4、新的 HotSpot 建構系統;

5、改善鎖争用機制;

6、代碼分段緩存;

7、智能Java編譯, 第二階段;

8、HTTP 2.0用戶端;

更多請參考:《JDK 9》

3、JVM的發展

       我們知道現在JDK1.4後隻有HotSpot作為官方提供的JVM,下面我們看下這個局面是怎麼産生的。

1、Sun Classic VM

第一款商用JVM;

JDK1.0/JDK1.1隻内置Classic VM,JDK1.2/JDK1.3與HotSpot并存,JDK1.2預設使用Classic VM,JDK1.3預設使用HotSpot,JDK1.4抛棄Classic VM;

本身隻解釋執行,JIT編譯器需要外挂,且解釋器與編譯器不能同時配合工作;

記憶體模型:基于handler的對象查找方式;

執行效率低;

2、Sun Exact VM

隻釋出JDK1.2的Solaris平台版本;

被HopSpot取代;

熱點代碼探測、兩級即時編譯器、編譯器與解釋器結合;

記憶體模型:準确式記憶體管理(Exact Memory Management);

執行性能較好;

3、Sun HotSpot VM

目前使用最廣泛的JVM;

1997年Sun收購獲得;

JDK1.2/JDK1.3與HotSpot并存,JDK1.2預設使用Classic VM,JDK1.3預設使用HotSpot,JDK1.4後隻有HotSpot;

熱點代碼探測、兩級即時編譯器、編譯器與解釋器結合;

記憶體模型:準确式記憶體管理(Exact Memory Management);

未來結合JRockit VM;

更多HotSpot發展變化情況請參考:《Java Virtual Machine Technology》

4、BEA JRockit VM

号稱"世界上最快的JVM";

專注伺服器硬體與服務端應用;

沒有解釋器,隻有即時編譯器編譯執行;

 垃圾回收器和MissionControl服務套件比較優秀;

被Oracle收購,與HopSpot結合;

5、其他

IBM J9 VM:與HotSpot一樣為多用途虛拟機,主要應用IBM自己産品;

Azul VM:在HotSpot基礎上改進,專有硬體平台Vege上運作;

 Liquid VM:JRockit VM的虛拟化版本,自帶作業系統;

Apache Harmony:不僅僅是JVM,是一個開源的Java程式運作平台,使用自己的Java類庫;

Dalvik VM:android平台虛拟機,運作class轉化的dex檔案,使用寄存器架構,而不是JVM常見的棧架構;

Microsoft JVM:主要在浏覽器運作Java早期的Applets程式,1997年被Sun控告而終止;

4、Java技術的應用發展

1、AWT/Swing/SWT

        開發GUI、C/S桌面程式,響應較慢,現在很少應用;

2、Applet

        開發浏覽器中運作的網頁小程式,需要使用者安裝JRE插件,響應也慢,現在基本不用;

3、Servlet

        開發伺服器端運作的程式,建構了"接收請求--調用servlet程式處理--傳回響應"基本模型,屬于Java EE重要規範,Tomcat, Jetty, WebLogic , Websphere, JBoss都是實作了Servlet規範的Servlet容器,可以運作Servlet程式;

4、JSP(JavaServer Pages)

        可以在HTML頁面中編寫Java,沒有JPS,Servlet隻能用代碼一行一行建構響應;

5、MVC

        利用SSH/SSM等一些第三架構,編寫Java程式隻需要關注業務邏輯的處理;

6、Android

        開發移動平台應用程式,提供了專為移動平台優化的SDK、以及Dalvik VM;

等等...

上面我們對Java發展有了一個全面的認識,後面我們還将全面深入的學習了解Java……

【參考資料】

1、Oracle Java官網相關文檔:http://www.oracle.com/technetwork/cn/java/index.html

2、Java官方站點:https://www.java.com/zh_CN

3、JVM HotSpot說明:http://www.oracle.com/technetwork/cn/java/javase/tech/index-jsp-136373-zhs.html

4、《深入了解Java虛拟機》

原文:https://blog.csdn.net/tjiyu/article/details/53147136