Целый день льёт дождь, такая депрессивная погода наталкивает на мысль...отказаться вообще от ненужной RxJava и окончательно перейти на корутинки.
🤔
49.5%
Уже отказались и перешли🤔
24.3%
Rx one love🤔
26.2%
Гоняем в тредпуллахА если говорить про корутины, то есть классный доклад, который надеюсь, многие уже видели bit.ly/3etkcrn
В целом, если говорить о RxJava, то хочу порекомендовать неплохую книгу, которая даст в целом представление для тех, кто знаком только с оператором map и Scheduler.io и один докладик про реактивные стримы в целом
bit.ly/3hcBlHY
bit.ly/3ewxzqM
Конечно, дальше всё - это чистое имхо.
Но стоит начать с теории.
Reactive Stream - это прежде всего концепция, которая очень популярна, по ней написано куча книг, статей и так далее. Начать можно вообще от сюда. Сама же RxJava - это реализация.
reactive-streams.org
Корутины же - это концепция, которой уже под сраку лет, которая чем-то похожа на GreenThreads.
bit.ly/33qVthd
Суть в том, что есть задача, которая может быть приостановлена, до момента того, пока снова не нужно будет продолжать работу.
Так же, Rx со времени развития получил такую вещь как backpressure, которая позволяет нам ограничивать поток данных, для оптимального выполнения на наших ресурсах.
Суть Rx в том, что мы имеем поток данных и набор преобразований над ним. А дальше всё зависит от реализаций и набора операторов.
Пример RxJava.
Ну например, на каком шедулере(ну потоке) будет происходить вызов onNext подписчика
А Rx - это концепция, которая предоставляем нам механизм для обработки бесконечных потоков данных без блокировок. А RxJava - это реализация в конкретном языке, которая полностью следует спецификации для решения конкретных задач.
Так что, кмк, частые холивары про то, что лучше - это просто противостояние, которое абсолютно не имеет смысла. Корутины - это способ достичь параллелизм максимально оптимальным образом, не создавая кучи поток для выполнения.
Соответственно, т.к. всё строится на коллбеках, которые скрыты за генерацией кода компилятором, то чтобы полностью раскрыть потенциал корутины - необходима поддержка неблокирующих вызовов от системных API, например FS, сокетов и так далее.