ПРИЛОЖЕНИЕ № 1 к Приказу ООО «Отус онлайн-образование» от «21» февраля 2024 г. № ____ УТВЕРЖДЕНО ПРИКАЗОМ ООО «Отус онлайн-образование» от «21» февраля 2024 г. № ___ ДОПОЛНИТЕЛЬНАЯ ПРОФЕССИОНАЛЬНАЯ ПРОГРАММА (программа повышения квалификации) «Java Developer. Advanced» Москва, 2024 1 1. ОБЩИЕ ПОЛОЖЕНИЯ Содержание программы представлено пояснительной запиской, учебным планом, рабочей программой, планируемыми результатами освоения программы, организационно-педагогическими условиями реализации программы, учебно-методическими материалами, обеспечивающими реализацию программы, формы аттестации. В целях учета современных образовательных технологий организация, осуществляющая образовательную деятельность, вправе: - увеличивать объем дополнительной профессиональной программы (программы повышения квалификации); - изменять соотношение учебной нагрузки между разделами, включенными в учебный план. 1.1. Цель реализации программы Целью повышения квалификации по дополнительной профессиональной программе, является совершенствование и (или) получение новой компетенции, необходимой для профессиональной деятельности, и (или) повышение профессионального уровня в рамках имеющейся квалификации. 2. ТРЕБОВАНИЯ К РЕЗУЛЬТАТАМ ОБУЧЕНИЯ Планируемые результаты обучения: В результате освоения программы «Java Developer. Advanced» слушатель должен приобрести следующие знания и умения, необходимые для качественного изменения компетенций. Слушатель должен: 2 получить ответы на интересующие вопросы; разбор ДЗ; разбор и повторение материала, который был не до конца понят. 3 получить ответы на интересующие вопросы; разбор ДЗ; разбор и повторение материала, который был не до конца понят. получить ответы на интересующие вопросы; разбор ДЗ; разбор и повторение материала, который был не до конца понят. 4 Научиться уместно применять паттерн и выбирать правильные решения в Java Поделиться полезными советами по проведению Code Review на примерах получить ответы на интересующие вопросы; разбор ДЗ; разбор и повторение материала, который был не до конца понят. выбрать и обсудить тему проектной работы; спланировать работу над проектом; ознакомиться с регламентом работы над проектом. получить ответы на вопросы по проекту, ДЗ и по курсу. защитить проект и получить рекомендации экспертов. 5 3. СОДЕРЖАНИЕ ПРОГРАММЫ Учебный план программы повышения квалификации «Java Developer. Advanced» Категория слушателей – к освоению дополнительных профессиональных программ допускаются: лица, имеющие среднее профессиональное и (или) высшее образование; лица, получающие среднее профессиональное и (или) высшее образование. Сроки обучения: . 1 академический час равен 45 минутам. Форма обучения: заочная с применением электронного обучения и дистанционных образовательных технологий. Режим занятий: 2 занятия в неделю длительностью 2 ак.часа. Форма организации учебного процесса: лекции и семинары в формате вебинаров, самостоятельная работа студентов, проектная работа. В том числе № п/п Наименование разделов/модулей Всего, час. Вебинары, час. 1 2 Многопоточность и производительность 3 Облачные технологии 4 Протоколы взаимодействия 5 Проектная работа 6 Практическая и самостоятельная работа, час. Проектная работа Итоговая аттестация Итог 102 86 16 Учебно-тематический план программы повышения квалификации «Java Developer. Advanced» В том числе № п/п Наименование разделов/модулей/тем Всего, час. Формы контроля Вебинары, час. 1 1.1 Java 11 vs 17 vs 21. OpenJDK vs OracleJDK и другие имплементации 1.2 7 Практическая и самостоятельная работа, час. 1.3 1.4 1.6 Memory management. Разбор алгоритмов GC: SerialGC, 1.7 Memory management. Разбор алгоритмов GC: G1, ZGC 1.8 1.9 1.10 1.11 Модульная система Java 1.12 1.13 Сессия Q&A 2 Многопоточность и производительность 8 2.1 Разбор библиотеки Java 2.2 Разбор JMeter и организация нагрузочного тестирования 2.3 2.4 2.5 2.6 Профилирование java приложений. Thread dump, JFR 2.7 Профилирование java приложений. Работа с jvisualvm 2.8 2.9 2.10 Реактивное программирование: 2.11 Реактивное программирование: Профилирование приложения на Reactor 9 2.12 Сессия Q&A 3 Облачные технологии 3.1 Вспоминаем Docker 3.2 Введение в Kubernetes 3.4 Обзор Helm 3.5 Метрики 3.6 3.7 Сквозное логирование в микросервисах 3.8 Проектирование и архитектура в разрезе микросервисов 3.11 Сессия Q&A 4 Протоколы взаимодействия 4.1 10 4.2 4.3 4.4 Балансировка нагрузки: назначение и конфигурация 4.5 Шаблоны проектирования отказоустойчивого сервиса 4.6 Выполнение задач по расписанию в Java 4.7 Примеры ошибок в коде на Java и как их обнаружить на Code 4.8 Сессия Q&A 5 Проектная работа 5.1 Выбор темы и организация проектной работы 5.2 Консультация по проектам и домашним заданиям 5.3 Защита проектных работ Проектная работа 11 Итог 102 86 16 Учебная программа повышения квалификации «Java Developer. Advanced» В ходе реализации данной программы предусматривается изучение слушателями следующих модулей: Java Virtual Machine (JVM). ; Многопоточность и производительность. ; Облачные технологии. ; Протоколы взаимодействия. ; Проектная работа. . № Тема занятия Цели занятия Краткое содержание занятия Модуль 1. Java Virtual Machine (JVM) 12 Практическое задание 1 Java 11 vs 17 vs 21. OpenJDK vs OracleJDK и другие имплементации Система версионирования Java: промежуточные версии и LTS. Ключевые отличия версий 11 vs 17 vs 21. Обзор существующих JDK: как выбрать, что такое JEP 2 Byte code AOT vs JIT компиляторы, их назначение и принципа работы. Просмотр байт кода через javap. 3 Java Instrumentation & Java agent Что это такое, для чего используется. Статическое и динамическое использование агентов код, использующий InstrumentationAPI 4 Memory management. JVM memory structure Назначение областей: pc registers, jvm stack, heap, method area, native-method stack. Назначение класса Reference: способы «общения» с GC. 13 - 6 Memory management. Разбор алгоритмов GC: SerialGC, ParallelGC, CMS GC. Разбор алгоритмов: Serial GC, Prallel GC, CMS GC - 7 Memory management. Разбор алгоритмов GC: G1, ZGC Разбор алгоритмов: G1, ZGC - 8 Memory dump Что это такое, инструменты сборки и анализа (jdk: jmap, jhat + сторонние инструменты, например MemoryAnalyzer). Задачи, которые можно решать с помощью анализа дампа 9 Off-heap Что такое off-heap, heap vs off-heap 14 - 10 Class Data Sharing Назначение механизма в JVM, применение. Использование CDS в Spring 11 Модульная система Java Разбор модульной системы. Назначение модульной системы. Как обеспечивается обратная совместимость с приложениями, не использующими модули. Пример построения модулей 12 JDK tools Обзор прочих областей: Native Memory Tracking, DTrace probes. Обзор инструментов JDK "через призму практики": javac, javap, javadoc, java, jar, jlink, jmod, jdeps, jdeprscan, jshell, keytool, jarsigner, kinit, klist, ktab 15 13 Сессия Q&A получить ответы на интересующие вопросы; разбор ДЗ; разбор и повторение материала, который был не до конца понят. подробный разбор вопросов и непонятных моментов из лекций и ДЗ. - Модуль 2. Многопоточность и производительность 1 Разбор библиотеки Java Microbenchmark Harness Разбор библиотеки JMH. Примеры бенчмарков. Реализация бенчмарка 2 Разбор JMeter и организация нагрузочного тестирования Разбор возможностей инструмента. Использование как стандартного UI клиента, так и библиотеки ApacheJmeter_core для организации нагрузочного тестирования - 3 Java.util.concurrent. Atomics, ConcurrentHashMap, ConcurrentSkipListMap Разбор конструкций пакета с примерами на JMH: Atomics, ConcurrentHashMap, ConcurrentSkipListMap объекты. - 16 Демонстрация преимущества перед synchronized. Демонстрация сравнения результатов профилирования 4 Java.util.concurrent. Locks, ReadWriteLock, ReentrantLock Разбор конструкций пакета с примерами на JMH: Locks, ReadWriteLock, ReentrantLock. Демонстрация преимущества перед synchronized. Демонстрация сравнения результатов профилирования - 5 Java.util.concurrent. CountDownLatch, Semaphore, Phaser Разбор конструкций пакета с примерами на JMH: Синхронизаторы (CountDownLatch и прочие). Демонстрация преимущества перед synchronized Демонстрация сравнения результатов профилирования - 17 6 Профилирование java приложений. Thread dump, JFR Для чего нужно профилирование. Профилирование vs сэмплирование. Какие инструменты профилирования существуют. Разбор thread dump. Профилирование через JFR 7 Профилирование java приложений. Работа с jvisualvm & asyncProfiler Профилирование через visualvm & asyncProfiler 8 HotSpot JVM Performance Enhancement Обзор механизмов оптимизации производительности: CompactString, TieredCompilation, Compressed Ordinary Object Pointer. CompactString & String Pool. Демонстрация сравнения прозводительности с применением JMH ДО и ПОСЛЕ оптимизации. 18 - 9 Java NIO Назначение NIO, разница IO vs NIO. ByteBuffer: DirectByteBaffer vs MappedByteBuffer vs byte[]. Пример использования. - 10 Реактивное программирование: Reactor Разбор концепции. Сравнение с классическим подходом программирования. Области применения. Обзор реактивных библиотек. Пример на базе Project Reactor. 11 Реактивное программирование: Профилирование приложения на Reactor Разбор проблемы профилирования приложений на реактивном фреймворке. Обзор способов решения или обхода проблемы. Пример профилирования реактивного приложения 19 12 Сессия Q&A получить ответы на интересующие вопросы; разбор ДЗ; разбор и повторение материала, который был не до конца понят. подробный разбор вопросов и непонятных моментов из лекций и ДЗ. - - Модуль 3. Облачные технологии 1 Вспоминаем Docker Основные концепции docker 2 Введение в Kubernetes Что такое Kubernetes. Основные объекты (pod, deployment, service, etc). Сетевые взаимодействия в кластере. Egress & igress. Service mesh. 4 Обзор Helm Что это такое, для чего используется. Построение чартов 20 - 5 Метрики Что это такое, для чего нужно. Разбор springactuator, типы метрик, применение метрик - 6 Prometheus & Grafana Назначение инструментов. Построение дашбордов - 7 Сквозное логирование в микросервисах Проблема трассировки запросов, механизмы логирования. Как видеть все логи в одном месте. Асинхронное логирование - 8 Проектирование и архитектура в разрезе микросервисов Паттерны проектирования, применяемы в микросервисной архитектуре. Принципы, которым следует следовать при проектирвание микросервисов. Подходы к декомпозиция бизнес - 21 логики по микросервисам. 11 Сессия Q&A получить ответы на интересующие вопросы; разбор ДЗ; разбор и повторение материала, который был не до конца понят. подробный разбор вопросов и непонятных моментов из лекций и ДЗ. - - Модуль 4. Протоколы взаимодействия 1 Rest: Swagger, OpenAPI Спецификация и реализация. Примеры реализаций API с подачей нагрузки на сервис через JMeter. Акцентирование внимания метрикам 2 Protobuf, gRPC Для чего используется Protobuf. Как описывать схему данных. Примеры описания данных. gRPC - описание протокола. Примеры реализаций API с подачей нагрузки на сервис через JMeter. 22 Акцентирование внимания метрикам 3 Kafka Основные объекты в Kafka. Построение топиков, продьюсеров и конзьюмеров. Примеры реализаций API (входящий и исходящий топики) с подачей нагрузки на сервис через JMeter. Акцентирование внимания метрикам 4 Балансировка нагрузки: назначение и конфигурация Что такое LoadBalancer. Обзор имплементаций. Пример настройки баланщировщика. Демонстрация работы 5 Шаблоны проектирования отказоустойчивого сервиса Разбор шаблонов CircuitBreaker, Bulkhead, RateLimiter, Retry и др: мотивация к применению, принцип работы, пример кода. Примеры на базе Resilience4j 23 6 Выполнение задач по расписанию в Java Научиться уместно применять паттерн и выбирать правильные решения в Java 7 Примеры ошибок в коде на Поделиться полезными Примеры по всем Java и как их обнаружить советами по пройденным модулям на Code Review проведению Code Review на примерах - 8 Сессия Q&A - получить ответы на интересующие вопросы; разбор ДЗ; разбор и повторение материала, который был не до конца понят. Стек - java.util.TImer, Quartz, SchedLock, JobRunr, Kubernetes, Cloud. Пример реализованного шедулер на одном из инструментов. подробный разбор вопросов и непонятных моментов из лекций и ДЗ. Модуль 5. Проектная работа 1 Выбор темы и организация выбрать и обсудить правила работы над проектной работы тему проектной работы; проектом и специфика спланировать работу проведения итоговой над проектом; защиты; ознакомиться с требования к результату регламентом работы проекта и итоговой над проектом. документации. 24 2 Консультация по проектам получить ответы на вопросы по улучшению и домашним заданиям вопросы по проекту, ДЗ и оптимизации работы и по курсу. над проектом; затруднения при выполнении ДЗ; вопросы по программе. 3 Защита проектных работ защитить проект и презентация проектов получить рекомендации перед комиссией; экспертов. вопросы и комментарии по проектам. 25 4. МАТЕРИАЛЬНО-ТЕХНИЧЕСКИЕ УСЛОВИЯ РЕАЛИЗАЦИИ ПРОГРАММЫ Обучение проходит в формате вебинаров (онлайн, синхронное обучение). Слушателям предлагаются к выполнению практические задания, которые позволят применить на практике полученные во время вебинаров знания. Вид занятий Наименование оборудования, программного обеспечения Вебинары компьютеры, учебные макеты для изучения материала курса Практические занятия компьютеры, учебные макеты для изучения материала курса 5. УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ПРОГРАММЫ Преподаватель находится в едином коммуникационном пространстве с группой на протяжении всего курса, то есть в процессе обучения слушатель может задавать преподавателю уточняющие вопросы по материалам лекций и практических заданий. Учебный материал разбит на отдельные модули и темы. Каждый модуль и каждая тема создают целостное представление об определенной предметной области. Отличительными особенностями дополнительной профессиональной образовательной программы является то, что в ее основе лежит освоение цифровых навыков от ведущих экспертов отрасли. При освоении содержания учебной программы и ее модулей используются образовательные технологии, предусматривающие различные методы и формы изучения материала. Программой предусматриваются проблемные-поисковые, информационные, диалоговые лекции в формате вебинаров. Проблемные-поисковые вебинары привлекают слушателей к поиску доказательств отдельных положений и формированию выводов о практических действиях в ходе применения полученной информации в своей деятельности. Вебинары в форме диалога активизируют мыслительную и познавательную деятельность слушателей, позволяют наладить контакт с аудиторией. Во время такого вебинара поясняется содержание рассматриваемой темы, а затем совместно разбираются и обсуждаются вопросы. Семинары направлены на развитие творческого мышления слушателей и формирование практических умений и навыков по развитию цифровых навыков. Практические занятия требуют активного участия студентов в решении практических ситуаций, рассматриваемых на занятиях. Поэтому важно при подготовке к каждому занятию ознакомиться с его темой, изучить теоретический материал по этой теме, используя конспект и рекомендованную литературу, а также продумать вопросы, которые хотелось бы уточнить в ходе занятия. Материал к занятиям подбирается экспертами и всегда доступен студентам. 23 Выполнение самостоятельной работы позволит слушателям развить и укрепить навыки поиска, оценки, отбора информации. Внимательное изучение методических указаний к выполнению работы, а также консультации с преподавателем по возникающим в процессе выполнения вопросам позволит избежать ненужных проблем. Список литературы - 6. ОЦЕНКА КАЧЕСТВА ОСВОЕНИЯ ПРОГРАММЫ Завершает обучение слушателей проектная работа. Выполнение проектной работы помогает усвоению практических навыков. Проектная работа создается на основе знаний, полученных на курсе. В процессе написания проектной работы есть возможность получить консультации преподавателей. Проектная работа является объемной самостоятельной работой, которую студент может забрать в свое портфолио и показывать потенциальным работодателям. 24 7. СОСТАВИТЕЛИ ПРОГРАММЫ В коммерческой разработке с 2013. В данный момент tech lead команды разработчиков по обеспечению надежности кредитной СберКарты от Сбера. Их команда совместно со смежными командами разработчиков и командой сопровождения поддерживает доступность системы уровня Mission Critical. Александр Царев Начинал карьеру в разработке продукта по планированию оперативных и стратегических задач для заводов. После этого участвовал в стартапе по планированию маршрутов для квадрокоптеров. В 2023 сотрудничал с Яндекс.Практикумом в качестве внешнего консультанта (автора контента по Java). Окончил Самарский Государственный Аэрокосмический Университет им. С.П.Королёва: в 2012 - степень бакалавра, в 2014 - степень магистра. В 2020 году получил степень кандидата технических наук. Генеральный директор ООО «Отус онлайн-образование» __________________/ Д.А Волошин/ м.п. 25