Java 9 已經(jīng)在 JavaOne 大會發(fā)布許久,千鋒哈爾濱Java開發(fā)培訓(xùn)老師將在本文中將為我們梳理 Java 9 所具備的新功能。
JShell:交互式 Java REPL
很多編程語言都已經(jīng)具有了交互式編程環(huán)境,如今 Java 也加入了這個具有REPL [讀取、評估、打印、循環(huán)]功能的俱樂部。 交互式shell可以讓你輕松完成 Java 類、接口、枚舉、對象、語句等的測試任務(wù)。使用 JShell 進行測試時無需部署整個解決方案。JShell也就是Java Shell的縮寫,可以在終端窗口執(zhí)行JShell命令將其啟動,然后就可以直接在命令行中輸入并執(zhí)行 java 代碼了。
使用這個工具的絕佳好處之一是,我們可以輕松測試我們的微服務(wù),而不需要一遍又一遍地部署它們。這有助于加速終極組件的開發(fā)、迭代和質(zhì)量。
私有接口方法
Java 8為我們提供了接口中的默認和靜態(tài)方法實現(xiàn),但是,我們無法在接口中創(chuàng)建私有方法。如果接口中有多個默認方法包含相同功能,通常,我們會重構(gòu)這些方法,調(diào)用一個可復(fù)用的私有方法。在Java 8中,你可以在接口中創(chuàng)建私有方法。隨著 Java 9的發(fā)布,這個問題得以解決,現(xiàn)在我們可以向接口添加私有輔助方法來解決這種類型的問題。
public interface MyInterface {
default void interfaceDefaultMethod() { init(); }
default void interfaceSecondDefaultMethod() { init(); }
// This is the declaration of the Private Method in Interface
private void init() { ... }
}
Java 9 模塊系統(tǒng)
Java 9的一大變化是引入了模塊系統(tǒng)(Jigsaw 項目)。一直到 Java 8 版本,我們都在使用 Monolithic Jars 來設(shè)計基于 Java 語言的應(yīng)用程序。這種設(shè)計有兩個主要的基本問題:難以封裝代碼,并且系統(tǒng)不同部分之間缺乏明確依賴的概念。為了避免這些根本問題,Java 9 引入了模塊系統(tǒng)。模塊系統(tǒng)主要有如下好處:
1. JDK、JRE、JAR等被分割成小的模塊,我們可以只使用我們需要的模塊即可。這有助于縮小小型設(shè)備應(yīng)用程序的尺寸。
2. 對封裝提供強力支持。
3. 內(nèi)部 Non-Critical API 被隱藏,因為模塊安全地隱藏了不需要的內(nèi)部細節(jié)。這大大提高了應(yīng)用程序的安全性。
改進的 Javadoc
我們一直以來都使用 Google 來搜索問題,才能找到正確的 Javadoc 頁面。使用 Java 9這個問題得以解決,Javadoc 現(xiàn)在支持在 API 文檔中的進行搜索。
HTTP/2客戶端
Java 9 中有新的 HTTP/2 客戶端 API 來處理 HTTP 調(diào)用。它代替了老舊的 `HttpURLConnection` API,并提供對 WebSocket 和 HTTP/2 的支持。
HttpClient newHttpClient = HttpClient.newHttpClient();
Uri uriObject = Uri.create("https://developersjournal.in");
HttpRequest request = HttpRequest.newBuilder(uriObject)
.header("User-Agent", "DJ")
.GET()
.build();
HttpResponse resp = client.send(req, HttpResponse.BodyHandler.asString());
新版字符串
Java 9 提供簡化版的字符串格式,有助于清楚區(qū)分主要、次要、安全和補丁新版本。新版本的字符串格式符合當(dāng)前的行業(yè)慣例,特別是語義版本控制(Server)。格式如下:
$MAJOR.$MINOR.$SECURITY.$PATCH
$MAJOR 是主要版本增加的版本號,例如 JDK 9,其中包含由 Java SE 平臺規(guī)范指定的重要新功能。主要版本包含新功能和對現(xiàn)有功能的改,這些功能將提前計劃和公布。
$MINOR 是為每個次要新增加的版本號,例如錯誤修復(fù),標(biāo)準(zhǔn) API 的修訂,或相關(guān)平臺規(guī)范范圍之外的功能實現(xiàn)。
$SECURITY是針對安全新版本增加的版本號,其中包含關(guān)鍵修復(fù)程序,包括提高安全性所需的修補程序。
$PATCH是包含已經(jīng)一起測試的安全性和高優(yōu)先級客戶修補程序的版本的版本號。
多版本兼容 JAR
Java 9 擴展了 JAR 文件格式,以便在單個存檔中共享多個 Java 版本的類文件。
多版本 JAR(MRJAR)包含針對特定 Java 平臺版本的類和資源的附加版本目錄。使用 jar 工具 --release 選項指定版本化目錄。
改進的 Stream API
改進的 Stream API 允許對對象序列化數(shù)據(jù)的傳入流進行過濾,以提高安全性和魯棒性。
對象序列化客戶端可以容易地驗證其輸入,并且導(dǎo)出的遠程方法調(diào)用(RMI)對象也可以容易地驗證調(diào)用參數(shù)。
序列化客戶端實現(xiàn)了在 ObjectInputStream 上設(shè)置的過濾器接口。對于 RMI,用RemoteServerRef 導(dǎo)出對象,該 RemoteServerRef 將 MarshalInputStream 上的過濾器設(shè)置為在未調(diào)用時驗證調(diào)用參數(shù)。
當(dāng)然,Java9有了,Java10也不遠了。想要進一步了解Java嗎?來千鋒教育,學(xué)全新Java知識。
學(xué)員姓名:徐同學(xué)
入職單位:梟*科技
入職月薪:11000
時間:2016.05.26
學(xué)員姓名:潘同學(xué)
入職單位:酷*互動
入職月薪:13000
時間:2016.05.20
學(xué)員姓名:張同學(xué)
入職單位:斑*實業(yè)
入職月薪:14000
時間:2015.12.08
學(xué)員姓名:黃同學(xué)
入職單位:福*中金
入職月薪:12000
時間:2015.12.07
學(xué)員姓名:韓同學(xué)
入職單位:寬*是風(fēng)
入職月薪:17000
時間:2015.09.17
學(xué)員姓名:鄭同學(xué)
入職單位:騰*眾創(chuàng)
入職月薪:16500
時間:2015.11.02
學(xué)員姓名:錢同學(xué)
入職單位:數(shù)*科技
入職月薪:16000
時間:2015.11.04
學(xué)員姓名:孫同學(xué)
入職單位:快*
入職月薪:14000
時間:2015.06.12
學(xué)員姓名:郭同學(xué)
入職單位:本*生活網(wǎng)
入職月薪:14000
時間:2015.10.08
學(xué)員姓名:張同學(xué)
入職單位:泰*集團
入職月薪:13800
時間:2015.06.11
了解千鋒動態(tài)
關(guān)注千鋒教育服務(wù)號
掃碼匿名提建議
直達CEO信箱