1. 程式人生 > >jdk各個版本之間的差異

jdk各個版本之間的差異

eve ace 不用 for java8 對數 使用 人在 hash

背景:求職過程中,這個問題反復被問到。如果答不上來,只能說明基本功不紮實,並不能說自己擅長java。

技術趣味史-Java 各個版本的特性

Java 5

2004 年 Sun 公司發布 J2SE5(沒錯,Sun 公司又改名字了),版本代號 Tiger,這個版本的 Java 語言新功能如下:

  • 1、泛型

  • 2、Metadata,元數據,描述數據的數據。

  • 3、自動裝箱和拆箱,也就是基本數據類型(如 int)和它的包裝類型(如 Integer)自動幫你轉換(其實背後是相關的方法幫你做了轉換工作)。

  • 4、枚舉

  • 5、可變參數,一個函數可以傳入數量不固定的參數值。

  • 6、增強版的 for 循環

  • 7、改進了 Java 的內存模型,提供了 java.util.concurrent 並發包。

Java 6

2006 年 Sun 公司發布 JavaSE6(不要抱怨又改名字了,因為馬上就要見不到 Sun 公司了),版本代號 Mustang(野馬),也是個經典版本,直到現在也有很多人在(講個笑話,現在 Java8 的使用者,絕大多數都是用著 Java8 寫著 Java 6 的代碼,其實我也是,逃~),這個版本的 Java 主 要改變如下:

  • 1、提供動態語言支持。

  • 2、提供編譯 API,即 Java 程序可以調用 Java 編譯器的 API。

  • 3、Swing 庫的一些改進

  • 4、JVM 的優化

  • 5、微型 HTTP 服務器 API 等。

這個版本的 Java 更多是對之前版本功能的優化,增強了用戶的可用性和修復了一些漏洞,所以直到現在也有很多項目在使用(給項目用的Java版本升個級可能會有意想不到的的問題,所以保持原樣就好了,運維大哥要溜了溜了~)。

Java 7

20011 年,這時候 Oracle 已經把 Sun 公司收購了(2009 年後 Java 就是 Oracle 的人了),Oracle 發布 JavaSE7,新增的功能如下:

1、放寬 switch 的使用,我們可以在 switch 中使用字符串

啦,而在這個版本之前,只能使用字符和數字。

2、try-resource-with 語句,幫助我們自動化管理資源,如打開文件,對文件操作結束後,JVM 可以自動幫我們關閉文件資源,當然前提是你要用 try-resource-with 語句。

3、加入了類型推斷功能,比如你之前版本使用泛型類型時這樣寫 ArrayList<User> userList= new ArrayList<User>();,這個版本只需要這樣寫 ArrayList<User> userList= new ArrayList<>();,也即是後面一個尖括號內的類型,JVM 幫我們自動類型判斷補全了。

4、簡化了可變參數的使用

5、支持二進制整數,在硬件開發中,二進制數更常用,方便人查看。

6、支持帶下劃線的數值,如 int a = 100000000;,0 太多不便於人閱讀,這個版本支持這樣寫 int a = 100_000_000,這樣就對數值一目了然了吧。

7、異常處理支持多個 catch 語句

8、NIO 庫的一些改進,增加多重文件的支持、文件原始數據和符號鏈接。

9、其他(更多是進一步的優化)。。。

Java 8(推薦版本)

2014 年,JavaSE8 發布,這個版本包含了之前本想在 JavaSE7 加入的,但由於時間倉促延遲發布的一些功能。

1、Lambda 表達式,簡化代碼(這個後面會專門寫一篇文章介紹)。

2、註解功能的增強。重復註解和註解擴展,現在幾乎可以為任何東西添加註解:局部變量、泛型類、父類與接口的實現,就連方法的異常也能添加註解。

3、新的時間和日期 API,在這之前 Java 的時間和日期庫被投票為最難用的 API 之一,所以這個版本就改進了。

4、JavaFX,一種用在桌面開發領域的技術(也是和其他公司競爭,這個讓我們拭目以待吧)。

5、靜態鏈接 JNI 程序庫(這個做安卓開發的同學應該熟悉)。

6、接口默認方法和靜態方法

7、函數式接口

8、方法引用

9、java.util.stream

10、HashMap的底層實現有變化

11、JVM內存管理方面,由元空間代替了永久代。

區別:

  1. 元空間並不在虛擬機中,而是使用本地內存
  2. 默認情況下,元空間的大小僅受本地內存限制
  3. 也可以通過-XX:MetaspaceSize指定元空間大小

Java 面試知識點解析(四)——版本特性篇(2)

ps:詳細講解了jdk8中的各個新特性

Java 9

2017 年,Oracle 發布 JavaSE9(這個版本的功能早在 2011 年的 JavaOne 大會中就討論了),這個版本目前也還在更新中,一些新功能就簡要介紹一下。

1、模塊化(這點也是向其他語言學習的,如 JavaScript)。

2、Java Shell(這點也是向其他語言學習的,如 Python),在這之前總有人說 Java 太麻煩,寫個 Hello Word 都要新建個類,有時候測試個幾行的代碼都不方便,Java Shell 推出後,Java 開發者不用眼饞其他語言的 Shell 了,你可以向下面圖中這樣寫 Java 的 Hello Word 了(我的電腦上裝了 Java 6、7、8、9、10 ,準備集齊七個版本召喚 Java 神龍,txtx~)。

3、即時編譯功能的增強

4、XML Catalogs ,XML 文件自動校驗。

5、一些還在開發路上的功能。。。

jdk各個版本之間的差異