Главная

 / 

JAVA: Расширенные темы JSE 21 и старше

JAVA: Расширенные темы JSE 21 и старше 

(GAL - JAVAEXT)

Описание

Кому полезен курс

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

Вступительные требования

Нет предварительных требований

Результат обучения

Программа курса

Версии SDK и JVM, Эволюция развития. От OOP к функциональному и аспектно-ориентированному программированию.

Запуск JVM, порядок загрузки классов, приложения JSE, JakartaEE, SPRING - всему платформа - многопоточное программирование.

Распределение памяти работающей JVM. Heap, Metaspace, Stack - параметры определяющие размеры областей. Сборка мусора (GC) - 4 основных алгоритма сборки , параметры управления алгоритмами GC, новые алгоритмы сборки мусора - JSE-17 и старше.

JMX интерфейс. Утилиты мониторинга JVM (JVisualVM, JMC) - сравнение и использование.

Терминальные утилиты наблюдения за JVM (jmap, jstack...).

Тестовые задачи и наблюдение за распределением объектов в куче.

Профилирование приложения средствами Java и утилитами мониторинга.

Загрузка классов в JVM, назначение класса Class, объект класса Class с описанием структуры   классов, загруженных в JVM, выполнение статического блока класса.

Типы ссылок в java. Жесткие , мягкие, слабые, фантомные ссылки. Экономия оперативной памяти, создание кешей объектов, когда удаляются объекты сборщиками мусора. Примеры использования ссылок. Мониторинг JVM. Утилиты jstack, jinfo, jmap, jconsole. Куда делись JMC и JvisualVM ? - Нашлись...

Интерфейсы в Java, статические, абстрактные и методы по умолчанию в интерфейсах. Множественное наследование интерфейсов, переопределение методов по умолчанию в классах, реализовавших множественное наследование интерфейсов (Interfece.supper.method()). Функциональные интерфейсы.

Лямбда выражения, реализация функционального программирования в Java. Определение лямбда выражения. Описание и передача параметров в функцию (лямбда выражение). Ссылки на методы и конструкторы классов в лямбда. Интерфейсы Stream и ParallelStream для работы с наборами данных. Развертывание и свертывание потоков, фильтрация, преобразование. Статистика в потоках, расчет выражений, итогов, контрольных сумм.

Чтение файлов и их представление в виде потоков, нативные методы для работы с файловыми потоками. Реализация интерфейса Comparator для сложных объектов из ссылок на методы, которые возвращают Comparable типы. Методы модификации всех элементов списка. Создание потоков случайных чисел в заданом диапазоне. Выполнение атомарных арифметических операций над простыми типами данных . LongAccumulator и функция, определяющая накопление данных в контейнере.

Перечисления - как представитель патерна Singleton с немедленной инициализацией экземпляров enums, отличия от описания констант в интерфейсах.

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

Определение потока (нити) в java. Как запускается главный поток приложения. Группы потоков и распределение квантов процессорного времени, приоритеты потоков, демоны. Два способа создания собственного потока и его запуск в работу. Останов потока и выход. Механизмы уведомлений.

Мониторы объектов - как механизмы доступа из потоков к ресурсам приложения. Блоки синхронизации, динамические и статические методы с синхронизированным доступом. Объект класса Class и его монитор. Взаимные блокировки в потоках и блокировки ресурсов (объектов).

Синхронизация данных. Модификатор volatile. Патерн синглетон в многопоточной среде - Конкурентная работа с коллекциями в потоках, копирование и синхронизация коллекций . Работа с очередями в многопоточных сервисах. Контейнеры (pool) выполнения потоков, асинхронный возврат результатов из потока. Контейнеры задач (ScheduledExecutorService). Паркинг потоков - LockSupport.

Fork-Join FrameWork - основные интерфейсы и классы. Примеры использования на разборе XML файлов. Интерфейсы и классы для создания пула потоков ComplitableFuture.

Сетевые взаимодействия. Создание в пуле потоков сетевого слушателя на основе сокета, клиент для сервера. Нагрузочное тестирование сервера - утилита jmeter.

SPRING библиотека в сравнении с технологиями JakartaEE. Управление контекстами. Декларативное управление модулями в JakartaEE, настройка и использование модулей в SPRING. Управление потоками. Взаимодействие с внешними серверами , на примере Wildfly, Postgresql, ClickHouse, ActiveMQ

JAVA: Расширенные темы JSE 21 и старше 

Уровень сложности курса

Продвинутый

Длительность
40 ч./
5 дн.
Стоимость
65 000 ₽/чел.
520 000 ₽/группа
Ближайшая дата
По запросу

Оставьте заявку

Нажимая отправить Вы соглашаетесь с нашей Политикой конфиденциальности