Джокер
Администратор
- Регистрация
- 1 Янв 2015
- Сообщения
- 146.407
- Реакции
- 78.242
Java Advanced I: функциональное, асинхронное и реактивное программирование [IBS]
Курс посвящен современным функциональным и реактивным подходам к разработке на Java, повышающем производительность бекэнда, и включает изучение неблокирующего ввода-вывода NIO2, асинхронных промисов CompletableFuture, библиотек реактивного программирования RxJava и Reactor, интерфейса асинхронного доступа к БД R2DBC, потоковый протокол SSE, реактивные репозитории Spring Data reactive, WebClient, протоколы WebSocket и RSocket, а также практические примеры применения.
Спойлер: Разбираемые темы
Модуль 1. Функциональная Java (теория - 2 ч. + практика 1 ч.) ч)
Функциональные интерфейсы
Ссылки на метод
Потоки данных
Map / filter / reduce
Агрегационные функции
Reduce при параллельной и последовательной обработке
Цепочки потребителей
Потоковые коллекторы
Модуль 2. Executor framework. Fork-Join pool (теория - 3 ч.)
Использование Executors
Future интерфейс
Использование интерфейса Callable
Отмена задач
ForkJoin Framework
Создание пула задач ForkJoin
Параллельные потоки в Java 8+
ForkJoin vs. параллельные потоки vs. последовательные потоки
Модуль 3. Неблокирующий ввод-вывод NIO (теория - 3 ч. + практика - 2 ч.)
Основные различия между Java NIO и IO
Потоково-ориентированный или буферно-ориентированный
Блокирующий против неблокирующего ввода-вывода
Java NIO Buffer
Java NIO Channel
Direct буфер
Mapped file буфер
Java NIO Selector
Асинхронный ввод / вывод с NIO
Блокировка файла
Cервер NIO
Архитектура сервера Netty
Модуль 4. Асинхронная Java (Completable Future) (теория - 3 ч. + практика - 2 ч.)
Проблемы синхронного кода
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 ч. + практика - 2 ч.)
Реактивный доступ к БД
Реактивные драйверы 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, повышающем производительность бекэнда, и включает изучение неблокирующего ввода-вывода NIO2, асинхронных промисов CompletableFuture, библиотек реактивного программирования RxJava и Reactor, интерфейса асинхронного доступа к БД R2DBC, потоковый протокол SSE, реактивные репозитории Spring Data reactive, WebClient, протоколы WebSocket и RSocket, а также практические примеры применения.
Спойлер: Разбираемые темы
Модуль 1. Функциональная Java (теория - 2 ч. + практика 1 ч.) ч)
Функциональные интерфейсы
Ссылки на метод
Потоки данных
Map / filter / reduce
Агрегационные функции
Reduce при параллельной и последовательной обработке
Цепочки потребителей
Потоковые коллекторы
Модуль 2. Executor framework. Fork-Join pool (теория - 3 ч.)
Использование Executors
Future интерфейс
Использование интерфейса Callable
Отмена задач
ForkJoin Framework
Создание пула задач ForkJoin
Параллельные потоки в Java 8+
ForkJoin vs. параллельные потоки vs. последовательные потоки
Модуль 3. Неблокирующий ввод-вывод NIO (теория - 3 ч. + практика - 2 ч.)
Основные различия между Java NIO и IO
Потоково-ориентированный или буферно-ориентированный
Блокирующий против неблокирующего ввода-вывода
Java NIO Buffer
Java NIO Channel
Direct буфер
Mapped file буфер
Java NIO Selector
Асинхронный ввод / вывод с NIO
Блокировка файла
Cервер NIO
Архитектура сервера Netty
Модуль 4. Асинхронная Java (Completable Future) (теория - 3 ч. + практика - 2 ч.)
Проблемы синхронного кода
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 ч. + практика - 2 ч.)
Реактивный доступ к БД
Реактивные драйверы 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
Для возможности скачивать складчины и сливы курсов нужно зарегистрироваться
Возможно, Вас ещё заинтересует:
- Как собрать сайт, бота или приложение за 30 минут [Тариф Премиум] [Дмитрий Ледовских]
- Мужская власть 6 [Инна Матиссон]
- [Тайм-коды] Как ФНС проверяет физических лиц, ИП и организации: алгоритм проверок и перспективы на 2027 год [klerk] [Дмитрий Кудряшов]
- [Тайм-коды] Честный знак с 1 июля 2026: новые правила маркировки, штрафы и настройка учета в 1С [klerk] [Виталий Евтухов]
- Деньги на МАХималках [Тариф Канал] [Елена Червонец]
- Интенсив: Сбрось лишнее (Вторая ступень) [Алёна Ковальчук]
- Инвест-слет 2026
- Лавандовое поле [Анастасия Петряева]
- Системный аналитик. Часть 2 (2026) [Тариф Базовый] [Нетология]
- Системный аналитик. Часть 3 (2026) [Тариф Базовый] [Нетология]