Java Developer. Advanced

Java под нагрузкой: JVM с профилированием и оптимизацией приложений в облаках

30 января 2025

Advanced

6 месяцев

Онлайн

Вт/Чт 20:00 Мск

Для кого этот курс?

Действующие Java-разработчики с опытом от 2-х лет, желающие углубить знания в устройстве JVM, принципах профилирования и оптимизации приложений в облачной инфраструктуре.

Необходимые знания

  • синтаксис Java, знание, понимание и применение принципов ООП
  • знание и опыт работы с Java Collection, maven, Docker
  • знание и опыт работы с потоками ввода/вывода (IO) и исполнения (Threads)
  • знание и опыт работы с Rest или gRPC или Kafka
  • знакомство с Reflection
Партнер курса
Росбанк

Что даст вам этот курс?

Вы сможете:

  • Обосновать выбор имплементации JVM. Изучить байткод, применить инструмент, меняющий байткод
  • Выбрать нужный GC под задачу. Получить дамп памяти
  • Анализировать heap работающего приложения. Найти утечку памяти. Ускорить загрузку приложения. Подключить агентов к JVM. Синхронизировать потоки с помощью объектов java.util.concurrent
  • Профилировать приложения, искать "горячие" места. Использовать фреймворки на основе неблокирующих IO
  • Использовать реактивный подход при обработке данных: Reactor
  • Настроить интеграцию приложения с Prometheus. Настроить интеграцию Prometheus & Grafana. Реализовать дашборд в Grafana.
  • Деплоить приложения в Kubernetes. Спроектировать модель метрик приложения: что, где и как фиксируем. Проработать модели логирования в сервисе. Обеспечить трассировку запросов
  • Спроектировать REST API одного сервиса: набор методов и DTO к ним. Описать сервис с помощью OpenAPI, Swagger. Описать сообщения на Protobuf
По окончании курса вы сможете

  • Реализовать проект с несколькими сервисами, развёрнутыми в Kubernetes с демонстрацией модели метрик на дашборде Grafana
  • Подать нагрузку на приложения, снять дамп памяти и описать его содержимое
  • Запустить профилирование приложения под нагрузкой

Процесс обучения

Обучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в Telegram, сдача домашних работ и получение обратной связи от преподавателя.

Вебинары проводятся 2 раза в неделю по 2 ак. часа и сохраняются в записи в личном кабинете. Вы можете посмотреть их в любое удобное для вас время.

В ходе обучения вы будете выполнять домашние задания. Каждое из них посвящено одному из компонентов вашего выпускного проекта.

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

Оптимальная нагрузка

Возможность совмещать учебу с работой

Портфолио

Индивидуальная разработка итоговой проектной работы 

Перспективы


Получите знания, которые помогут повысить вашу востребованность и доход

Карьерная поддержка

Многие студенты еще во время прохождения первой части программы находят или меняют работу, а к концу обучения могут претендовать на повышение в должности.

  • Получите помощь с оформлением резюме, портфолио и сопроводительного письма
  • Разместите свое резюме в базе OTUS и сможете получать приглашения на собеседования от партнеров

Java developer

Перспективы направления
Средний уровень зарплат:
70 000Junior+ специалист
200 000Middle+ специалист
320 000Senior специалист
1880
актуальных вакансий

Работодатели курса

Формат обучения

Интерактивные вебинары


2 занятия по 2 ак.часа в неделю. Доступ к записям и материалам остается навсегда

Обратная связь


Домашние задания с поддержкой и обратной связью наших преподавателей помогут освоить изучаемые технологии

Активное комьюнити


Чат в Telegram для общения преподавателей и студентов

Программа

Java Virtual Machine (JVM)

Модуль посвящён углубленному изучению возможностей JVM, разделов памяти, GC, байткода. Также будут изучены модульная система Java, введённая с Java 9 и инструменты, поставляемые в JDK.

