Ко всем курсам Event-менеджмент Excel и Google Таблицы MBA PR-менеджмент Аналитика для руководителей Антикризисный менеджмент Арт-менеджмент Бухгалтерский учет Геймификация Деловые переговоры и коммуникация Документационное обеспечение Закупки и тендеры Кадровое делопроизводство и охрана труда Клиентский сервис Комьюнити-менеджмент Консалтинг Коучинг Курсы для директоров Маркетплейсы и e-commerce Менеджмент в индустрии моды Менеджмент в образовании Музыкальный менеджмент Нетворкинг Операционный менеджмент Открытие бизнеса Подбор и управление персоналом Продакт-менеджмент Разработка онлайн-курсов Рекрутмент Ресторанный менеджмент Создание презентаций Спортивный менеджмент Строительство и недвижимость Тимбилдинг Управление бизнесом Управление командами Управление продажами Управление проектами Управление производством Управление разработкой и IT Финансовый менеджмент

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

Вы научитесь

Программист на Java занимается разработкой ПО. Участие в данном курсе позволит вам приобрести экспертные знания в области языка программирования, опыт работы с фреймворками и библиотеками Java, навыки взаимодействия с базами данных, понимание HTML, CSS, JavaScript, а также практический опыт работы с веб-серверами и клиент-серверной архитектурой.Вы освоите принципы объектно-ориентированного программирования, узнаете, как работать с интеграционными и тестировочными инструментами (Maven, JUnit, Jenkins), сможете наработать себе профессиональное портфолио и практиковаться.
Тип курса
Онлайн
Тип обучения
Курс
Локация
Длительность
6 месяцев
Стоимость
115500 ₽
Помощь в трудоустройстве
Да
Выдача сертификата
Да
Вы научитесь
#01
Выбрать нужный GC под задачу
#02
Обосновать выбор имплементации JVM
#03
Анализировать heap работающего приложения
#04
Профилировать приложения
#05
искать "горячие" места
#06
Использовать реактивный подход при обработке данных
Программа курса

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

Java Virtual Machine (JVM)

В данной теме вы узнаете о различиях между разными версиями Java (11, 17, 21), а также о различиях между OpenJDK и OracleJDK. Будет рассмотрено, как выбрать подходящую версию для вашего проекта.  Здесь вы погрузитесь в мир байткода: промежуточного кода, который генерируется компилятором и выполняется виртуальной машиной Java (JVM). Вы узнаете, как проверять и оптимизировать байткод. Instrumentation позволяет встраивать агентов в приложения для мониторинга и изменения их поведения. Вы узнаете, как использовать Instrumentation и Agent для различных целей, например, профилирования приложений. Здесь рассматривается управление памятью в Java Virtual Machine (JVM). Вы изучите структуру в JVM и различные типы, такие как heap и stack. Вы исследуете различные алгоритмы сборки мусора (Garbage Collection) в JVM, такие как SerialGC, ParallelGC и CMS GC. Вы узнаете, как они работают и как выбрать подходящий алгоритм для вашего приложения. Вы продолжите изучение алгоритмов сборки мусора в JVM, сосредотачиваясь на алгоритмах G1 и ZGC. Вы узнаете их особенности и сравните их с другими алгоритмами GC. Вы узнаете, как создавать и анализировать дампы памяти (Memory Dumps) в JVM, чтобы выявлять утечки и другие проблемы производительности. Вы разберётесь, в чём заключается использование off-heap, что позволяет обойти ограничения heap и улучшить производительность приложения. Вы пройдёте разбор Class Data Sharing (CDS), технологии в JDK, которая позволяет уменьшить время запуска приложения и использование за счет предварительной загрузки и кэширования классов. Вы узнаете о модульной системе (Project Jigsaw), которая позволяет разделять приложения на модули и управлять зависимостями между ними. Вы погрузитесь в использование различных инструментов JDK, таких как jconsole, jvisualvm, jmc и другие, для мониторинга и отладки приложений. На последнем занятии будет организована сессия вопросов и ответов, где вы сможете задать все интересующие вас вопросы и уточнения по изученным темам.

В данной теме вы узнаете о различиях между разными версиями Java (11, 17, 21), а также о различиях между OpenJDK и OracleJDK. Будет рассмотрено, как выбрать подходящую версию для вашего проекта.

 Здесь вы погрузитесь в мир байткода: промежуточного кода, который генерируется компилятором и выполняется виртуальной машиной Java (JVM). Вы узнаете, как проверять и оптимизировать байткод.

Instrumentation позволяет встраивать агентов в приложения для мониторинга и изменения их поведения. Вы узнаете, как использовать Instrumentation и Agent для различных целей, например, профилирования приложений.

Здесь рассматривается управление памятью в Java Virtual Machine (JVM). Вы изучите структуру в JVM и различные типы, такие как heap и stack.

