Java 9的前9大改進和功能,程序員可以先了解下
Java 9的前9大改進和功能,程序員不妨先了解2017-08-04 10:13程序設計/操作系統/客戶端Java 9即將推出。你準備好新版本將帶來的新功能嗎?在本文中,筆者對Java重要的生態系統的改變,包括新的模塊系統,語言和語法的變化等,進行綜合介紹。
Java 9隨著發布的日期臨近,程序員和開發者對其帶來的新功能的興趣逐漸升高。新Java版本的發布日期是2017年9月21日。還有不到兩個月的時間!Java 9有很多變化,下面我將列出將其添加到新的Java 9中的9個重要改進。
1.新模塊系統
編寫大型應用程序或維護庫有幾個問題。隨著代碼庫的增加,創建復雜代碼的機會增加。每個用戶都很難真正封裝代碼類成為公共API的一部分,並且在系統的不同部分之間沒有明確的依賴關系的概念。
包含在新Java版本中的Jigsaw旨在解決所有這些問題。模塊將由通常的類和新的模塊聲明文件組成。該模塊描述符明確地定義了我們的模塊需要什麽依賴關系,以及哪些模塊被外部使用。在exports子句中未提及的所有包默認情況下將封裝在模塊中。
一個簡單的模塊聲明,導出一些它的包:
如果你想了解如何構建應用程序模塊或熟悉Jigsaw語法和項目的更多示例,可以在此處訪問快速入門指南。
http://openjdk.java.net/projects/jigsaw/quick-start
2.支持HTTP/2.0
HTTP/1.1和HTTP/2的主要區別是如何在客戶端和服務器之間構建和傳輸數據。HTTP/1.1依賴於請求/響應周期。 HTTP/2允許服務器“push”數據:它可以發送比客戶端請求更多的數據。 這使得它可以優先處理並發送對於首先加載網頁至關重要的數據。Java 9將完全支持HTTP 2.0,並為Java提供了一個新的HTTP客戶端,它將替代僅適用於blocking模式的HttpURLConnection – 每對請求/響應有一個線程,這增加了延遲和加載時間的網頁。HTTP客戶端還提供API來處理HTTP和服務器推送等HTTP功能。
兩個HTTP交互示例如下所示,它們來自Java 9文檔:
3.改進的Javadoc
根據我在Java開發公司Dreamix工作的經驗。目前,如果想要找到一些類文檔,必須在google中搜索。在Java 9中,Javadoc有幾個改進,其中一個是添加一個搜索框。
如圖在Java 8中
如圖在Java 9中
4.Stream改進
Stream API是Java 8中的遊戲更改功能之一,Java 9已經變得更加出色。 現在,你可以創建Stream from Optional。Stream接口還添加了四種新方法:iterate,dropWhile,takeWhile,ofNullable。
DropWhile丟棄Stream的第一個項目,直到滿足條件。
TakeWhile處理項目直到滿足條件。
Iterate允許使用Stream為for循環寫入適當的替換。它需要Stream的初始值,定義何時停止叠代的條件和生成下一個元素的步驟函數。
OfNullable作為名稱建議讓你從對象創建Stream,而不需要檢查null。它返回一個包含單個元素的順序Stream,如果非空,則返回一個空的Stream。
5.使用新的工廠方法更容易地初始化Collections
目前,如果要創建預定義值列表,您必須進行大量輸入:
將來,通過新添加的工廠方法,常用Collections的初始化將會更加容易。接口中的靜態方法使其成為可能,增強了列表,集合和映射接口,以便使用多達10個元素創建Collections的方法。 生成的對象是針對性能進行了優化的不可變Collections。
在創建後向這些Collections添加項將導致“UnsupportedOperationException”。
上面的代碼看上去更加美觀:
這些是一些添加的方法:
6.接口中的私有方法
Java 8給了我們界面中的默認方法。這些方法具有body和給界面的行為,不僅是空的簽名。 如果你有兩種公共方法幾乎相同的話,你會怎麽做? 很可能將嘗試以私有方式移動通用代碼,並從公共方法中調用它們。但是在類似的情況下,你會在接口中使用兩種默認方法,而不是類中的兩種公共方法嗎?
在Java 9中,可以使用完全相同的方法,並具有通用邏輯的私有方法,此方法將不會成為你API的一部分。
7.語言和語法的改進
現在用資源語句編寫try將更容易。 以前,執行後必須關閉的所有資源必須在try子句中初始化,如下例所示:
從Java 9開始,我們可以在try子句中使用最終和有效的最終資源:
從Java 9變量名稱不能由單個下劃線(“_”)組成。 可以在my_var中的變量名中寫下劃線,但是單獨的下劃線將導致錯誤。背後的原因是下劃線將被保留以供將來在語言中使用。
我們將能夠與匿名內部類共同使用鉆石操作符(diamond operator):
8.增強處理API
到目前為止,管理和控制操作系統進程的能力有限。 此外,你編寫的執行此類交互的代碼取決於操作系統。
新版本將擴展與操作系統進行交互的能力。將添加新的方法來處理PID管理,進程名稱和狀態,子進程管理等等。
檢索當前進程PID並在所有操作系統上運行的示例代碼將如下所示:
9.Java REPL = Jshell
最後但並非最不重要的Java9將包括項目Kulla(http://openjdk.java.net/projects/kulla/)中的Read Evaluate Print Loop(REPL)工具。這個命令行工具被稱為jshell,如果你想自己編寫幾行代碼來測試一下,這將是完美的工具。
只需執行簡單的命令,就不需要使用main方法的新類。
我們在新版本中看不到什麽?
有幾個好的功能從即將發布的版本中刪除。但是,可以在Java 10中等待。
一個標準化和輕量級的JSON API被許多java開發人員所青睞。但是由於資金問題無法在Java 9中見到,但並不會削減掉。Java平臺首席架構師Mark Reinhold在JDK 9郵件列中說:“這個JEP將是平臺上的一個有用的補充,但是在計劃中,它並不像Oracle資助的其他功能那麽重要,可能會重新考慮JDK 10或更高版本中實現。 ”
深圳壓鑄廠http://www.dosin.cn/
Java 9的前9大改進和功能,程序員可以先了解下