Looking for rx-java Answers? Try Ask4KnowledgeBase
Looking for rx-java Keywords? Try Ask4Keywords

rx-javarx-javaを使い始める


備考

このセクションでは、rx-javaの基本的な概要と概要について説明します。

RxJavaは、 Reactive Extensionsの Java VM実装です。これは、観測可能なシーケンスを使用して非同期およびイベントベースのプログラムを作成するためのライブラリです。

RxJavaについての詳細はWiki Homeをご覧ください。

バージョン

バージョン状態最新の安定版発売日
1.x 安定 1.3.0 2017-05-05
2.x 安定 2.1.1 2017-06-21

RxJavaの紹介

RxJavaのコアコンセプトはObservablesSubscribers です。 Observable は、 Subscriber それらを消費している間にオブジェクトを放出します。

観察可能な

Observable は、反応的なデザインパターンを実装するクラスです。これらのObservableは、消費者がイベントの変更をサブスクライブできるようにするメソッドを提供します。イベントの変更は、オブザーバブルによってトリガされます。 Observable が持つことができるサブスクライバの数、またはObservableObservable できるオブジェクトの数に制限はありません。

例えば:

Observable<Integer> integerObservable = Observable.just(1, 2, 3); // Integer observable
Observable<String> stringObservable = Observable.just("Hello, ", "World", "!"); // String observable
 

ここでは、と呼ばれる観測可能なオブジェクトintegerObservablestringObservable 、ファクトリメソッドから作成されたjust のRxライブラリで提供します。 Observable は汎用的であるため、任意のオブジェクトを放出することができます。

加入者

Subscriber は消費者です。 Subscriber は、 1つのオブザーバブルのみにサブスクライブできます。 Observable 呼び出しonNext() onCompleted()onError() のメソッドSubscriber

Subscriber<Integer> mSubscriber = new Subscriber<Integer>() {
        // NOTE THAT ALL THESE ARE CALLED BY THE OBSERVABLE
        @Override
        public void onCompleted() {
            // called when all objects are emitted
            System.out.println("onCompleted called!");
        }

        @Override
        public void onError(Throwable throwable) {
            // called when an error occurs during emitting objects
            System.out.println("onError called!");
        }

        @Override
        public void onNext(Integer integer) {
            // called for each object that is emitted
            System.out.println("onNext called with: " + integer);
        }
    };
 

Subscriber も汎用であり、任意のオブジェクトをサポートできることに注意してください。 Subscriber は、オブザーバブルのsubscribe メソッドを呼び出すことによって、オブザーバブルにサブスクライブする必要があります。

integerObservable.subscribe(mSubscriber);
 

上記を実行すると、次の出力が生成されます。

onNext called with: 1
onNext called with: 2
onNext called with: 3
onCompleted called!
 

こんにちは世界!

Hello, World! というメッセージが表示されますHello, World! コンソールに

public void hello() {
  Observable.just("Hello, World!") // create new observable
    .subscribe(new Action1<String>() { // subscribe and perform action

       @Override
       public void call(String st) {
         System.out.println(st);
       }

    });
}
 

またはJava 8ラムダ記法を使用する

public void hello() {
      Observable.just("Hello, World!") // create new observable
        .subscribe(onNext -> { // subscribe and perform action
             System.out.println(onNext);   
        });
}
 

インストールまたはセットアップ

rx-javaのセットアップ

  1. 受け台

    compile 'io.reactivex:rxjava2:rxjava:2.1.1'
     
  2. Maven

    <dependency>
        <groupId>io.reactivex.rxjava2</groupId>
        <artifactId>rxjava</artifactId>
        <version>2.1.1</version>
    </dependency>
     
  3. アイビー

    <dependency org="io.reactivex.rxjava2" name="rxjava" rev="2.1.1" />
     
  4. JFrogのスナップショット

    repositories {
    maven { url 'https://oss.jfrog.org/libs-snapshot' }
    }
    
    dependencies {
        compile 'io.reactivex:rxjava:2.0.0-SNAPSHOT'
    }
     
  5. ビルドシステムを使用せずにjarファイルをダウンロードする必要がある場合は、希望するバージョンのMaven pom ファイルを以下のように作成します。

    <?xml version="1.0"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.netflix.rxjava.download</groupId>
        <artifactId>rxjava-download</artifactId>
        <version>1.0-SNAPSHOT</version>
        <name>Simple POM to download rxjava and dependencies</name>
        <url>http://github.com/ReactiveX/RxJava</url>
        <dependencies>
            <dependency>
                <groupId>io.reactivex</groupId>
                <artifactId>rxjava</artifactId>
                <version>2.0.0</version>
                <scope/>
            </dependency>
        </dependencies>
    </project>
     

それから、

$ mvn -f download-rxjava-pom.xml dependency:copy-dependencies
 

このコマンドは、 rxjava-*.jar とその依存関係を./target/dependency/.

Java 6以降が必要です。

大理石図の理解

Observableは単なるイベントの流れと考えることができます。 Observableを定義すると、onNext、onComplete、onErrorという3つのリスナーがあります。 Observableが新しい値を取得するたびにonNextが呼び出されます。親Observableがそれ以上の値の生成を終了したことを通知すると、onCompleteが呼び出されます。 Observableチェーンの実行中に例外がスローされた場合、onErrorが呼び出されます。 Rxに演算子を表示するには、大理石図を使用して、特定の操作で何が起こるかを表示します。以下は単純なObservable演算子 "Just"の例です。

大理石図の例

マーブル図には、実行中の操作を表す水平ブロック、完了したイベントを表す垂直バー、エラーを表すX、その他の形状が値を表します。そのことを念頭に置いて、「ちょうど」が価値を持ち、onNextを行い、次にonCompleteで終わることがわかります。ちょうど「ちょうど」という操作がたくさんあります。 ReactXプロジェクトの一部であるすべての操作と、 RexXサイトの RxJavaでの実装を見ることができます。 RxMarblesサイト通じたインタラクティブな大理石図もあります