Java Advanced II: высокопроизводительная Java
Длительность
40 ак.ч.
Локация
Онлайн
Код
JVA-076
05.12.2024 - 13.12.2024
03.03.2025 - 24.03.2025
69 900 руб.
* Для физических лиц действует скидка 10% Закажите корпоративное обучение с учетом ваших потребностей
Описание
Курс посвящен повышению производительности Java-приложений. В курсе рассматриваются различные подходы к профилированию, поиску узких мест, тюнингу виртуальной машины, настройки флагов JVM, библиотеки сериализации и кэширования, хранение данных вне кучи, бенчмаркинг, мониторинг и настройка памяти, и другие темы.После прохождения курса выдается
удостоверение о повышении квалификации государственного образца
удостоверение о повышении квалификации государственного образца
Цели
Познакомить слушателей с современными подходами к повышению производительности Java приложений.
Целевая аудитория
Разработчики Java, архитекторы Java.
Предварительная подготовка
Уверенное владение Java.
Разбираемые темы
-
Модуль 1. Обзор тюнинга производительности (теория - 3 ч. + практика - 3 ч.)
- Общие практики;
- Стратегии тюнинга производительности;
- Метрики производительности;
- Как повысить производительность?
- Инструменты для измерения производительности;
- JMeter;
- Нагрузочное тестирование с помощью JMeter;
- Как повысить производительность с помощью архитектуры?
- Повышение производительности с помощью архитектуры: потоки, очереди, микросервисы, облака;
- Лучшие практики для улучшения производительности кода.
-
Модуль 2. Алгоритмы GC (теория - 6 ч.)
- Использование памяти Java-объектами;
- Общие подходы и алгоритмы сборщиков мусора;
- Сборщик мусора Serial GC;
- Сборщик мусора Parallel GC;
- Сборщик мусора CMS;
- Сборщик мусора G1;
- Сборщик мусора Shenandoah;
- Тюнинг сборщиков мусора;
- Инструменты сбора и анализа метрик о сборке мусора;
- Выбор оптимального сборщика мусора.
-
Модуль 3. JIT-компилятор HotSpot (практика - 3 ч. + теория - 2 ч.)
- JIT компиляция;
- Java байт-код;
- Многослойная компиляция;
- Кэш кода и его тюнинг;
- Оптимизация кода;
- Деоптимизация кода и когда она происходит;
- Инструмент JITWatch для анализа результатов компиляции;
- Виды оптимизаций;
- Спекулятивные оптимизации;
- Настройка компилятора;
- AOT компиляция;
- GraalVM.
-
Модуль 4. Флаги JVM (теория - 3 ч.)
- Назначение и категории флагов JVM;
- Общие флаги;
- Флаги, связанные со строками;
- Флаги управления памятью;
- Safepoints и флаги, связанные с ними;
- TLAB и флаги, связанные с ними;
- План тюнинга JVM.
-
Модуль 5. Тестирование производительности алгоритмов (benchmarking) с помощью JMH (практика - 2 ч.)
- Что такое benchmarking;
- Знакомство с JMH;
- API JMH;
- Нетривиальные примеры;
- Применение JMH на практике.
- Домашняя работа (2 ч).
-
Модуль 6. Использование памяти вне кучи (off-heap memory) и эффективные структуры данных (теория - 2 ч. + практика 2 ч.)
- Что такое sun.misc.Unsafe;
- Методы Unsafe;
- Производительность нативной памяти;
- Создание структур данных в нативной памяти;
- Оценка производительности нативной памяти и сравнение с памятью в куче;
- Примитивные коллекции;
- Денормализация данных;
- Перспективный Foreign Memory Access API.
-
Модуль 7. Сериализация и сетевая структура (теория - 3 ч.)
- Сериализаторы JSON (GSON, Jackson);
- Двоичные сериализаторы (Protobuf, Jackson Smile, Kryo, FST, One NIO);
- Сравнение производительности различных сериализаторов;
- Производительность сети при подключении через различные протоколы: HTTP/REST, TCP, Async TCP, RSocket, Netty server/client.
-
Модуль 8. Профилирование Java (теория - 3 ч. + практика - 2 ч.)
- Когда и как делать профилирование?
- Сэмплирующие и инструментирующие профайлеры;
- Использование Java VisualVM для профилирования;
- Профилирование с помощью Spring AOP;
- Профилирование с помощью IDEA и async profiler;
- Java Flight Recorder;
- Анализ логов Java Flight Recorder с помощью Mission Conrol;
- Создание и логгирование кастомных событий JFR ;
- Использование Java агентов для внедрения в код и записи любых событий в Java Flight Recorder;
- Написание программ для автоматического анализа логов JFR;
- Сбор и анализ SQL запросов с помощью JFR;
- Сбор и анализ REST запросов с помощью JFR;
- Средства управления производительностью приложений;
- Использование Glowroot для профилирования и анализа SQL-запросов и REST-запросов.
-
Модуль 9. Мониторинг и анализ данных кучи. Утечки памяти (теория - 3 ч.)
- Инструменты для анализа динамической памяти;
- Признаки утечек памяти;
- Основные причины утечек памяти;
- Поиск и обнаружение утечек памяти;
- Слабые и фантомные ссылки;
- Инструменты IDEA для анализа дампов кучи;
- Асинхронный профайлер для анализа потребления памяти;
- Использование числа генераций профайлера VisualVM для обнаружения утечек памяти;
- Использование MissionControl/JFR для автоматического анализа утечек памяти;
- Анализатор памяти Eclipse – анализ знаменателей и кучи.
-
Модуль 10. Кэширование в приложениях Java (теория - 3 ч.)
- Шаблоны кеширования;
- Кеширование HTTP запросов;
- Конфигурация библиотек кеширования;
- Популярные библиотеки кэширования: EhCache, Caffeine;
- Кеширование сервисного уровня;
- Кеширование Spring сервисов;
- Буферизация ввода/вывода;
- Кэш процессора и непрерывная область памяти;
- Кэширование JPA/Hibernate;
- Приложения, использующие кэши разных уровней.
Раcписание курсов
Вид:
Тренеры
Судакевич Игорь
Эксперт в области разработки ПО (Java). Master of Computer & Information Technology (Univ.of Pennsylvania)
Игорь — преподаватель-практик по программированию на языке Java, сертифицированный Java-разработчик, уполномоченный инструктор корпорации «Оракл», инструктор платформы Udemy, Java-методист c 15-летним опытом, консультант-репетитор по Java-сертификации.
Игорь начал карьеру как физик-экспериментатор, разрабатывая аппаратное и программное обеспечение для одного из самых первых в СССР сканирующих туннельных микроскопов в сфере, которая через 20 лет получила название «нанотехнология».
Один из экспертов-разработчиков проекта Java-сертификации под эгидой IBS.
Лауреат конкурса молодых ученых в области физики твердого тела (Япония, 1990).
Проекты:
Игорь — преподаватель-практик по программированию на языке Java, сертифицированный Java-разработчик, уполномоченный инструктор корпорации «Оракл», инструктор платформы Udemy, Java-методист c 15-летним опытом, консультант-репетитор по Java-сертификации.
Игорь начал карьеру как физик-экспериментатор, разрабатывая аппаратное и программное обеспечение для одного из самых первых в СССР сканирующих туннельных микроскопов в сфере, которая через 20 лет получила название «нанотехнология».
Один из экспертов-разработчиков проекта Java-сертификации под эгидой IBS.
Лауреат конкурса молодых ученых в области физики твердого тела (Япония, 1990).
Проекты:
-
разрабатывал аппаратное и программное обеспечение для одного из самых первых в СССР сканирующих туннельных микроскопов в сфере, через 20 лет получившей название «нанотехнология»
-
15 лет работал в Токио (Токийский технологический институт, затем Институт статистики ООН), где занимался внедрением технологий автоматической обработки больших массивов данных, в том числе на frontend- и backend-приложениях
-
6 лет работал инженером-разработчиком в Pioneer Co. в Токио.
Соколов Михаил
Эксперт в области разработки и архитектуры ПО
Михаил работает в области разработки ПО уровня Enterprise с 2004 года. С 2010 года Михаил работает в компании Luxoft. За это время участвовал в нескольких проектах для крупной американской авиастроительной компании в различных ролях от разработчика до архитектора. Михаил интересуется технологиями создания масштабируемых, высокопроизводительных, распределенных приложений, а также функциональными языками программирования.
Также у Михаила большой преподавательский опыт. Он разрабатывал учебные материалы, проводил семинары, пракитческие занятия и экзамены в ОмГУ на темы: СУБД, защита СУБД, криптографические методы защиты информации.
Михаил работает в области разработки ПО уровня Enterprise с 2004 года. С 2010 года Михаил работает в компании Luxoft. За это время участвовал в нескольких проектах для крупной американской авиастроительной компании в различных ролях от разработчика до архитектора. Михаил интересуется технологиями создания масштабируемых, высокопроизводительных, распределенных приложений, а также функциональными языками программирования.
О проектах:
В рамках своих проектов Михаил работал в компании "ЭТИС"и Luxoft, где занимался java/web-разработкой, архитектурой и pl/sq.Также у Михаила большой преподавательский опыт. Он разрабатывал учебные материалы, проводил семинары, пракитческие занятия и экзамены в ОмГУ на темы: СУБД, защита СУБД, криптографические методы защиты информации.
Публикации в СМИ
Отзывы (4)
Хорошее комплексное обучение. Я узнал много нового о внутренней настройке и оптимизации java, Luxoft молодцы, спасибо вам и спасибо Владимиру Сонькину. Отличные материалы, примеры и образцы кода, обзоры и задания. Мне понравились повторения пройденного материала каждый день, я думаю, что это действительно полезно и вовлекает аудиторию.
Хорошие впечатления. Дан большой объем знаний. Повторение пройденного материала на занятиях полезно. Самое полезное для меня: сравнение GC и советы по настройке JDK. Единственное, хотелось бы добавить дополнительные сравнительные тесты между JIT (C2) и Graal. А так все замечательно!
Теоретические материалы – отличные. Понравилась демонстрация того, как нужно использовать инструменты для сравнительного анализа, интересные факты о внутренностях jvm и обзор полезных инструментов. Этот тренинг помог мне лучше понять, что нужно делать для устранения проблем с производительностью.
Тренинг оказался для меня крайне интересным. Все части курса были очень информативны и полезны с точки зрения их дальнейшего использования в профессиональной деятельности.
Связанные курсы
Java Advanced I: функциональное, асинхронное и реактивное программирование
Курс посвящен современным функциональным, асинхронным и реактивным подходам к разработке на Java, и включает изучение NIO2, CompletableFuture, RxJava, Reactor, R2DBC, SSE, Spring Data reactive, WebClient, reactive WebSocket, RSocket.
Онлайн:
10.02.2025 - 20.02.2025