RxJava is a library for composing asynchronous and event-based programs by using observable sequences. It provides APIs for asynchronous programming using observable streams and the observer pattern to allow publishing and subscribing to multiple streams of events. Some key features include transformations on observable streams, combining multiple observables, filtering streams, and handling asynchronous operations without callbacks using reactive extensions. The document provides examples of creating observables from various sources, transforming streams through mapping and filtering, and combining multiple observables. It also discusses subjects, schedulers, and how RxJava can help eliminate AsyncTasks for asynchronous operations on Android.