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

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

Описание

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

Разбираемые темы

Модуль 1. Функциональная Java (2 часа).
  • Функциональные интерфейсы
  • Ссылки на метод
  • Потоки данных
  • Map / filter / reduce
  • Агрегационные функции
  • Reduce при параллельной и последовательной обработке
  • Цепочки потребителей
  • Потоковые коллекторы
Домашняя работа. Практика (1 час).

Модуль 2. Executor framework. Fork-Join pool (2 часа).
  • Использование Executors
  • Future интерфейс
  • Использование интерфейса Callable
  • Отмена задач
  • ForkJoin Framework
  • Создание пула задач ForkJoin
  • Параллельные потоки в Java 8+
  • ForkJoin vs. параллельные потоки vs. последовательные потоки

Модуль 3. Неблокирующий ввод-вывод NIO (4 часа).
  • Основные различия между Java NIO и IO
  • Потоково-ориентированный или буферно-ориентированный
  • Блокирующий против неблокирующего ввода-вывода
  • Java NIO Buffer
  • Java NIO Channel
  • Direct буфер
  • Mapped file буфер
  • Java NIO Selector
  • Асинхронный ввод / вывод с NIO
  • Блокировка файла
  • Cервер NIO
  • Архитектура сервера Nettyr
Домашняя работа. Практика (2 часа).

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

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

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

Модуль 7. Spring WebFlux и практическое реактивное программирование (6 часов).
  • Реактивный доступ к БД
  • Реактивные драйверы 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 часа).

Цели

  • Познакомить слушателей с современными асинхронным и реактивным программированием.
  • Дать примеры применения.

Целевая аудитория

Разработчики Java, архитекторы Java

Предварительная подготовка

Уверенное владение Java, желательно знание Spring.
После окончания курса выдаётся сертификат на бланке Luxoft Training
Не подходят даты, время или хотите заказать корпоративное обучение для команды?
+
Предложите свой вариант
Москва 39 900 руб.
Санкт-Петербург 35 910 руб.
Омск 29 930 руб.
Киев 11 200  грн.
Одесса 10 100  грн.
Днепр 10 100  грн.

Рекомендуемые дополнительные материалы, источники:

1. Core Java SE 9 for the Impatient, Second Edition by Cay Horstmann - sections Streams, Concurrent programming
2. Java I/O, NIO and NIO.2 by Jeff Friesen
3. Learning RxJava - Second Edition by Nick Samoylov and Thomas Nield
4. Project Reactor reference https://projectreactor.io/docs/core/release/reference/
5. Spring WebFlux reference https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html
6. Hands-On Reactive Programming in Spring 5: Build Cloud-ready, Reactive Systems with Spring 5 and Project Reactor, by Oleh Dokuka(Author), Igor Lozynskyi (Author)

Записаться на курс

Выбрать дату
Если Вам не подходят дата и место проведения тренинга, Вы можете оставить заявку на участие в нем в любом из городов, где представлены филиалы Luxoft Training. Для этого выберите вариант "Открытая дата" и укажите желаемое место проведения курса.
Желаемое место проведения курса
Вы можете оставить заявку на корпоративное обучение сотрудников Вашей компании в любом городе России или Украины, выбрав вариант "Другой город"
Фамилия *

Имя *

Отчество

Контактный E-mail *

Компания *

Телефон *

Город *

Комментарий
Оценка и обучение ИТ-специалистов по ключевым направлениям разработки программного обеспечения. Курсы от экспертов-практиков по языкам программирования, системному и бизнес-анализу, управлению проектами, тестированию ПО, архитектуре ПО. Luxoft Training – единственный учебный центр в России, авторизованный IIBA. Действует скидка 10% на обучение физических лиц.
   Подпишись на ежемесячный DigestLT
Успешная форма подписки.
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.