前一段時間,Java 9最新發布的新功能頗受爭議,但這也是Java傳遞舊風格的最后一行!
Java 9的模塊化改變了游戲規則
基于Project Jigsaw的模塊化功能引起了廣大程序開發人員的爭議,Java商店對于模塊化功能并沒有立即更新,而是保守的決定等模塊化日漸成熟后在進行更新。
模塊化是以Java平臺模塊系統的形式將JDK分為一組模塊,用于運行、編譯或構建時間組合的功能。模塊化也被稱為一次具有傳遞性的變更,有利于幫助人們進一步了解模塊之間的依賴關系。
模塊化可以讓軟件開發人員更容易的組裝和維護復雜的應用程序,此外,Java 9中的模塊化可以使得Java更好的縮小模塊化到更小的設備,同時提高安全性和性能。
模塊化主要包括應用程序打包、模塊化JDK本身、將源代碼重新組合成模塊以及重構JDK和Java運行環境映像等。JavaFX UI控件和CSS API現在可用于模塊化。
模塊化支持多種配置,可以提高可擴展性、安全性和應用性能,將Java 9輕松的擴展到小型設備是模塊化的關鍵驅動力。
通過模塊化,開發人員能夠更好的構建和維護Java SE以及Java EE相關庫和大型應用程序。但在Java 9的開發過程中,Oracle、IBM、Red Hat等公司對如何對Java平臺進行重大更新產生了分歧,故模塊體系在今年5月份被拒絕,經過6月份又一次改進之后才在第二次投票中通過。
編譯器的改進
Java 9升級的新功能中包括幾種編譯新功能的改進,其中主要的AoT編譯仍在實驗階段。此功能可以在虛擬機中啟動之前將Java中的類的編譯為本機代碼,這對于縮短小型和大型應用程序的啟動時間以及峰值性能都有重大影響。
另一個關于Java 9優化的重大方面包括JVM編譯器接口的改進,JVM編譯器接口允許使用Java編寫的編譯器作為JVM的動態編譯器。JVMCI的API提供訪問的VM結構、安裝編譯代碼以及插入JVM編譯系統的機制。
此外,在Java中編寫JVM編譯器比用C或C ++編寫的現有編譯器更容易維護和改進,因此,前者預測會比后者在今后更加受歡迎。
Streams API的增強功能
Java 9的開發人員利用流程表達計算,從而使數據并行性被有效的利用。而Java 8中的Stream功能,主要用于聲明數據處理,同時利用多核架構。
相對于Java 9中的Streams API,不僅添加了從Stream獲取和刪除項目的方法、迭代Stream元素,同時擴展可用作Stream源的Java SE API集。
代碼緩存可被分離
JDK 9語允許將代碼高速緩存分為多個段,并且允許擴展,這樣大大提高Java 9的性能。Java 9中的迭代器通過改進分離非方法、異形和非異形代碼,提高一些基準的執行時間。
Java 9中棄用或刪除的功能
Java 9中不再支持的幾個功能中最主要的是Applet API。許多具有安全意識的瀏覽器制造商已經取消對Java瀏覽器插件的支持,并走出了自己的風格,HTML5近幾年的流行也加快了這個趨勢。開發人員開始逐漸使用Java Web Start之類的替代方案。
此外,CMS垃圾回收器在今后的版本中也會被停止沿用。停用的目的是加快HotSpot虛擬機中其他垃圾收集器的開發,低暫停G1垃圾收集器旨在長期替代CMS。
同時,JDK 8中以前不推薦使用的垃圾收集組合在JDK 9中也被刪除,這樣以來會減少垃圾收集器代碼庫的復雜性,這些組合包括增量CMS、ParNew + SerialOld和DefNew + CMS。
最新版本開始也意味著Java 9時代的結束
Oracle最近透露,Java 9是最后一個版本,下一個版本被稱為Java 18.3,預計到2018年3月發布。按照Java 9的發布節奏來看,JDK 9也不會被指定為長期的支持版本,相反,下一個長期使用的版本很有可能是Java 18.9。