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

來源:互聯網
上載者:User

上篇《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、JavaPlug-in、javaIDL、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發布,走向成熟的版本,發布新特性:Regex、異常鏈、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、提供NashhornJavaScript引擎、提高安全性;

        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類型反轉,null 指標安全,參與位元運算;

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……

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.