Java Advanced I: функциональное, асинхронное и реактивное программирование
Курс посвящен современным функциональным, асинхронным и реактивным подходам к разработке на Java, и включает изучение NIO2, CompletableFuture, RxJava, Reactor, R2DBC, SSE, Spring Data reactive, WebClient, reactive WebSocket, RSocket.
36 ак.ч.
Онлайн
JVA-074
Java Advanced I: функциональное, асинхронное и реактивное программирование
Записаться на курс
Длительность
36 ак.ч.
Локация
Онлайн
Код
JVA-074
Расписание и цены
18.11.2024 - 03.12.2024
10.02.2025 - 20.02.2025
63 900 руб.
* Для физических лиц действует скидка 10% Закажите корпоративное обучение с учетом ваших потребностей
Java Advanced I: функциональное, асинхронное и реактивное программирование
Записаться на курс
Длительность
36 ак.ч.
Локация
Онлайн
Код
JVA-074
Расписание и цены
18.11.2024 - 03.12.2024
10.02.2025 - 20.02.2025
63 900 руб.
* Для физических лиц действует скидка 10% Закажите корпоративное обучение с учетом ваших потребностей

Описание

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

Цели

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

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

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

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

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

Разбираемые темы

  • Модуль 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 часа).
  • Развернуть программу
Раcписание курсов
Вид:
18.11.2024 - 03.12.2024
17:00-20:00
Локация:Онлайн
Длительность:36 ак.ч.
Время:17:00-20:00
63 900 руб.
Записаться
10.02.2025 - 20.02.2025
10:00-14:00
Локация:Онлайн
Длительность:36 ак.ч.
Время:10:00-14:00
63 900 руб.
Записаться
Смотреть полное расписание
Тренеры
Кузнецов Николай
Java-разработчик

Николай — Java-разработчик в компании АО «Синхро» (проект «Столото» ex СБЕР). Обладает опытом разработки высоконагруженных систем более 5 лет. Автор ряда научных публикаций в области распределённых и децентрализованных систем.

Проекты:

  • Архитектура 2.0 проекта «Столото» — переход от распределённого монолита к микросервисам по модели DDD.

  • База знаний Сбербанка Knowledge Assistant — разработка бэкенд-части системы взаимодействия операторов колл-центров с системой хранения знаний.

  • Печатный модуль для автоматизации печатных форм — разработка и поддержка.

  • Генератор новостных дайджестов для ООО «Медиа-Сервис» — разработка на PHP.

  • Разработка парсера для ООО «Медиа-Сервис» — разработка на PHP.

  • Серверная часть системы автоматизации документооборота групп для Учебно-курсового комбината «Мосгортранс» — разработка на yii2.

Сертификаты:
  • 98-366:MTA: Networking Fundamentals
  • 98-388:MTA: Introduction to Programming using Java CertiportId:90057035

Судакевич Игорь
Эксперт в области разработки ПО (Java). Master of Computer & Information Technology (Univ.of Pennsylvania)
Игорь — преподаватель-практик по программированию на языке Java, сертифицированный Java-разработчик, уполномоченный инструктор корпорации «Оракл», инструктор платформы Udemy, Java-методист c 15-летним опытом, консультант-репетитор по Java-сертификации.

Игорь начал карьеру как физик-экспериментатор, разрабатывая аппаратное и программное обеспечение для одного из самых первых в СССР сканирующих туннельных микроскопов в сфере, которая через 20 лет получила название «нанотехнология».

Один из экспертов-разработчиков проекта Java-сертификации под эгидой IBS.

Лауреат конкурса молодых ученых в области физики твердого тела (Япония, 1990).

Проекты:

  • разрабатывал аппаратное и программное обеспечение для одного из самых первых в СССР сканирующих туннельных микроскопов в сфере, через 20 лет получившей название «нанотехнология»

  • 15 лет работал в Токио (Токийский технологический институт, затем Институт статистики ООН), где занимался внедрением технологий автоматической обработки больших массивов данных, в том числе на frontend- и backend-приложениях

  • 6 лет работал инженером-разработчиком в Pioneer Co. в Токио.


Отзывы (7)
Тренинг мне очень понравился, узнал много нового для себя. Самым полезным лично для меня были модули про WebFlux, RxJava и ExecutorService, информация о том, что такое реактивное программирование, дополнительные материалы и практические задания. Комплексная подача материала, видно, как все связано. Думаю, что этот тренинг будет особенно полезен для тех, что хочется углубить свои знания.
Участник тренинга
Курс был весьма познавательным и интересным. Не думал, что в современной Java такие возможности. Понравилось, что нам дали возможность углубиться под капот реализаций, что был акцент на практическом применении изучаемых технологий и много примеров. Отдельное спасибо преподавателю за его компетентность и подробное изложение материала. Буду рекомендовать знакомым Luxoft.
Участник тренинга
Я изучил новые предметы и получил возможность применять их в упражнениях, предоставленных тренером. У меня была возможность вернуться к некоторым темам Java, о которых я знал, но не работал с ними, поэтому курс лучше изучить теорию и вспомнить, как ее использовать. Было много примеров, все могли задать вопросы.
Участник тренинга
Для меня самыми полезными были упражнения, посвященные каждому разделу курса и с большинством из предложенных кейсов я еще ни разу не сталкивался на работе. Понравилось, что нам разрешили сначала самостоятельно попробовать выполнить упражнения, чтобы проверить, не сломаем ли мы их 😊
Участник тренинга
Замечательный курс! Преподаватель действительно очень хороший, доходчиво объясняет, отвечает на все вопросы, видно, что очень опытный разработчик в прошлом. Впечатлила его способность объяснять материал разносторонне, четко и доступно. Спасибо ему за это!
Участник тренинга
Много интересной информации, полезные примеры кода с пояснениями, хотя некоторые вещи были бы понятнее, будь у меня больше опыта в теме обучения. Преподаватель очень хорошо разбирается в теме, было видно, что он практикующий разработчик. Понравилось, что между тренером и учебной группой наладилась хорошая связь и мы обменивались опытом.
Участник тренинга
Полезный курс, который помогает лучше понять Java. Тренер подробно объяснял информацию, приводил примеры и каждое занятие начинал с повторения предыдущего. Это все помогло быстрее запомнить информацию, особенно для тех, кто уже отвык учиться 😊 очень хорошо, что нам присылали презентации и проекты после каждого занятия, чтобы можно было их просмотреть и подготовиться к следующей встречи.
Участник тренинга
Показать все отзывы
Связанные курсы
Java Advanced II: высокопроизводительная Java
Курс посвящен повышению производительности Java-приложений: выявлению узких мест, подходам и методам для повышению производительности, а также инструментам и библиотекам, позволяющим добиться высокой производительности.
Онлайн:
05.12.2024 - 13.12.2024
Смотреть каталог
Ваши преимущества
Экспертность
Тренеры-эксперты из реальных проектов крупнейших компаний, лидеров в своей отрасли
Живое обучение
“Живая” коммуникация с тренером даже в онлайн-формате
Практика
Максимально наполненные практикой занятия, работа в группах, выполнение домашних заданий
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.