Тема 1: Java 11 vs 17 vs 21. OpenJDK vs OracleJDK и другие имплементации

Тема 2: Byte code

Тема 3: Java Instrumentation & Java agent

Тема 4: Memory management. JVM memory structure // ДЗ

Тема 5: Memory management. Разбор алгоритмов GC: SerialGC, ParallelGC, CMS GC.

Тема 6: Memory management. Разбор алгоритмов GC: G1, ZGC

Тема 7: Memory dump // ДЗ

Тема 8: Off-heap

Тема 9: GraalVM // ДЗ

Тема 10: Модульная система Java // ДЗ

Тема 11: JDK tools // ДЗ

Тема 12: Сессия Q&A

Многопоточность и производительность

Модуль посвящён углубленному изучению возможностей Java по построению высокопроизводительного кода, возможностям по оптимизации и средствам диагностирования проблем с производительностью.

Тема 1: Разбор библиотеки Java Microbenchmark Harness // ДЗ

Тема 2: Разбор JMeter и организация нагрузочного тестирования // ДЗ

Тема 3: Java.util.concurrent. Atomics, ConcurrentHashMap, ConcurrentSkipListMap

Тема 4: Java.util.concurrent. Locks, ReadWriteLock, ReentrantLock

Тема 5: Java.util.concurrent. CountDownLatch, Semaphore, Phaser

Тема 6: Профилирование java приложений. Thread dump, JFR // ДЗ

Тема 7: Профилирование java приложений. Работа с jvisualvm & asyncProfiler // ДЗ

Тема 8: HotSpot JVM Performance Enhancement

Тема 9: Java NIO // ДЗ

Тема 10: Реактивное программирование: Reactor // ДЗ

Тема 11: Реактивное программирование: Профилирование приложения на Reactor

Тема 12: Сессия Q&A

Облачные технологии

Модуль посвящён технологиям построения облачных приложений и решению типовых задач, возникающих при реализации микросервисов.

Тема 1: Вспоминаем Docker // ДЗ

Тема 2: Введение в Kubernetes

Тема 3: Обзор Helm // ДЗ

Тема 4: Метрики

Тема 5: Prometheus & Grafana // ДЗ

Тема 6: Сквозное логирование в микросервисах

Тема 7: Проектирование и архитектура в разрезе микросервисов

Тема 8: Сессия Q&A

Протоколы взаимодействия

Модуль посвящён обзору протоколов взаимодействия, с точки зрения использвания в высоконагруженных приложения: лучшии практики по использованию протоколов при проектировании API и интеграций.

Тема 1: Rest: Swagger, OpenAPI // ДЗ

Тема 2: Protobuf, gRPC // ДЗ

Тема 3: Kafka

Тема 4: Балансировка нагрузки: назначение и конфигурация

Тема 5: Шаблоны проектирования отказоустойчивого сервиса // ДЗ

Тема 6: Выполнение задач по расписанию в Java

Тема 7: Примеры ошибок в коде на Java и как их обнаружить на Code Review

Тема 8: Сессия Q&A

Проектная работа

Тема 1: Выбор темы и организация проектной работы

Тема 2: Консультация по проектам и домашним заданиям

Тема 3: Защита проектных работ

Также вы можете получить полную программу, чтобы убедиться, что обучение вам подходит

Проектная работа


Каждый курс завершается финальным проектом, который предстоит защитить перед преподавателями и командой. Вам будет, что обсудить на собеседовании!

Вы можете выбрать одну из предложенных преподавателем тем или реализовать свою идею.

Преподаватели

Руководитель курса

Александр Царев

Tech Lead

Сбер

Олег Соколов

Алексей Салаев

Главный эксперт (ИТ лид)

ПАО «Росбанк»

Андрей Зарубин

Руководитель направления разработки платёжных систем и сервисов банка

Райффайзенбанк

Илья Минюхин

Ведущий разработчик

Сбер

Кирилл Данилов

