← Ко всем open source проектам

RxJava

ReactiveX/RxJava

RxJava — реализация Reactive Extensions для JVM: библиотека для асинхронных и событийных программ через потоки данных.

Форки 7,586
Автор ReactiveX
Язык Java
Лицензия Apache-2.0
Обновлено 2026-06-10

Что это такое

RxJava — библиотека Reactive Extensions для JVM. Она расширяет идею observer pattern: вместо отдельных callback-функций программа работает с последовательностями событий и данных, к которым применяются операторы. Это позволяет описывать асинхронную логику декларативнее: фильтровать, объединять, ограничивать, переключать потоки выполнения и обрабатывать ошибки.

Репозиторий появился в 2013 году и стал одним из ключевых проектов реактивной Java-экосистемы. RxJava повлиял на Android-разработку, серверные приложения и мышление о потоках данных. В современных версиях проект учитывает Java Flow, virtual threads и новые возможности платформы.

Что внутри

Внутри — основные типы для потоков данных, операторы, планировщики, поддержка backpressure, тесты, документация и примеры. Важная часть модели — разделение того, что происходит в потоке, и того, где это выполняется. Scheduler позволяет явно переносить работу между вычислительными, IO и другими контекстами.

Пример реактивной цепочки

Java не включен в список подсветки этой страницы, поэтому пример показан как обычный текст. Он демонстрирует чтение последовательности, фильтрацию, преобразование и подписку.

Язык: Plain text
Flowable.just("alpha", "beta", "gamma")
    .filter(name -> name.length() > 4)
    .map(String::toUpperCase)
    .subscribe(System.out::println);

Где полезен

RxJava полезен в приложениях, где много асинхронных источников: пользовательские события, сеть, база данных, таймеры, очереди, фоновые операции. Он помогает собрать цепочку обработки в одном месте и явно описать, как данные проходят через систему.

Ограничения

Главный минус — сложность. Реактивный код легко превращается в цепочки, которые трудно читать и отлаживать, особенно если команда плохо понимает schedulers, backpressure и обработку ошибок. RxJava силен там, где асинхронность действительно центральна; для простых случаев обычные futures, coroutines или стандартные средства платформы могут быть понятнее.