О чём курс

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

Цели

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

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

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

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

Уверенное владение Java, желательно знание Spring.

Для кого

Разработчик Разработчик

Улучшаемые навыки

Функциональное программирование в Java
Асинхронное программирование
Реактивное программирование
Обработка событий и потоков данных
Тестирование и отладка асинхронного и реактивного кода

Темы курса

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

02 Executor framework. Fork-Join pool (теория - 3 ч.)
  • Использование Executors
  • Future интерфейс
  • Использование интерфейса Callable
  • Отмена задач
  • ForkJoin Framework
  • Создание пула задач ForkJoin
  • Параллельные потоки в Java 8+
  • ForkJoin vs. параллельные потоки vs. последовательные потоки
03 Неблокирующий ввод-вывод NIO (теория - 3 ч. + практика - 2 ч.)
  • Основные различия между Java NIO и IO
  • Потоково-ориентированный или буферно-ориентированный
  • Блокирующий против неблокирующего ввода-вывода
  • Java NIO Buffer
  • Java NIO Channel
  • Direct буфер
  • Mapped file буфер
  • Java NIO Selector
  • Асинхронный ввод / вывод с NIO
  • Блокировка файла
  • Cервер NIO
  • Архитектура сервера Netty

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

Домашняя работа. Практика (2 часа).
05 Реактивное программирование (теория - 8 ч.)
  • Что такое реактивность?
  • Основы RxJava: наблюдатель и наблюдаемый (Observable и Observer)
  • Реактивные потоки в Java 9 (Java Reactive Streams)
  • Методы для побочных эффектов (side effects)
  • Обработка ошибок
  • Горячие и холодные потоки (hot/cold)
  • Разделяемые и подключаемые потоки (shared/connectable)
  • Освобождение потоков (disposing)
  • Реактивные операторы (полный каталог)
  • Subjects
  • Распараллеливание потоков (Schedulers)
  • Противодавление (backpressure) и интерфейс Flowable
  • Тестирование реактивных потоков
06 Проект Reactor (теория - 4 ч.)
  • Операторы Flux / Mono в Reactor
  • Работа с backpressure в Reactor
  • Reactor и многопоточность (Reactor Schedulers)
  • Parallel Flux потоки
  • Оборачивание синхронных вызовов
  • Тестирование Reactor
  • Процессоры (Reactor processors)
07 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 часа).

63 900 ₽

57 510 ₽ — для физ. лиц

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

Чему вы научитесь

01 Научитесь применять функциональные концепции, такие как лямбда-выражения, функциональные интерфейсы и потоки
02 Освоите методы асинхронного программирования
03 Научитесь основам реактивного программирования, включая использование библиотек
04 Освоите принципы обработки событий и потоков данных, что поможет вам проектировать системы
05 Научитесь методам тестирования и отладки асинхронного и реактивного кода

Ведущий курса

Игорь

Судакевич Игорь

Эксперт в области разработки ПО (Java).

Senior

Курсы и сертификаты

63 900 ₽

57 510 ₽ — для физ. лиц

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

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

63 900 ₽

57 510 ₽ — для физ. лиц

Юр. лицо — 63 900 ₽
Физ. лицо — 57 510 ₽
10.02.2025, Онлайн
10.02.2025, Онлайн
Открытая дата
Продолжая, я подтверждаю, что ознакомлен с Условиями использования и Порядком обработки персональных данных

Отзывы о курсе

Повысьте квалификацию И получите диплом
Отзывы учеников
Тренинг мне очень понравился, узнал много нового для себя. Самым полезным лично для меня были модули про WebFlux, RxJava и ExecutorService, информация о том, что такое реактивное программирование, дополнительные материалы и практические задания. Комплексная подача материала, видно, как все связано. Думаю, что этот тренинг будет особенно полезен для тех, что хочется углубить свои знания.
Я изучил новые предметы и получил возможность применять их в упражнениях, предоставленных тренером. У меня была возможность вернуться к некоторым темам Java, о которых я знал, но не работал с ними, поэтому курс лучше изучить теорию и вспомнить, как ее использовать. Было много примеров, все могли задать вопросы.
Для меня самыми полезными были упражнения, посвященные каждому разделу курса и с большинством из предложенных кейсов я еще ни разу не сталкивался на работе. Понравилось, что нам разрешили сначала самостоятельно попробовать выполнить упражнения, чтобы проверить, не сломаем ли мы их 😊
Замечательный курс! Преподаватель действительно очень хороший, доходчиво объясняет, отвечает на все вопросы, видно, что очень опытный разработчик в прошлом. Впечатлила его способность объяснять материал разносторонне, четко и доступно. Спасибо ему за это!
Много интересной информации, полезные примеры кода с пояснениями, хотя некоторые вещи были бы понятнее, будь у меня больше опыта в теме обучения. Преподаватель очень хорошо разбирается в теме, было видно, что он практикующий разработчик. Понравилось, что между тренером и учебной группой наладилась хорошая связь и мы обменивались опытом.
Полезный курс, который помогает лучше понять Java. Тренер подробно объяснял информацию, приводил примеры и каждое занятие начинал с повторения предыдущего. Это все помогло быстрее запомнить информацию, особенно для тех, кто уже отвык учиться 😊 очень хорошо, что нам присылали презентации и проекты после каждого занятия, чтобы можно было их просмотреть и подготовиться к следующей встречи.

Связанные курсы

JVA-076
40 часов

Java Advanced II: высокопроизводительная Java

Курс посвящен повышению производительности Java-приложений: выявлению узких мест, подходам и методам для повышению производительности, а также инструментам и библиотекам, позволяющим добиться высокой производительности.

от Senior

69 900 ₽

Наши ученики работают в:

Наши клиенты

Mail.ru
Альфа-Банк, банковская группа
Лаборатория Касперского
Магнит, розничная сеть
Спортмастер, сеть спортивных магазинов
ПСБ
Сбертех
Дзен
IT One
Ростелеком
Мегафон
Nexign
Ozon
Декатлон
X5 Group
Технониколь
Росатом
Газпром
Нлмк
ВСК
Синимекс

Не нашли, что искали? — Просто напишите, и мы поможем

Продолжая, я подтверждаю, что ознакомлен с Условиями использования и Порядком обработки персональных данных
Корпоративное обучение Оценка персонала Сертификация О нас Стань тренером Блог
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.