What is the difference between rxjava2 and rxkotlin?
the thing is RX stands for Reactive Extensions , and Rx Java , Rx Kotlin or Rx Swift all are the implementation of Reactive Extensions in that particular language.
What is RxJAVA? RxJava is a Java VM implementation of Reactive Extensions. where we can create asynchronous data stream on any thread, transform it and these asynchronous data streams can be consumed by Observers on any thread.
What is RxKotlin? RxKotlin is a Kotlin implementation of Reactive Extensions.
What is RxAndroid? It is specific to Android Platform with some more added classes on top of RxJava.
for more details , visit my collection of rxjava simple examples https://github.com/myJarvis/Intro_to_RxJava .
and to more clarify , RxKotlin has some convenient extension functions which comes with Kotlin.
You can either use {RxJava & RxAndroid} or {RxKotlin}
You can use RxJava with Kotlin out-of-the-box
Since Kotlin is 100% interoperable with Java, you can use most Java libraries in your Kotlin projects without any difficulties—and the RxJava library is no exception.
There is a dedicated RxKotlin library, which is a Kotlin wrapper around the regular RxJava library. This wrapper provides extensions that optimize RxJava for the Kotlin environment and can further reduce the amount of boilerplate code you need to write.
If you are using rxkotlin
you just need to add the following line
implementation 'io.reactivex:rxkotlin:x.y.z'
and if you want to use rxjava2
you need to include the other dependencies i.e
implementation 'io.reactivex.rxjava2:rxjava:2.2.4'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
but if you are using Kotlin as your programming language I will recommend you using rxkotlin
More detail refer to this link
As you can see at https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxkotlin/2.3.0, rxkotlin
depends on rxjava
. So it's automatically added as a transitive dependency unless you specifically exclude it.
Unsurprisingly, rxkotlin
does not depend on rxandroid
so you do need to add that if you want to use it. Both rxandroid
and rxkotlin
use the same rxjava
types, so they can interoperate freely.