О курсе
Состав учебной программы:
Модуль 1 (факультативный) — Функциональная Java (~6 часов видеолекций)
- Лямбда-выражения и встроенные функциональные интерфейсы
- Примитивные специализации, унарные и бинарные версии функциональных интерфейсов
- Метод map(), в т.ч. его примитивные специализации
- Поиск «короткозамыкающими» операторами
- Применение класса Optional, в т.ч. его примитивных специализаций
- Фильтрация и обработка данных на Stream-объектах, в т.ч. работа с методом flatMap()
- Сортировка коллекций с применением Stream API
- Сегментирование / классификация элементов с помощью утилитарного класса Collectors
- Немутирующие редукторы при параллельной и последовательной обработке
- Каррированные функции
- Динамическая типизация и произвольные лямбда-выражения
- Глубокое погружение в ссылки на методы
Модуль 2 — Асинхронная Java (~6 часов видеолекций)
Подмодуль 2.1 – Completable Future
- Проблемы синхронного кода в блокирующих сценариях
- Sync и Async методы в классе CompletableFuture
- Combine-, composе- и anyOf-операции
- Специфика обработки исключений в CompletableFuture
- CompletableFuture в сценариях с пользовательскими ExecutorService-пулами
- Отмена CompletableFuture
- Применение CompletableFuture в потоках данных на практике
Подмодуль 2.2 – Неблокирующий ввод/вывод на базе NIO
- Основные различия между Java NIO и IO
- Потоко- и буфер-ориентированный ввод/вывод
- Блокирующий и неблокирующий ввод/вывод
- Java NIO Buffer, Channel и Selector
- Direct и non-direct буферы
- MappedFileBuffer
- Асинхронный ввод / вывод средствами NIO
- Класс FileLock и избирательная блокировка файлов
- Примеры промышленной NIO-архитектуры (сервер Netty, Node.JS и др.)
Модуль 3 — Реактивная Java (~21 часов видеолекций)
Подмодуль 3.1 – Библиотека RxJava
- Понятие «реактивность» и цели Реактивного Манифеста
- Основы RxJava: Observable и Observer
- Реактивные потоки в Java 9
- Методы с побочными эффектами
- Обработка ошибок в полностью функциональном стиле
- «Горячие» и «холодные» паблишеры
- Расшаренные и Connectable-паблишеры
- Утилизация реактивного конвейера (disposing)
- Каталог наиболее востребованных реактивных операторов RxJava
- Subjects
- Многопоточность в реактивных стимах на базе Schedulers
- Противодавление (backpressure) и Flowable-паблишеры
- Тестирование реактивных конвейеров в RxJava
Подмодуль 3.2 – Библиотека Reactor
- Флагманские паблишеры Flux / Mono и их операторы
- Работа с backpressure в Reactor
- Поддержка многопоточности в Reactor
- Распараллеливание Flux-конвейеров
- Обертки для синхронных вызовов
- Reactor-процессоры
- Тестирование реактивных конвейеров в Reactor
Подмодуль 3.3 – Spring WebFlux и практическое реактивное программирование
- Spring REST контроллеры, возвращающие реактивные данные как Mono и Flux
- Функциональные контроллеры в WebFlux
- Server-Sent Events (SSEs)
- WebClient для получения потока реактивных данных от сервера
- Реактивный доступ к СУБД
- Реактивный драйвер R2DBC
- Реактивные репозитории в Spring Data
- Работа с реактивным репозиторием в Spring Data на примере MongoDB
- Бенчмаркинг для R2DBC и WebFlux против Web MVC с JDBC
- Рекомендуемые практики реактивного программирования
- Бонусные лекции: Реактивная имплементация брокера сообщений Kafka
Модуль 4 (факультативный) — Многопоточная Java (~6 часов видеолекций)
- Создание рабочих подпроцессов (threads) на базе Runnable- и Callable-объектов, и применение интерфейсов ExecutorService и Future для асинхронного исполнения задач
- Выявление потенциальных проблем конкурентного режима, в т.ч. статическая блокировка (deadlock), зависание по недоступу к ресурсу (starvation), динамическая блокировка (livelock) и состояние гонки (race conditions / data race)
- Применение ключевого слова synchronized и пакета java.util.concurrent.atomic для управления порядком исполнения подпроцессов
- Работа с синхронизационными примитивами, в частности, на базе интерфейса Lock и классов ReentrantLock, Condition, CyclicBarrier, Semaphore и др.
- Fork/Join Framework и рекурсивная парадигма, в т.ч. top-down и bottom-up
Для кого этот курс
Java-программисты Middle-уровня, желающие глубоко освоить приемы создания асинхронно-реактивного кода для событийно-ориентированной и потоковой обработки данных, в т.ч. в Spring-приложениях.
Начальные требования
Уверенное владение Java, желательно знание Spring и принципов взаимодействия с СУБД.
Наши преподаватели
Как проходит обучение
Учебный материал курса состоит из видеолекций и кодового практикума.
На данный момент не предполагаются ни домашние задания, ни входное/выходное тестирование.
Программа курса
Что вы получаете
- Приемы повышения производительности серверных Java-приложений с помощью современных подходов к принципам обработки событий и потоковых данных
- Асинхронные промисы CompletableFuture
- Неблокирующий ввод/вывод (NIO)
- Библиотеки реактивного программирования RxJava и Reactor
- Интерфейс асинхронного СУБД-доступа R2DBC
- Реактивные репозитории Spring Data Reactive
- Spring-модуль WebFlux и технология WebClient
- Приемы тестирования и отладки асинхронно-реактивного кода.
Сколько стоит обучение
Price:
15 000 ₽
Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы вернём вам деньги в течение 30-ти дней после покупки.