BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース NetflixがReactive ExtensionsをJavaに持ち込む

NetflixがReactive ExtensionsをJavaに持ち込む

原文(投稿日:2013/02/06)へのリンク

 

Netflixは、 MS Open TechのReactive ExtensionsのJava実装を作成し、オープンソースした。しかし、RxJavaが単にJava用というのは、誤解を招くだろう。他のJVM言語からも使えるように設計されているからである。「最初サポートされる言語(Java自身の他に)は、 Groovy, Clojure, Scala、Jrubyです。」

Netflixは、サーバー側の同時実行を単純化するためにRxJavaを作成した。彼らのゴールは、クライアントがサーバー上で並行に実行される1つの「重い」クライアント要求を起動できるようにすることである。 Ben Christensen と Jafar Husainの両氏は、以下のように説明している。

サーバー側の並列性は、ネットワークのおしゃべりを効果的に減らすのに必要です。サーバー上の並列実行がなければ、1つの「重い」クライアント要求は、たくさんの「軽い」要求よりもずっと効率的ではありません。なぜならデバイスからの各ネットワーク要求は、当然他のネットワーク要求と並列に実行されるからです。不適切に「重い」要求をサーバー側で実行して、並列実行と同程度のレベルに達しなければ、例え保持しているネットワークレイテンシを占有しても、多数の「軽い」要求よりも遅くなるでしょう。

両氏によれば、関数的Reactiveのfutureとコールバックよりも優れている。なぜなら「関数的Reactiveは、効率的な実行と合成を提供します。Observableな オブジェクトをフィルタ、選択、変換、結合、合成を行えるオペレーターのコレクションを提供することで実現しています。」

サービス層のAPIが全てのメソッドでObservable を返すようにすることで、開発者はこれらのメソッドの実装の束縛されない。メソッドは、今日は非同期で呼ばれるかもしれないが、明日は同期的に返すかもしれない。サービスメソッドも自由にブロッキングか非ブロッキングI/Oかを選べる。前者はリソースが制約されている時に、使われる。/p>

RxJavaは、「最終ゴールとして、そのラムダサポートによりJava 8向けのビルドをターゲットにし、Java 5(Androidをサポートするために)とそれ以上を」サポートする。元々のRxのように、Netflixの RxJavaは、Apache Licenseの下で提供されている。githubからRxJava を入手できる。

 

この記事に星をつける

おすすめ度
スタイル

BT