Об этом проекте

RxJava — реализация Reactive Extensions для Java VM: библиотека для композиции асинхронных программ и программ, управляемых событиями, посредством наблюдаемых последовательностей. Расширяет паттерн наблюдатель, добавляя операторы для декларативной композиции последовательностей, абстрагируя низкоуровневые заботы о потоках, синхронизации, потокобезопасности и конкурентных структурах данных. В README описана версия 4.x — нативная Java-реализация без сторонних runtime-библиотек, с поддержкой JPMS и OSGi, реализацией на базе java.util.concurrent.Flow, поддержкой виртуальных потоков и новым типом Streamable, основанным на виртуальном блокировании. Также указаны использование Reactive Streams Test Compatibility Kit, применение Java Cleaner API для обнаружения утечек ресурсов и снижение поддержки RxJava 3.x после выхода релиза 4.x. Раздел Getting started включает добавление зависимости (io.reactivex.rxjava4:rxjava) и пример Hello World с использованием Flowable.just(...).subscribe(...). Базовые типы: Flowable (0..N с обратным давлением), Observable (0..N без обратного давления), Single (ровно один элемент или ошибка), Completable (только завершение или ошибка), Maybe (ни одного элемента, один элемент или ошибка) и Streamable (виртуальное блокирование с нативным обратным давлением). В документации разъясняются термины: upstream/downstream, emissions, backpressure, assembly time, subscription time и runtime, приводятся примеры кода для фоновых вычислений, планировщиков, параллелизма внутри потока, параллельной обработки, зависимых подпотоков, продолжений и преобразований между реактивными типами. Также описываются соглашения об именовании операторов, основанные на ключевых словах Java, стирании типов и типовой неоднозначности.