Kotlin library providing coroutine builders, dispatchers, Flow, channels and structured concurrency primitives for asynchronous code.
ReactiveX/RxJava
A Java VM implementation of Reactive Extensions for composing asynchronous and event-based programs with observable sequences.
- Stars
- 48,159
- Forks
- 7,584
- Open issues
- 12
- Last commit
- yesterday
What is it?
RxJava extends the observer pattern to sequences of data and events, and provides operators to combine, transform and filter those sequences declaratively. Developers write processing pipelines without managing low-level threads, synchronization or concurrent data structures directly; work is moved between threads through Scheduler abstractions such as subscribeOn and observeOn.
The library offers several reactive types for different cardinalities: Flowable for backpressured streams, Observable for unbounded streams without backpressure, Single, Maybe and Completable for zero or one results, and Streamable for virtual-thread-based blocking flows in version 4. Version 4.x is built on java.util.concurrent.Flow, requires no third-party runtime dependencies, and supports Virtual Threads through schedulers such as Schedulers.virtual().
The project is licensed under Apache-2.0 and is published to Maven Central under the io.reactivex.rxjava4 group. Its wiki and Javadoc document the operators, and version 3.x remains available for existing code.
Key features
- 01Composes asynchronous data and event streams with declarative operators such as map, filter and flatMap.
- 02Provides Flowable with backpressure and Observable without it, plus Single, Maybe and Completable for single-result cases.
- 03Switches work between threads with Schedulers, including computation, cached, virtual and single.
- 04Built on java.util.concurrent.Flow with no required third-party runtime dependencies.
- 05Supports Virtual Threads through Schedulers.virtual() and virtualCreate().
Use cases
- Running network or database calls in the background and delivering results to a UI thread.
- Chaining dependent asynchronous service calls where each step uses the previous result.
- Processing event streams with controlled memory use via backpressure.
- Coordinating parallel work with flatMap or ParallelFlowable and merging the results.
Quick start
- 1
Add the RxJava 4 dependency to your build (Gradle example in README)
- 2
Write and run the Hello World program using Flowable
Things to know
- Built for Java 26; README notes Android compatibility depends on API level and desugaring.
- Version 4 uses new package names (io.reactivex.rxjava4), so migrating from 3.x requires code changes.
- RxJava 3.x support will be reduced in the coming months.
Topics
FAQ
- What is RxJava?
- A Java VM implementation of Reactive Extensions for composing asynchronous and event-based programs with observable sequences. RxJava extends the observer pattern to sequences of data and events, and provides operators to combine, transform and filter those sequences declaratively. Developers write processing pipelines without managing low-level threads, synchronization or concurrent data structures directly; work is moved between threads through Scheduler abstractions such as subscribeOn and observeOn.
- Is RxJava free to use? What license does it have?
- RxJava is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is RxJava still maintained?
- Actively maintained. The last commit to RxJava was on Oct 23, 2026.
- What can I use RxJava for?
- Running network or database calls in the background and delivering results to a UI thread. Chaining dependent asynchronous service calls where each step uses the previous result. Processing event streams with controlled memory use via backpressure. Coordinating parallel work with flatMap or ParallelFlowable and merging the results.
- How do I install RxJava?
- Add the RxJava 4 dependency to your build (Gradle example in README) Write and run the Hello World program using Flowable
- Where can I get RxJava?
- The source code and installation instructions are on GitHub: https://github.com/ReactiveX/RxJava
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
An asynchronous runtime for Rust providing task scheduling, non-blocking I/O, networking, and timers for building reliable network applications.
A small add-on for Python's requests library that sends HTTP requests asynchronously using concurrent.futures.
A state-machine based programming language for formally modeling and systematically checking the correctness of distributed systems.
A reactive Python notebook that auto-reruns dependent cells, stores notebooks as plain .py files, and can run as scripts or deployed apps.
An asynchronous, event-driven Java framework for building maintainable, high-performance network protocol servers and clients.