Although I am also a beginner, and I have not written any piece of code in RxJAva yet, I will do my best to explain it to you.
The main difference between the two is that RxJava means Reactive Extensions for Java, which means nothing but writing Java code in reactive mode, where reactive is a programming paradigm such as object-oriented programming, and it is based on functional programming. It presents all incoming and outgoing data as a stream of events.
To make this clearer, take a look at the classic Hello World implementation using RxJava:
public static void hello(String... names) { Observable.from(names).subscribe(new Action1<String>() { @Override public void call(String s) { System.out.println("Hello " + s + "!"); } }); }
From: https://github.com/ReactiveX/RxJava/wiki/How-To-Use-RxJava
and in the definition taken from its official Github page:
JVM Reactive Extensions is a library for compiling asynchronous and event-based using observable sequences for the Java virtual machine.
It extends the observer pattern to support data / event sequences and adds operators that allow you to put together sequences declaratively, diverting attention to things like low-level threading, synchronization, thread safety, and simultaneous data structures.
From: https://github.com/ReactiveX/RxJava
So, if you want to write code in reactive mode, it is recommended to study the object, then functional (there is an excellent introduction course on Coursera or try to learn Kotlin), finally, choose reactive.
EventBus is a small library that simplifies the exchange of data between actions, fragments, streams, services, etc. It lacks the maaaany functions that RxJava provides. Moreover, the event bus can simply be created using RxJava, so if you use RxJava in your project, you will forget about the EventBus or Otto libraries.
Take a look at: http://blog.kaush.co/2014/12/24/implementing-an-event-bus-with-rxjava-rxbus/
So, this is not how you already noticed, choose this or that library. If you only need to specify an event between actions, in most cases you will not use RxJava, since it is rather heavy.