rx-java チュートリアル
rx-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 |
インストールまたはセットアップ
rx-javaのセットアップ
受け台
compile 'io.reactivex:rxjava2:rxjava:2.1.1'Maven
<dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxjava</artifactId> <version>2.1.1</version> </dependency>アイビー
<dependency org="io.reactivex.rxjava2" name="rxjava" rev="2.1.1" />JFrogのスナップショット
repositories { maven { url 'https://oss.jfrog.org/libs-snapshot' } } dependencies { compile 'io.reactivex:rxjava:2.0.0-SNAPSHOT' }ビルドシステムを使用せずに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以降が必要です。
こんにちは世界!
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);
});
}
RxJavaの紹介
RxJavaのコアコンセプトはObservablesとSubscribersです。 Observableは、 Subscriberそれらを消費している間にオブジェクトを放出します。
観察可能な
Observableは、反応的なデザインパターンを実装するクラスです。これらのObservableは、消費者がイベントの変更をサブスクライブできるようにするメソッドを提供します。イベントの変更は、オブザーバブルによってトリガされます。 Observableが持つことができるサブスクライバの数、またはObservableがObservableできるオブジェクトの数に制限はありません。
例えば:
Observable<Integer> integerObservable = Observable.just(1, 2, 3); // Integer observable
Observable<String> stringObservable = Observable.just("Hello, ", "World", "!"); // String observable
ここでは、と呼ばれる観測可能なオブジェクトintegerObservableとstringObservable 、ファクトリメソッドから作成された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!
大理石図の理解
Observableは単なるイベントの流れと考えることができます。 Observableを定義すると、onNext、onComplete、onErrorという3つのリスナーがあります。 Observableが新しい値を取得するたびにonNextが呼び出されます。親Observableがそれ以上の値の生成を終了したことを通知すると、onCompleteが呼び出されます。 Observableチェーンの実行中に例外がスローされた場合、onErrorが呼び出されます。 Rxに演算子を表示するには、大理石図を使用して、特定の操作で何が起こるかを表示します。以下は単純なObservable演算子 "Just"の例です。
マーブル図には、実行中の操作を表す水平ブロック、完了したイベントを表す垂直バー、エラーを表すX、その他の形状が値を表します。そのことを念頭に置いて、「ちょうど」が価値を持ち、onNextを行い、次にonCompleteで終わることがわかります。ちょうど「ちょうど」という操作がたくさんあります。 ReactXプロジェクトの一部であるすべての操作と、 RexXサイトの RxJavaでの実装を見ることができます。 RxMarblesサイトを通じたインタラクティブな大理石図もあります 。