Вы исследуете различные алгоритмы сборки мусора (Garbage Collection) в JVM, такие как SerialGC, ParallelGC и CMS GC. Вы узнаете, как они работают и как выбрать подходящий алгоритм для вашего приложения.

Вы продолжите изучение алгоритмов сборки мусора в JVM, сосредотачиваясь на алгоритмах G1 и ZGC. Вы узнаете их особенности и сравните их с другими алгоритмами GC.

Вы узнаете, как создавать и анализировать дампы памяти (Memory Dumps) в JVM, чтобы выявлять утечки и другие проблемы производительности.

Вы разберётесь, в чём заключается использование off-heap, что позволяет обойти ограничения heap и улучшить производительность приложения.

Вы пройдёте разбор Class Data Sharing (CDS), технологии в JDK, которая позволяет уменьшить время запуска приложения и использование за счет предварительной загрузки и кэширования классов.

Вы узнаете о модульной системе (Project Jigsaw), которая позволяет разделять приложения на модули и управлять зависимостями между ними.

Вы погрузитесь в использование различных инструментов JDK, таких как jconsole, jvisualvm, jmc и другие, для мониторинга и отладки приложений.

На последнем занятии будет организована сессия вопросов и ответов, где вы сможете задать все интересующие вас вопросы и уточнения по изученным темам.

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

Вы узнаете о библиотеке Microbenchmark Harness, которая позволяет проводить микробенчмаркинг и измерять производительность кода. Вы выполните практическое задание по работе с этой библиотекой. Вы изучите инструмент JMeter и научитесь организовывать нагрузочное тестирование. Вы выполните задание по созданию тестовых сценариев и анализу результатов. В этой теме будет рассмотрено использование различных классов из пакета, таких как Atomics, HashMap и SkipListMap, для обеспечения потокобезопасности в приложениях. Здесь будет углубленное изучение темы с блокировками посредством классов Locks, ReadWriteLock и ReentrantLock из пакета java.util.concurrent. Вы узнаете, как правильно использовать и управлять блокировками в многопоточных средах. В теме будет рассмотрены различные механизмы синхронизации и координации потоков из пакета, такие как CountDownLatch, Semaphore и Phaser. Вы узнаете, как использовать их для организации совместной работы потоков. Здесь будет изучено профилирование приложений с использованием инструментов Thread dump и Flight Recorder (JFR). Вы выполните задание по анализу производительности. В этой теме вы продолжите изучение, работая с инструментами jvisualvm и asyncProfiler. Вы выполните задание по анализу и оптимизации. В данной теме будет рассмотрено как улучшить производительность на HotSpot JVM путем оптимизации кода, настройки JVM и других методов. Вы узнаете о советах и лучших практиках по повышению производительности. Здесь вы узнаете о NIO (New Input/Output), альтернативном и более эффективном подходе к работе с сетевыми операциями.  В этой теме будет рассмотрено реактивное программирование с использованием библиотеки Reactor. Вы изучите основные концепции и принципы реактивного программирования и выполните задание по работе с Reactor. Здесь вы узнаете о методах оптимизации производительности, написанных с использованием реактивного программирования на библиотеке Reactor. На последнем занятии будет проведена сессия вопросов и ответов, где вы сможете задать любые вопросы по изученным темам и уточнить неясности.

Вы узнаете о библиотеке Microbenchmark Harness, которая позволяет проводить микробенчмаркинг и измерять производительность кода. Вы выполните практическое задание по работе с этой библиотекой.

Вы изучите инструмент JMeter и научитесь организовывать нагрузочное тестирование. Вы выполните задание по созданию тестовых сценариев и анализу результатов.

В этой теме будет рассмотрено использование различных классов из пакета, таких как Atomics, HashMap и SkipListMap, для обеспечения потокобезопасности в приложениях.

Здесь будет углубленное изучение темы с блокировками посредством классов Locks, ReadWriteLock и ReentrantLock из пакета java.util.concurrent. Вы узнаете, как правильно использовать и управлять блокировками в многопоточных средах.

В теме будет рассмотрены различные механизмы синхронизации и координации потоков из пакета, такие как CountDownLatch, Semaphore и Phaser. Вы узнаете, как использовать их для организации совместной работы потоков.

Здесь будет изучено профилирование приложений с использованием инструментов Thread dump и Flight Recorder (JFR). Вы выполните задание по анализу производительности.

В этой теме вы продолжите изучение, работая с инструментами jvisualvm и asyncProfiler. Вы выполните задание по анализу и оптимизации.

В данной теме будет рассмотрено как улучшить производительность на HotSpot JVM путем оптимизации кода, настройки JVM и других методов. Вы узнаете о советах и лучших практиках по повышению производительности.

Здесь вы узнаете о NIO (New Input/Output), альтернативном и более эффективном подходе к работе с сетевыми операциями. 

В этой теме будет рассмотрено реактивное программирование с использованием библиотеки Reactor. Вы изучите основные концепции и принципы реактивного программирования и выполните задание по работе с Reactor.