ведущий разработчик

МТС Digital

Валерий Руднов

Senior Java Developer, Tech Lead

Сбер

Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания

Ближайшие мероприятия

Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.

Контейнеризация Java-приложений с Docker
Александр Царев
Приглашаем вас на открытый урок, посвященный основам контейнеризации Java-приложений с использованием Docker. В современной промышленной разработке бизнес-приложения всё чаще запускаются в облачных средах, и умение работать с Docker-контейнерами становится неотъемлемой частью работы Java-разработчика. На занятии мы разберем основные аспекты контейнеризации: от создания контейнеров до их использования для тестирования и профилирования приложений.

Программа урока:
- Что такое Docker-контейнер и зачем он нужен разработчику?
- Как развернуть и запустить Java-приложение в Docker-контейнере?
- Основы профилирования и отладки приложений внутри Docker-контейнера.

Урок будет полезен тем, кто хочет:
- Освоить навыки работы с Docker-контейнерами.
- Узнать, как контейнеризация помогает в разработке и развертывании приложений.
- Получить практические знания по запуску, тестированию и профилированию Java-приложений в Docker.

В результате урока вы:
- Научитесь запускать Java-приложения в Docker-контейнерах на своей машине.
- Узнаете, как тестировать приложения в контейнерной среде под нагрузкой.
- Поймете, как профилировать и отлаживать приложения внутри Docker-контейнеров.
...
27 декабря в 17:00
Открытый вебинар
Введение в NIO2
Александр Царев
Приглашаем вас на открытый урок, посвященный основам работы с NIO2 в Java. В современной разработке программного обеспечения асинхронная парадигма всё чаще используется для повышения пропускной способности приложений. NIO2 является неотъемлемой частью стека Java, обеспечивая мощный функционал для асинхронного программирования. На занятии мы разберем, что такое NIO и NIO2, а также выясним, какую роль они играют в современных Java-приложениях.

Программа урока:
- Что такое NIO и NIO2: отличия и ключевые особенности.
- Роль NIO2 в асинхронном программировании.
- Практическое применение: как написать простейшее приложение с использованием NIO2.

Урок будет полезен тем, кто хочет:
- Понять, что такое NIO2 и зачем он нужен в Java-разработке.
- Разобраться в основах асинхронного программирования.
- Узнать, как использовать NIO2 для повышения производительности приложений.

В результате урока вы:
- Сможете написать простейшие приложения с использованием NIO2.
- Поймете знания, которые помогут правильно использовать NIO2 в своих проектах.
...
20 января в 17:00
Открытый вебинар
Альтернативные фреймворки Spring Framework
Валерий Руднов
Приглашаем вас на открытый урок, посвященный изучению альтернативных фреймворков для разработки приложений на Java. Spring Framework занимает лидирующие позиции в экосистеме Java, но на рынке существуют и другие фреймворки, которые можно использовать для решения различных задач. На занятии мы разберем, почему Spring столь популярен, почему появились альтернативные решения, и познакомимся с такими фреймворками, как Quarkus, Micronaut и Helidon.

Программа урока:
- Почему Spring Framework занимает лидирующие позиции в разработке.
- Причины появления альтернативных фреймворков.
- Обзор Quarkus: основные особенности и возможности.
- Обзор Micronaut: ключевые преимущества и использование.
- Обзор Helidon: применение в современных проектах.

Урок будет полезен тем, кто хочет:
- Понять, какие альтернативы Spring существуют и в чем их преимущества.
- Узнать, в каких случаях лучше использовать Quarkus, Micronaut или Helidon.
- Оценить, какой фреймворк подойдет для их текущих и будущих проектов.

В результате урока вы:
- Поймете, в каких ситуациях можно применять альтернативные фреймворки.
- Узнаете, как выбрать подходящий фреймворк для своего проекта.
- Получите общее представление о возможностях Quarkus, Micronaut и Helidon.
...
27 января в 17:00
Открытый вебинар

