Reactive programming is a paradigm oriented around data flows and change propagation. RxJS is a library for reactive programming that provides Observables to compose asynchronous operations through operators like map, filter, combineLatest. It allows building responsive applications by making asynchronous code look like synchronous code. RxJS provides both hot and cold Observables, with hot Observables closing over a producer source and cold Observables creating their own producer.