RxJava 1.xの回では"Hello, World!"と"こんにちは、世界!"を通知し、受け取った通知に対しての出力を行うサンプルを作りました。今回はこのサンプルと同じような処理をするものをRxJava 2.xを使って実装してみましょう。
対象読者
- Java経験者(初心者可)
- RxJava未経験者
- リアクティブプログラミング未経験者
※ただし、前回までの連載を読んでいる前提です。
環境構築
RxJava 2.xではRxJava 1.xとは違いReactive Streamsとの依存があるため、RxJava 2.xのjarだけでなく、Reactive Streamsのjarにもパスを通すことで初めてRxJava 2.xを使えるようになります。そのため、MavenやGradleを使ってRxJava 2.xとReactive Streamsとの間の依存関係を自動で解決させるようにしたほうがよいでしょう。
Mavenを使って環境を構築する場合、pom.xmlに次のdependencyを追加して取得することでRxJava 2.xが使える環境を構築できます。今回は執筆時点での最新版である2.0.0を使います。
<dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxjava</artifactId> <version>2.0.0</version> </dependency>
同様にGradleからも追加が可能です。dependenciesに下記を追加してください。
dependencies { …… 略 compile 'io.reactivex.rxjava2:rxjava:2.0.0' }
MavenやGradleを使うと、Reactive Streamsの記述を行わなくても自動的にRxJava 2.xが依存しているReactive Streamsのjarをダウンロードしてくれます。こうすることで、新しいバージョンに変更する際に依存するライブラリのバージョンの対応を意識しなくてよくなります。
しかし、これらのツールを使わずに環境を構築したい場合、Mavenの検索サイトから直接jarを取得することも可能です。
その場合、Mavenの検索サイトから、
g:"io.reactivex.rxjava2" AND a:"rxjava"
と入力し検索すると、RxJava 2.xの最新のjarがダウンロードできるようになります。
ただし、この場合はReactiveStreamsのjarが含まれていないので自分でダウンロードする必要があります。そのため、Mavenの検索サイトから、
g:"org.reactivestreams" AND a:"reactive-streams"
で検索し、Reactive Streamsの対象のバージョンのjarをダウンロードしないといけません。
現段階ではReactive Streamsのバージョンは1.0.0なのですが、今後それぞれがバージョンアップした際は対応するバージョンを意識しないといけないので、各jarを個別に取得して設定する場合は注意してください。