非同期コード向けに、コルーチンビルダー、Dispatcher、Flow、Channel、構造化並行性のプリミティブを提供するKotlinライブラリ。
ReactiveX/RxJava
observableシーケンスを使って非同期・イベントベースのプログラムを組み立てる、Java VM向けReactive Extensions実装。
- スター
- 48,159
- フォーク
- 7,584
- 未解決の Issue
- 12
- 最終コミット
- 昨日
これは何?
RxJavaはオブザーバーパターンをデータやイベントのシーケンスに拡張し、それらを宣言的に結合、変換、フィルタリングするオペレーターを提供します。開発者は低レベルのスレッド、同期処理、並行データ構造を直接管理せずに処理パイプラインを記述できます。subscribeOnやobserveOnなどのScheduler抽象化を通じて、処理を別のスレッドに移せます。
このライブラリは、扱う要素数に応じて複数のリアクティブ型を提供します。バックプレッシャーに対応するストリーム向けのFlowable、バックプレッシャーのない無制限ストリーム向けのObservable、結果が0件または1件の場合に使うSingle、Maybe、Completable、そしてバージョン4の仮想スレッドベースのブロッキングフロー向けのStreamableです。バージョン4.xはjava.util.concurrent.Flowをベースとしており、サードパーティ製の実行時依存関係は不要で、Schedulers.virtual()などのSchedulerを通じてVirtual Threadsをサポートします。
プロジェクトはApache-2.0ライセンスで公開され、Maven Centralではio.reactivex.rxjava4グループから配布されています。WikiとJavadocにオペレーターのドキュメントがあり、既存コード向けにバージョン3.xも引き続き利用できます。
主な機能
- 01map、filter、flatMapなどの宣言的なオペレーターを使って、非同期データやイベントのストリームを組み立てます。
- 02バックプレッシャーに対応するFlowableと、対応しないObservableに加え、単一結果向けのSingle、Maybe、Completableを提供します。
- 03computation、cached、virtual、singleなどのSchedulerを使って、処理をスレッド間で切り替えます。
- 04java.util.concurrent.Flowをベースとしており、必須のサードパーティ製実行時依存関係はありません。
- 05Schedulers.virtual()とvirtualCreate()を通じてVirtual Threadsをサポートします。
ユースケース
- ネットワークやデータベースの呼び出しをバックグラウンドで実行し、結果をUIスレッドに渡す。
- 各ステップで前の結果を使いながら、依存関係のある非同期サービス呼び出しを連結する。
- バックプレッシャーによってメモリ使用量を制御しながら、イベントストリームを処理する。
- flatMapやParallelFlowableで並列処理を調整し、結果をマージする。
クイックスタート
- 1
ビルドに RxJava 4 の依存関係を追加します(README の Gradle の例を参照)
- 2
Flowable を使って Hello World プログラムを作成し、実行します
使う前に知っておきたいこと
- Java 26 向けに開発されています。Android との互換性は API レベルと desugaring に依存すると README に記載されています。
- バージョン 4 では新しいパッケージ名(io.reactivex.rxjava4)が使われるため、3.x からの移行にはコードの変更が必要です。
- 今後数か月で RxJava 3.x のサポートは縮小される予定です。
トピック
よくある質問
- RxJava とは?
- observableシーケンスを使って非同期・イベントベースのプログラムを組み立てる、Java VM向けReactive Extensions実装。 RxJavaはオブザーバーパターンをデータやイベントのシーケンスに拡張し、それらを宣言的に結合、変換、フィルタリングするオペレーターを提供します。開発者は低レベルのスレッド、同期処理、並行データ構造を直接管理せずに処理パイプラインを記述できます。subscribeOnやobserveOnなどのScheduler抽象化を通じて、処理を別のスレッドに移せます。
- RxJava は無料で使えますか?ライセンスは?
- RxJava は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- RxJava は今もメンテナンスされていますか?
- 活発にメンテナンス中。RxJava の最終コミットは 2026年10月23日 です。
- RxJava は何に使えますか?
- ネットワークやデータベースの呼び出しをバックグラウンドで実行し、結果をUIスレッドに渡す。 各ステップで前の結果を使いながら、依存関係のある非同期サービス呼び出しを連結する。 バックプレッシャーによってメモリ使用量を制御しながら、イベントストリームを処理する。 flatMapやParallelFlowableで並列処理を調整し、結果をマージする。
- RxJava のインストール方法は?
- ビルドに RxJava 4 の依存関係を追加します(README の Gradle の例を参照) Flowable を使って Hello World プログラムを作成し、実行します
- RxJava はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/ReactiveX/RxJava
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
信頼性の高いネットワークアプリケーションの構築に役立つ、タスクスケジューリング、ノンブロッキングI/O、ネットワーク、タイマーを提供するRust向け非同期ランタイムです。
concurrent.futuresを使ってHTTPリクエストを非同期に送信する、Pythonのrequestsライブラリ向け小型アドオンです。
分散システムを形式的にモデル化し、その正しさを体系的に検証する、状態機械ベースのプログラミング言語。
依存セルを自動で再実行し、ノートブックをプレーンな .py ファイルとして保存して、スクリプトやデプロイ済みアプリとして実行できるリアクティブなPythonノートブック。
保守性と高性能を重視したネットワークプロトコルのサーバーやクライアントを構築するための、非同期・イベント駆動型Javaフレームワークです。