@turbo_nyasha

RxJava в 2021. Нужен ли?

Время от времени занимаюсь разработкой под Android (в виде хобби), изучаю всякие новшества и так далее, но что в 2017 году не понимал к чему и зачем нужен RxJava, не могу понять и сейчас. Ведь всё что он предлагает - стримы с подписчиками, которые работают в другом потоке и умирают после `onComplete` (или я не правильно понимаю?). На дворе 2021 год, корутины для бэкграунда, актуально ли продолжать разбираться в RxJava?
  • Вопрос задан
  • 301 просмотр
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
RxJava и корутины немного про разное. Rx это про stateless и представление всего в виде стримов иммутабельных стейтов(данных). Корутины это про stateful и про управление множеством асинхронных сущностей.
Так сложилось, что в нашем многопоточном мире в обоих подходах есть concurrency. Но это не значит, что надо брать и противопоставлять Rx корутинам.
Запрос на Rx настолько велик, что в kotlinx завезли flow - это тот же самый реактивный подход, только на основе корутин. С чем боролись, против чего проповедовал Елизаров, на то и напоролись, и ещё наплодили новых операторов, которые тоже надо знать. И усложнили всё чрезвычайно.
flowOf(123)
   .map(::calculateSomething)
   .filter(::myFilter)
   .collect(::collectIt)

Сколько в этом коде Асинхронных запросов? В каком месте оно может уснуть навечно? Неизвестно... фреймворк позволяет легко написать код так, что всё взорвется, а ты и не заметишь.
Хорошо ли то, что с использованием корутин можно писать асинхронный код, по виду идентичный синхронному? Моё мнение - нет, не хорошо, потому что держать в голове две парадигмы про один код - это сложно. А если кто юзал корутины с многопоточностью под iOS(Kotlin/Native), там надо держать в голове три парадигмы про одинаковый код. Это плохо.

На Rx написано много кода, многим людям без него жить сложно. Многие задачи на Rx решаются настолько проще, что реально думаешь, что без него никак.

Если тебе корутины или Rx нужны, чтобы в сеть сходить на бекграунде, и потом данные показать в UI - тебе ни корутины, ни Rx особо не нужны.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы