Skip to content
Library to convert between RxJava 1.x and 2.x/3.x reactive types, schedulers and resource handles.
Java CSS
Branch: 3.x
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Validate Gradle Action Jan 16, 2020
gradle Upgrade to Gradle 6.0.1 Dec 3, 2019
src Upgrade to RxJava 3.0.0-RC7 Jan 1, 2020
.gitattributes Push the gradle files Aug 19, 2016
.gitignore Add Subscription/Disposable interop API. (#17) Nov 8, 2017
.travis.yml Switch to OpenJDK 8 Jun 24, 2019
HEADER Add Scheduler v1->v2 conversion, cleanup v2->v1 Jan 27, 2018
LICENSE Push the gradle files Aug 19, 2016 Upgrade to RxJava 3.0.0 final. Feb 14, 2020
build.gradle Bump biz.aQute.bnd.gradle from 5.0.0 to 5.0.1 (#50) Mar 25, 2020 Upgrade to RxJava 3.0.0 final. Feb 14, 2020
gradlew Upgrade to Gradle 6.0.1 Dec 3, 2019
gradlew.bat Upgrade to Gradle 6.0.1 Dec 3, 2019
pmd.xml Push the gradle files Aug 19, 2016
settings.gradle Switch to RxJava 3.x Jun 25, 2019

RxJavaInterop Maven Central

RxJava 1.x: RxJava 1.x RxJava 3.x: RxJava 3.x

Library to convert between RxJava 1.x and 3.x reactive types.



dependencies {
    compile "com.github.akarnokd:rxjava3-interop:3.0.0"

Maven search:


Convert between the reactive base types

import hu.akarnokd.rxjava3.interop.RxJavaInterop;

// convert from 1.x to 3.x

io.reactivex.rxjava3.core.Flowable     f3  = RxJavaInterop.toV3Flowable(rx.Observable);

io.reactivex.rxjava3.core.Observable   o3  = RxJavaInterop.toV3Observable(rx.Observable);

io.reactivex.rxjava3.core.Single       s3  = RxJavaInterop.toV3Single(rx.Single);

io.reactivex.rxjava3.core.Completable  c3  = RxJavaInterop.toV3Completable(rx.Completable);

io.reactivex.rxjava3.core.Maybe        m3s = RxJavaInterop.toV3Maybe(rx.Single);

io.reactivex.rxjava3.core.Maybe        m3c = RxJavaInterop.toV3Maybe(rx.Completable);

// convert from 3.x to 1.x

rx.Observable  o1 = RxJavaInterop.toV1Observable(Publisher);

rx.Observable  q1 = RxJavaInterop.toV1Observable(ObservableSource, BackpressureStrategy);

rx.Single      s1 = RxJavaInterop.toV1Single(SingleSource);

rx.Completable c1 = RxJavaInterop.toV1Completable(CompletableSource);

rx.Single      s1m = RxJavaInterop.toV1Single(MaybeSource);

rx.Completable c1m = RxJavaInterop.toV1Completable(MaybeSource);

Convert between Subjects and Processors.

Note that 3.x Subjects and FlowableProcessors support only the same input and output types.

// convert from 1.x to 3.x

io.reactivex.rxjava3.subjects.Subject sj3 = RxJavaInterop.toV3Subject(rx.subjects.Subject);

io.reactivex.rxjava3.processors.FlowableProcessor fp3 = RxJavaInterop.toV3Processor(rx.subjects.Subject);

// convert from 3.x to 1.x

rx.subjects.Subject sj1 = RxJavaInterop.toV1Subject(io.reactivex.rxjava3.subjects.Subject);

rx.subjects.Subject sj1b = RxJavaInterop.toV1Subject(io.reactivex.rxjava3.processors.FlowableProcessor);

Convert between 1.x X.Transformers and 3.x XTransformers.

// convert from 1.x to 3.x

io.reactivex.rxjava3.core.FlowableTransformer    ft3 = RxJavaInterop.toV3Transformer(

io.reactivex.rxjava3.core.ObservableTransformer  ot3 = RxJavaInterop.toV3Transformer(

io.reactivex.rxjava3.core.SingleTransformer      st3 = RxJavaInterop.toV3Transformer(

io.reactivex.rxjava3.core.CompletableTransformer ct3 = RxJavaInterop.toV3Transformer(

// convert from 3.x to 1.x

rx.Observable.Transformer  ft1 = RxJavaInterop.toV1Transformer(

rx.Observable.Transformer  ot1 = RxJavaInterop.toV1Transformer(

rx.Single.Transformer      st1 = RxJavaInterop.toV1Transformer(

rx.Completable.Transformer ct1 = RxJavaInterop.toV1Transformer(

Convert between 1.x Flowable.Operator and 3.x FlowableOperator

// convert from 1.x to 3.x

io.reactivex.rxjava3.core.FlowableOperator fo3 = RxJavaInterop.toV3Operator(rx.Observable.Operator);

// convert from 3.x to 1.x

rx.Observable.Operator fo1 = RxJavaInterop.toV1Operator(io.reactivex.rxjava3.core.FlowableOperator);

Convert between 1.x Subscription and 3.x Disposable

// convert from 1.x to 3.x

io.reactivex.rxjava3.disposables.Disposable d3 = RxJavaInterop.toV3Disposable(rx.Subscription);

// convert from 3.x to 1.x

rx.Subscription s1 = RxJavaInterop.toV1Subscription(io.reactivex.rxjava3.disposables.Disposable);

Convert between 1.x Schedulers and 3.x Schedulers

// convert from 1.x to 3.x

io.reactivex.rxjava3.core.Scheduler s3 = RxJavaInterop.toV3Scheduler(rx.Scheduler);

// convert from 3.x to 1.x

rx.Scheduler s1 = RxJavaInterop.toV1Scheduler(io.reactivex.rxjava3.core.Scheduler);
You can’t perform that action at this time.