2017-09-23 14 views
5

まず、私はリアクション・プログラミングに関する多くの経験がないと言わなければなりません。Java 9 Flow Interfacesの使い方/ Java 9での使用のポイントは何ですか?

JDK 9(Flow and its nested interfaces)にはわずかなインターフェイスしかないので、JDK 9には明らかにRxJavaのようなリアクティブライブラリが含まれていません。

Javadocには、Publisher,SubscriptionおよびSubscriberという黙示の例がいくつかあります。しかし、これらはかなり低いレベルのようで、反応操作者や背圧の扱いはありません。

したがって、これらのインターフェイスをJDKに含める際のポイントは何ですか?

リアクティブライブラリのベンダーはそれらを使用することになっているので、RxJavaのようなJava実装では共通のインターフェイスセットを使用していますか? (JPAとHibernateに似ていますか?)

+0

さらに、Java 9はrx-javaの観測可能なメソッドをサポートしていますか? Java 9はrx-javaにインフラストラクチャだけを与えましたか? –

+3

あなたはこれまでの研究を行ったことがありますか?対応するjepを読んでいますか? – GhostCat

+1

@GhostCatが指摘しているものを追加するだけで、[JEP#266](http://openjdk.java.net/jeps/266)を見てください。 – nullpointer

答えて

8

これは、主など、Java(登録商標)自体は、いくつかの将来のバージョンで内部反応プログラミングを使用することができReactive JDBC、Networking、IOなどをコンセプトにしていますが、相互運用の新しいラリーポイントとしても機能しますが、そのようなラリーポイントは、Java 6の要件により、

前述したように、その4つのインターフェイスとSubmissionPublisherを単独で使用することは限られています。 JavaにKotlinやC#に似た拡張メソッドがあれば、インタフェースを含めるほうがはるかに面白い影響があります。

残念ながら、既存のライブラリは、Java 9 FlowとReactive-Streamsの間で変換を行い、Java 9 Flow APIを使用してライブラリ全体を再実装するためにブリッジを使用する必要があります。つまり、Java 9(Android) 。

主要なライブラリにはすでにこのようなブリッジがあり(RxJava 2 Jdk 9 Interop,)、リアクションストリームのサイズはown bridge eventuallyです。また、Java 9の機能のために書かれた、そしてそれと共に書かれたもあります。

+2

この印象的なリストに追加するだけで、Android用のフローバックポートが存在します:[streamsupport-flow](https://sourceforge.net/projects/streamsupport/) – Sartorius

2

フローインターフェイスの目的は、非ブロッキングバックプレッシャーで非同期ストリーム処理の標準を提供することです。 (Rxのように)これを実現するソリューションはすでにたくさんありますが、共通のインターフェイスを導入することで相互運用性を最大化します。

バックプレッシャがキーポイントです。バックプレッシャは、プロデューサがコールバックを返す場合、コンシューマはプロデューサが処理できる速度よりも速くそのコールバックを呼び出すことができるということです。

消費者と生産者が互いにブロックするように、同じスレッドでそれらを実行することによって背圧をブロックするのは簡単です。

このフローインターフェイスでは、NON BLOCKINGバックプレッシャーを達成できます。

このリンクでより詳細に説明された詳細(およびインターフェースを使用する方法について):https://aboullaite.me/java-9-new-features-reactive-streams/

関連する問題