Здесь вы узнаете о методах оптимизации производительности, написанных с использованием реактивного программирования на библиотеке Reactor.

На последнем занятии будет проведена сессия вопросов и ответов, где вы сможете задать любые вопросы по изученным темам и уточнить неясности.

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

В данной теме вы вспомните основные понятия и возможности Docker, такие как контейнеризация, создание образов, работа с контейнерами, сети и томами данных. Выполним практическое задание по работе с Docker. Здесь вы погрузитесь в мир Kubernetes и изучим основные концепции, такие как поды, сервисы, неймспейсы, деплойменты и многое другое. Вы узнаете, как использовать Kubernetes для оркестрации и управления контейнеризированными приложениями. В этой теме рассмотрите инструмент Helm, который позволяет управлять установкой, обновлением и удалением приложений в Kubernetes с помощью шаблонов. Вы выполните практическое задание по созданию и установке Helm-чартов. Здесь вы изучите важность сбора и анализа метрик в микросервисной архитектуре. Вы узнаете о различных типах метрик, их сборе, агрегации и визуализации для мониторинга и оптимизации работы приложений. Вы погрузитесь в инструменты мониторинга Prometheus и визуализации Grafana. Вы научитесь настраивать сбор метрик с помощью Prometheus, а также создавать красивые дашборды для мониторинга с Grafana. Вы рассмотрите концепцию сквозного логирования (distributed tracing) в микросервисных приложениях и изучим инструменты, такие как OpenTracing, Jaeger и Zipkin, для мониторинга и анализа логов. Вы обсудите основные принципы проектирования и архитектуры микросервисов, такие как декомпозиция, границы контекста, коммуникация и многое другое. Вы узнаете, как разрабатывать масштабируемые и устойчивые микросервисные системы. Вы поучаствуете в сессии вопросов и ответов, где вы сможете задать любые вопросы по изученным темам о микросервисах и получить подробные ответы от преподавателя.

В данной теме вы вспомните основные понятия и возможности Docker, такие как контейнеризация, создание образов, работа с контейнерами, сети и томами данных. Выполним практическое задание по работе с Docker.

Здесь вы погрузитесь в мир Kubernetes и изучим основные концепции, такие как поды, сервисы, неймспейсы, деплойменты и многое другое. Вы узнаете, как использовать Kubernetes для оркестрации и управления контейнеризированными приложениями.

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

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

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

Вы рассмотрите концепцию сквозного логирования (distributed tracing) в микросервисных приложениях и изучим инструменты, такие как OpenTracing, Jaeger и Zipkin, для мониторинга и анализа логов.

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

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

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

Вы узнаете о протоколе REST, а также о спецификациях Swagger и OpenAPI, которые позволяют описывать и документировать API. В домашнем задании вы применитеэти знания для создания и документирования RESTful API. Здесь мы изучим сериализацию данных с использованием Protobuf и протокол взаимодействия gRPC. Вы научитесь создавать и использовать сильно типизированные сервисы и передавать данные между ними. В этой теме вы погрузитесь в технологию Apache Kafka, которая предоставляет распределенную систему потоковых данных.  Вы обсудите важность балансировки нагрузки в распределенных системах и изучите различные методы ее настройки. Вы узнаете, как правильно настраивать балансировщики нагрузки для обеспечения высокой доступности и производительности приложений. Вы узнаете о принципах резервирования, транзакционной поддержке, асинхронной обработке и других подходах к обеспечению стабильности приложений. Вы научитесь создавать и настраивать задания, планировать их выполнение в соответствии с расписанием. Вы узнаете, какие проблемы могут возникнуть при разработке на Java и как их избежать. Вы сможете задать любые вопросы по изученным темам о разработке на Java и получить детальные ответы от преподавателя.

Вы узнаете о протоколе REST, а также о спецификациях Swagger и OpenAPI, которые позволяют описывать и документировать API. В домашнем задании вы применитеэти знания для создания и документирования RESTful API.

Здесь мы изучим сериализацию данных с использованием Protobuf и протокол взаимодействия gRPC. Вы научитесь создавать и использовать сильно типизированные сервисы и передавать данные между ними.

В этой теме вы погрузитесь в технологию Apache Kafka, которая предоставляет распределенную систему потоковых данных. 

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

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

Вы научитесь создавать и настраивать задания, планировать их выполнение в соответствии с расписанием.

Вы узнаете, какие проблемы могут возникнуть при разработке на Java и как их избежать.

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

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

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

Вы определитесь с темой, которой посвятите свою проектную работу.

Вы обсудите трудности ли нюансы выполнения проекта.

Вы завершите обучение на курсе и представите его итог.

Отзывы о данном курсе
На этот курс ещё нет отзывов.
Otus
Школа
Otus – это платформа для онлайн-образования, предоставляющая авторские курсы для специалистов в сфере IT. Курсы не предназначены для новичков – они ориентированы на специалистов с опытом, поэтому перед зачислением на курс вам нужно будет пройти тест.