Java 9將在2017年9月發佈,它將修改一系列的特點,方法,和其他元素。在我們通過搜索JDK的改進方案(JEP)時,我們碰到的JEP 266。它對複雜的Future、併發更新和響應式流的支持進行了一些有趣的更新,引起了我們的注意。
在下面的文章我們將深入探討JEP 266,看看它所提供的改進,並討論一個非常有趣的特性,肯定會是一個最常用的Java 9特性之一。讓我們一起去看看吧。
即將到來的 Java 9
由Oracle起草的JDK增強建議(JEP)之一是JEP 266:更多併發更新。雖然這個名字可能聽起來並不是那麼高大上,但它擁有一些更新,可以解決併發和並行性中的有趣問題,需要在這些庫中進行更新。
修改和更新將是:
1.支持響應式流發佈 - 訂閱框架的接口
2.對CompletableFuture API的一般改進,例如支持延遲,超時,子類化和其他方法
3.一般的改進,如小調整和javadoc規格改寫
我們首先注意到的是Java 9將支持Reactive Streams。這是Java社區提出的一項計劃,旨在提高開發人員的併發工作流程。第二件事是用於CompletableFuture API的幾個修補程序。
響應式流
JDK9中的Flow API對應響應式流規範,響應式流規範是一種事實標準。JEP 266包含了一組最小接口集合,這組接口能捕獲核心的異步發佈與訂閱。希望第三方能夠實現這些接口,並且能共享其方式。
java.util.concurrent.Flow包含以下4個接口:
* Flow.Processor(處理器)
* Flow.Publisher(發佈者)
* Flow.Subscriber(訂閱者)
* Flow.Subscription(訂閱管理器)
這些接口都支持響應式流發佈-訂閱框架。Java 9也提供了實用類SubmissionPublisher。一個發佈者產生一個或多個物品,這些物品由一個或多個消費者消耗。並且訂閱者由訂閱管理器管理。訂閱管理器連接發佈者和訂閱者。
Flow類允許相互關聯的接口和靜態方法來建立流控制的組件,其中Publishers生成由一個或多個訂閱服務器消費的每個消息,每個訂閱者都由一個訂閱管理。
這裡的另一個元素是Flow.Subscriber,它可以異步工作,並被請求觸發。它可以從Flow.Subscription請求多個元素,可以根據需要定義緩衝區大小。
這些接口適用於併發和分佈式異步設置,並且它們之間的通信依賴於一種簡單的流控制形式,可用於避免資源不足的問題。
CompletableFuture的新功能
Java 8中CompletableFuture,實現了Future <T>接口。
CompletableFuture具有實現Future對象的兩個主要功能。它可以通過調用complete()方法而無需任何同步等待來顯式完成。並且它允許在一系列操作中構建管道數據流程。
這樣,任何類型的值在將來都可以使用默認返回值,即使計算未完成,也會默認/中間的結果。
其他
輕量級的json文本處理api
移除很多已經被過期的GCC回收器(是移除哦,因為在Jdk 8 中只是加了過期的標記)
使用G1垃圾回收器作為默認的垃圾回收器
HTML5風格的java doc
java doc只是智能搜索功能
javascript的引擎得到了進一步的升級
引入了SHA-3的hash算法
最後來杯咖啡吧
Java 9即將為java帶來一些主要的動力,包括有趣的方法和工作流,這些方法和工作流必將使Java更加出色。 小編認為JEP 266是最有趣的更新之一,因為它包含了一個來自社區本身的計劃,旨在幫助開發人員解決異步流處理中的一些最大問題。 我們都是為了這個,而還有不到一個多月就推出Java 9,讓我們共同期待吧!