Улучшаемые навыки
Функциональное программирование в Java
Асинхронное программирование
Реактивное программирование
NIO2
CompletableFuture
RxJava
Reactor
R2DBC
SSE
Spring Data reactive
WebClient
Reactive WebSocket
RSocket
Инструменты
VS Code
IntelliJ IDEA
Java
NetBeans
Eclipse
Apache Maven
Чему вы научитесь
01
Изучать основные концепции функционального программирования.
02
Применять лямбда-выражения и методы ссылок для упрощения кода.
03
Использовать Stream API для эффективной обработки коллекций данных.
04
Управлять многопоточностью и параллельным программированием с помощью ExecutorService.
05
Создавать асинхронные задачи с Future и CompletableFuture.
06
Обрабатывать исключения в асинхронном коде и взаимодействовать с внешними системами.
07
Понимать принципы реактивного программирования и их преимущества.
08
Работать с библиотекой Reactor для создания реактивных приложений.
09
Применять операторы для трансформации и фильтрации потоков данных.
10
Оптимизировать производительность и масштабируемость приложений.
Программа курса
Функциональные интерфейсы
Ссылки на метод
Потоки данных
Map / filter / reduce
Агрегационные функции
Reduce при параллельной и последовательной обработке
Цепочки потребителей
Потоковые коллекторы
02
Executor framework. Fork-Join pool
Использование Executors
Future интерфейс
Использование интерфейса Callable
Отмена задач
ForkJoin Framework
Создание пула задач ForkJoin
Параллельные потоки в Java 8+
ForkJoin vs. параллельные потоки vs. последовательные потоки
03
Неблокирующий ввод-вывод NIO
Основные различия между Java NIO и IO
Потоково-ориентированный или буферно-ориентированный
Блокирующий против неблокирующего ввода-вывода
Java NIO Buffer
Java NIO Channel
Direct буфер
Mapped file буфер
Java NIO Selector
Асинхронный ввод / вывод с NIO
Блокировка файла
Cервер NIO
Архитектура сервера Netty
04
Асинхронная Java (Completable Future)
Проблемы синхронного кода
NodeJS архитектура
Параллельная обработка потока данных
CompletableFuture: sync и async методы
Объединение (combine), составление (composing) и быстрейший побеждает (quicker wins)
Обработка исключений в CompletableFuture
Отмена CompletableFuture
Использование CompletableFuture для реального потока данных
Домашняя работа. Практика (2 часа).
05
Реактивное программирование
Что такое реактивность?
Основы RxJava: наблюдатель и наблюдаемый (Observable и Observer)
Реактивные потоки в Java 9 (Java Reactive Streams)
Методы для побочных эффектов (side effects)
Обработка ошибок
Горячие и холодные потоки (hot/cold)
Разделяемые и подключаемые потоки (shared/connectable)
Освобождение потоков (disposing)
Реактивные операторы (полный каталог)
Subjects
Распараллеливание потоков (Schedulers)
Противодавление (backpressure) и интерфейс Flowable
Тестирование реактивных потоков
Операторы Flux / Mono в Reactor
Работа с backpressure в Reactor
Reactor и многопоточность (Reactor Schedulers)
Parallel Flux потоки
Оборачивание синхронных вызовов
Тестирование Reactor
Процессоры (Reactor processors)
07
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
Архитектура и шаблоны реактивного программирования
Домашняя работа. Практика (2 часа).
Для кого
Разработчик
Предварительная подготовка
Уверенное владение Java, желательно знание Spring.
Расписание курсов
Курс проводят
Судакевич Игорь
Эксперт в области разработки ПО (Java).
Senior