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
Тренер в Онлайн
Соколов Михаил Специалист в области разработки и архитектуры ПО
Михаил имеет опыт в области разработки ПО уровня Enterprise с 2004 г. 
В компании Luxoft Михаил работает с 2010 г., за это время участвовал в нескольких проектах для крупной американской авиастроительной компании в различных ролях от разработчика до архитектора. 
Михаил интересуется технологиями создания масштабируемых, высокопроизводительных, распределенных приложений, а также функциональными языками программирования.

Профессиональный опыт

2015 – наст. вр. – тренер Luxoft Training.
2010 – наст. вр. – Java-/Flex-разработчик, архитектор ПО, Java-/Web-разработчик;
2008–2009 – ЭТИС, Java-разработчик;
2004–2009 – Омский государственный университет, Java-, Pl-/Sql-разработчик.
Сонькин Владимир Эксперт в области разработки ПО: Java и Web-технологии
Владимир имеет опыт в области разработки ПО уровня Enterprise для крупнейших зарубежных компаний с использованием технологии Java с 2000 г.

В компании Luxoft Владимир работает с 2006 г. За это время поучаствовал в нескольких проектах для крупной американской сельскохозяйственной компании и крупнейшего швейцарского банка. Интересуется технологиями создания масштабируемых, эргономичных web-интерфейсов, а также технологиями повышения производительности труда разработчиков.

Специализируется на использовании JavaScript и Java для создания мощных и современных web-приложений, создании современных эргономичных web-интерфейсов с низким временем отклика.

Профессиональный опыт

2006–2012 – Luxoft, ведущий разработчик, участие в проектах для крупного банка (разработка системы биржевой торговли; разработка системы развертывания ПО на серверах банка); участие в проекте для американской агропромышленной компании (разработка логистической системы учета и транспортировки сельхозпродукции).
2005–2006 – ITCI, ведущий разработчик, разработка системы управления процессом разработки ПО.
2002–2004 – Институт возрастной физиологии РАО, руководитель проекта IT-поддержки систем всероссийского мониторинга школьников, разработка систем сбора и анализа данных.

Образование

1995–2000 – МГУ им. М.Ю. Ломоносова, факультет вычислительной математики и кибернетики, специальность "Прикладная математика".
Данный курс запланирован в городах: Онлайн
14.12.2020 - 18.12.2020
Время: 10:00-16:00
Локация: Онлайн
Длительность: 30 ч.
Тренер
Соколов Михаил
Специалист в области разработки и архитектуры ПО
39 900 руб.
11 200 грн.
В корзину

14.12.2020

19.04.2021 - 23.04.2021
Время: 10:00-16:00
Локация: Онлайн
Длительность: 30 ч.
Тренер
Сонькин Владимир
Эксперт в области разработки ПО: Java и Web-технологии
39 900 руб.
11 200 грн.
В корзину

19.04.2021 - 23.04.2021

14.12.2020 - 18.12.2020
Время: 10:00-16:00
Локация: Онлайн
Длительность: 30 ч.
Тренер
Соколов Михаил
Специалист в области разработки и архитектуры ПО
39 900 руб.
11 200 грн.
В корзину
19.04.2021 - 23.04.2021
Время: 10:00-16:00
Локация: Онлайн
Длительность: 30 ч.
Тренер
Сонькин Владимир
Эксперт в области разработки ПО: Java и Web-технологии
39 900 руб.
11 200 грн.
В корзину
Не подходят даты, время или хотите заказать корпоративное обучение для команды?
+
Предложите свой вариант
Онлайн 39 900 руб.
11 200 грн.

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

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 *

Компания *

Телефон *

Город *

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