1. 程式人生 > >Java 9的前9大改進和功能,程序員可以先了解下

Java 9的前9大改進和功能,程序員可以先了解下

能夠 工作 需要 exc eight 工具 pro 生成 對象

  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大改進和功能,程序員可以先了解下