Reactive programming is an approach to asynchronous events handling. Mono is a publisher that can emit zero or one event. Observable is a class from RxJava that emits a stream of values. Scheduler is an abstraction over thread pools.