Курс: Java Advanced I: функциональное, асинхронное и реактивное программирование
Продолжительность курса: 36 ак. ч.
Описание курса:
Курс посвящен современным функциональным и реактивным подходам к разработке на Java, повышающем производительность бекэнда, и включает изучение неблокирующего ввода-вывода NIO2, асинхронных промисов CompletableFuture, библиотек реактивного программирования RxJava и Reactor, интерфейса асинхронного доступа к БД R2DBC, потоковый протокол SSE, реактивные репозитории Spring Data reactive, WebClient, протоколы WebSocket и RSocket, а также практические примеры применения.
Аудитория:
• Java-разработчики.
• Архитекторы Java
Необходимая подготовка:
Уверенное владение Java, желательно знание Spring.
Программа курса:
Модуль 1. Функциональная Java
• Функциональные интерфейсы
• Ссылки на метод
• Потоки данных
• Map / filter / reduce
• Агрегационные функции
• Reduce при параллельной и последовательной обработке
• Цепочки потребителей
• Потоковые коллекторы
Модуль 2. Executor framework. Fork-Join pool
• Использование Executors
• Future интерфейс
• Использование интерфейса Callable
• Отмена задач
• ForkJoin Framework
• Создание пула задач ForkJoin
• Параллельные потоки в Java 8+
• ForkJoin vs. параллельные потоки vs. последовательные потоки
Модуль 3. Неблокирующий ввод-вывод NIO
• Основные различия между Java NIO и IO
• Потоково-ориентированный или буферно-ориентированный
• Блокирующий против неблокирующего ввода-вывода
• Java NIO Buffer
• Java NIO Channel
• Direct буфер
• Mapped file буфер
• Java NIO Selector
• Асинхронный ввод / вывод с NIO
• Блокировка файла
• Cервер NIO
• Архитектура сервера Netty
Модуль 4. Асинхронная Java (Completable Future)
• Проблемы синхронного кода
• NodeJS архитектура
• Параллельная обработка потока данных
• CompletableFuture: sync и async методы
• Объединение (combine), составление (composing) и быстрейший побеждает (quicker wins)
• Обработка исключений в CompletableFuture
• Отмена CompletableFuture
• Использование CompletableFuture для реального потока данных
• Домашняя работа. Практика.
Модуль 5. Реактивное программирование
• Что такое реактивность?
• Основы RxJava: наблюдатель и наблюдаемый (Observable и Observer)
• Реактивные потоки в Java 9 (Java Reactive Streams)
• Методы для побочных эффектов (side effects)
• Обработка ошибок
• Горячие и холодные потоки (hot/cold)
• Разделяемые и подключаемые потоки (shared/connectable)
• Освобождение потоков (disposing)
• Реактивные операторы (полный каталог)
• Subjects
• Распараллеливание потоков (Schedulers)
• Противодавление (backpressure) и интерфейс Flowable
• Тестирование реактивных потоков
Модуль 6. Проект Reactor
• Операторы Flux / Mono в Reactor
• Работа с backpressure в Reactor
• Reactor и многопоточность (Reactor Schedulers)
• Parallel Flux потоки
• Оборачивание синхронных вызовов
• Тестирование Reactor
• Процессоры (Reactor processors)
Модуль 7. Spring WebFlux и практическое реактивное программирование
• Реактивный доступ к БД
• Реактивные драйверы 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
• Архитектура и шаблоны реактивного программирования
Окончательная цена указывается в договоре на обучение.
Записаться на курс