Прошедшие
мероприятия

Александр Царев
Открытый вебинар
Знакомство с виртуальными потоками Java
Валерий Руднов
Открытый вебинар
Введение в GraalVM: ускоряем ваши Java-приложения
Для доступа ко всем прошедшим мероприятиям необходимо пройти входное тестирование
Возможность пройти вступительное тестирование повторно появится только через 3 дня
Результаты тестирования будут отправлены вам на email, указанный при регистрации.
Тест рассчитан на 30 минут, после начала тестирования отложить тестирование не получится!

Корпоративное обучение для ваших сотрудников

OTUS помогает развивать высокотехнологичные команды. Почему нам удаётся это делать успешно:
  • Курсы OTUS верифицированы крупными игроками ИТ-рынка и предлагают инструменты и практики, актуальные на данный момент
  • Студенты работают в группах, могут получить консультации не только преподавателей, но и профессионального сообщества
  • OTUS проверяет знания студентов перед стартом обучения и после его завершения
  • Простой и удобный личный кабинет компании, в котором можно видеть статистику по обучению сотрудников
  • Сертификат нашего выпускника за 5 лет стал гарантом качества знаний в обществе
  • OTUS создал в IT более 120 курсов по 7 направлениям, линейка которых расширяется по 40-50 курсов в год

Сертификат о прохождении курса

OTUS осуществляет лицензированную образовательную деятельность.

Вы получите сертификат о прохождении обучения, а также можете получить удостоверение о повышении квалификации.

После обучения вы:

  • Удостоверение о повышении квалификации: если вы успешно защитили выпускной проект и готовы предоставить копию документа о высшем или среднем профессиональном образовании

  • Доступ к учебным материалам курса

  • Ваш личный проект, который поможет проходить собеседования

Частые вопросы

Почему OTUS?
Мы обучаем IT-сотрудников уже 6 лет, через OTUS прошли 20 000 студентов. Специализируемся на программах для людей с опытом, а ещё – быстро переформатируем учебные программы под изменения в сфере информационных технологий.
Обязательно ли выполнять и защищать выпускной проект?
Для получения сертификата OTUS и УПК (удостоверение повышения квалификации государственного образца) необходимо сдать проект. Кроме того, проект необязательно защищать перед аудиторией, а можно сдать в чате с преподавателем. Для получения УПК также понадобится предъявить документ об образовании.
Обязательно ли выполнять все домашние задания?
Да, если хотите хорошо отточить навыки. На курсе будут практические домашние задания, их выполнение занимает примерно 2-3 часа.
Помогаете ли вы с трудоустройством после курса?
В Otus Club проводятся вебинары на тему трудоустройства, разбор резюме, прохождения собеседований, особенности реферальных программ при найме. Также обратим ваше внимание, что преподаватели курса занимают ведущие позиции в разных компаниях. Будьте активны, выполняйте домашние задания, стройте network с сокурсниками и преподавателями, и вам будет проще найти работу, расширив свои контакты.
Смогу ли я совмещать учебу с работой?
Да. Программа курса рассчитана на студентов, у которых мало времени. Лекции проводим дважды в неделю, домашние задания — не чаще 1 раза в неделю.
Что, если в середине курса я не смогу продолжать обучение?
Вы можете бесплатно перейти в другую группу. Но только один раз.
Я могу вернуть деньги?
Да, мы можем вернуть деньги за то время курса, которое вы ещё не успели отучиться. Например, если курс длится пять месяцев, а вы отучились один, мы вернём деньги за оставшиеся четыре месяца.
Может ли мой работодатель оплатить курс?
Да. Когда свяжетесь с нашим менеджером, уточните, что оплачивать курс будет ваш работодатель.
Остались вопросы?
Оставляйте заявку и задавайте вопросы менеджеру, команда курса с ним на связи и постарается дать вам исчерпывающую информацию.