Учебный центр IBS

JVA-074 Java Advanced I: функциональное, асинхронное и реактивное программирование

Для кого: Бэкенд разработчикМидл Сеньор
Начало: По факту набора потока
Длительность: 1 неделя
Улучшаемые навыки:
Java
СертификатОнлайн

Описание курса

Курс посвящен современным функциональным, асинхронным и реактивным подходам к разработке на Java, и включает изучение NIO2, CompletableFuture, RxJava, Reactor, R2DBC, SSE, Spring Data reactive, WebClient, reactive WebSocket, RSocket.

Модуль 1

  • Функциональные интерфейсы
  • Ссылки на метод
  • Потоки данных
  • Map / filter / reduce
  • Агрегационные функции
  • Reduce при параллельной и последовательной обработке
  • Цепочки потребителей
  • Потоковые коллекторы

Модуль 2

  • Использование Executors
  • Future интерфейс
  • Использование интерфейса Callable
  • Отмена задач
  • ForkJoin Framework
  • Создание пула задач ForkJoin
  • Параллельные потоки в Java 8+
  • ForkJoin vs. параллельные потоки vs. последовательные потоки

Модуль 3

  • Основные различия между Java NIO и IO
  • Потоково-ориентированный или буферно-ориентированный
  • Блокирующий против неблокирующего ввода-вывода
  • Java NIO Buffer
  • Java NIO Channel
  • Direct буфер
  • Mapped file буфер
  • Java NIO Selector
  • Асинхронный ввод / вывод с NIO
  • Блокировка файла
  • Cервер NIO
  • Архитектура сервера Netty

Модуль 4

  • Проблемы синхронного кода
  • NodeJS архитектура
  • Параллельная обработка потока данных
  • CompletableFuture: sync и async методы
  • Объединение (combine), составление (composing) и быстрейший побеждает (quicker wins)
  • Обработка исключений в CompletableFuture
  • Отмена CompletableFuture
  • Использование CompletableFuture для реального потока данных
  • Домашняя работа. Практика (2 часа).

Модуль 5

  • Что такое реактивность?
  • Основы RxJava: наблюдатель и наблюдаемый (Observable и Observer)
  • Реактивные потоки в Java 9 (Java Reactive Streams)
  • Методы для побочных эффектов (side effects)
  • Обработка ошибок
  • Горячие и холодные потоки (hot/cold)
  • Разделяемые и подключаемые потоки (shared/connectable)
  • Освобождение потоков (disposing)
  • Реактивные операторы (полный каталог)
  • Subjects
  • Распараллеливание потоков (Schedulers)
  • Противодавление (backpressure) и интерфейс Flowable
  • Тестирование реактивных потоков

Модуль 6

  • Операторы Flux / Mono в Reactor
  • Работа с backpressure в Reactor
  • Reactor и многопоточность (Reactor Schedulers)
  • Parallel Flux потоки
  • Оборачивание синхронных вызовов
  • Тестирование Reactor
  • Процессоры (Reactor processors)

Модуль 7

  • Реактивный доступ к БД 
  • Реактивные драйверы R2DBC 
  • Spring Data - реактивные репозитории 
  • Поддержка страниц (paging) в Spring Data reactive 
  • WebFlux: функциональные контроллеры 
  • Spring REST контроллеры, возвращающие реактивные данные (Mono / Flux)
  • Spring REST контроллеры, возвращающие SSE (server-sent event)
  • WebClient: получение реактивных данных с сервера 
  • SSE и протоколы WebSocket 
  • Использование WebSocket для передачи / получения данных JSON 
  • Использование WebSocket для передачи / извлечения двоичных данных
  • Протокол RSocket 
  • Контроллер RSocket на стороне сервера 
  • RSocket клиент: обмен JSON и двоичными данными 
  • RSocket с балансировкой нагрузки 
  • RSocket с взвешенной балансировкой нагрузки 
  • Использование реактивных потоков с брокером сообщений (RabbitMQ)
  • Spring Data MongoDB реактивные репозитории 
  • Бенчмарки: R2DBC против JDBC и WebFlux против Web MVC 
  • Архитектура и шаблоны реактивного программирования 
  • Домашняя работа. Практика (2 часа).

Отзывы о курсе

Отзывов пока нет
Будьте первым, напишите отзыв и поставьте оценку этому курсу.

Еще курсы