RxJava is a library for composing asynchronous and event-based programs using observable sequences. It provides features for concurrency, request management, data flow manipulation, and error handling. RxJava uses streams and new objects like Schedulers, Subscriptions, and Subjects. It can be used with techniques like retained fragments, cached observables, binding to lifecycles, and services to handle configuration changes and loading data.