Очередной ИТ дайджест - Реактивная Жаба ( RxJava и слегка вокруг)

Mar 29, 2019 09:40

Использую данную технологию уже больше года, а потому решил, наконец, основательно разобраться как она работает и зачем она нужна.
Заодно пробежался по родственным JSE / JEE с целью проанализировать сходства / различия, а также когда чего применять.
Надеюсь кому-нибудь тоже пригодится. Бесплатен для любого некоммерческого использования.

Выполнен на основании следующей литературы:
  • Tomasz Nurkiewicz and Ben Christensen “Reactive Programming with RxJava”
  • Andrea Maglie “Reactive Java Programming”
  • Официальная документация и WiKi
  • Множество различных статей вокруг данного вопроса
Введение

Основные абстракции и их интерфейсы
  • Императивное и функциональное программирование
  • Observable - абстракция ленивого источника потока данных или событий
  • Observer - потребитель данных, подписывающийся на поток, поставляемый Observable
  • Single - поток данных только из одно опционального элемента
  • Completable - уведомление о завершении действия
  • Maybe - опциональный результат
Создание Observable
  • Универсальный метод create(subscriber -> {…} )
  • Из перечня уже готовых значений
  • Блокирующая генерация
  • Асинхронная генерация
  • Преобразование между различными типами потоков за счет from()
  • Граничные случаи
  • Получение набора событий во времени
  • Остальное
Потребление событий из Observable
  • Асинхронность и конкурентность
  • Подписка на события
  • Множественные подписчики
Операторы и преобразования
  • Фильтрация
  • Преобразование данных
  • Работа со временем
  • Работа с несколькими Observable
  • Аггрегация данных
  • Группировка данных
  • Размножение данных
  • Выполнение “sife effect” операций
  • Редуцирование потока
  • Написание собственных операторов
Конкуретность и планировщики
  • Worker & Schedulers
  • SubscribeOn()
  • ObserveOn()
Hooks

Работа со специальными потоками данных
  • Single
  • Completable
  • StringObservable
  • Flowable
  • MathObservable
Шаблоны применения в приложениях
  • Создание Observable на основе синхронного кода
  • Типовой конвейер для обработки экземпляра команды, получающей данные из соединения с внешним источником
  • Извлечение данных из Observable
  • Распараллеливание обработки данных
  • Преобразование асинхронного API обратного вызова в Observable
  • Периодический блокирующий опрос изменений извне
  • Взаимодействие с CompletableFuture / Future
Противодавление (backpressure)
  • Управление с точки зрения конечного подписчика
  • Управление с точки зрения поставщика
Ошибки, тестирование и отладка
  • Базовые принципы обработки ошибок
  • Компенсация ошибок
  • Работа с таймаутами
  • Повтор после ошибки
  • Утечки памяти
  • Тестирование
  • Мониторинг
Взаимодействие с окружением
  • Серверные архитектуры
  • Сервера
  • HTTP клиенты
  • UI
  • Реляционные БД
  • NoSQL
  • Camel
RxJava версия 2
  • Причины перехода
  • Flowable vs Observable
  • Новые методы для тестирования
  • Другие крупные отличия
Сравнение с аналогами
  • Composable - все эти классы компонуемы и позволяют мыслить функционально
  • Lazy
  • Reusable
  • Asynchronous
  • Cacheable
  • Push / Pull
  • Backpressure
  • Operator Fusion
Приложение I - Java IO vs NIO
  • Классический I/O
  • Неблокирующий I/O
  • Выводы
Приложение II - Стандартные средства JDK
  • Future & ExecutorServices из Java 5
  • Streams
  • Java.util.Observable
  • Java Reactive Streams
Приложение III - Реактивность в JEE
  • JMS and Message Driven Beans
  • Асинхронные EJB сессионные бины
  • CDI Events/Observers
  • Асинхронные сервлеты и NIO
  • Asynchronous JAX-RS
  • Asynchrony/NIO in WebSocket
  • Работа с пулами потоков
  • Reactive JPA


Скачивать где обычно - twirpx

ИТ, дайджесты

Previous post Next post
Up