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

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

Код курса: IM-010 Продолжительность: 5 дней (40 часов)

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

Вопросы курса:

  1. Краткая история — от OAK к Java2.
    Версии SDK и JVM, Эволюция развития. От OOP к функциональному и аспектно-ориентированному программированию.
  2. Запуск JVM, порядок загрузки классов, приложения JSE и JEE — всему платформа — многопоточное программирование.
  3. Распределение памяти работающей JVM. Heap, Metaspace, Stack — параметры определяющие размеры областей. Сборка мусора (GC) — 4 основных алгоритма сборки , параметры управления алгоритмами GC.
  4. JMX интерфейс. Утилиты мониторинга JVM (JVisualVM, JMC) — сравнение и использование.
  5. Терминальные утилиты наблюдения за JVM (jmap, jstack…).
  6. Тестовые задачи и наблюдение за распределением объектов в куче.
  7. Профилирование приложения средствами Java и утилитами мониторинга.
  8. Загрузка классов в JVM, назначение класса Class, объект класса Class с описанием структуры   классов, загруженных в JVM, выполнение статического блока класса.
  9. Типы ссылок в java. Жесткие , мягкие, слабые, фантомные ссылки. Экономия оперативной памяти, создание кешей объектов, когда удаляются объекты сборщиками мусора. Примеры использования ссылок. Мониторинг JVM. Утилиты jstack, jinfo, jmap, jconsole. Куда делись JMC и JvisualVM ? — Нашлись…
  10. Интерфейсы в Java, статические, абстрактные и методы по умолчанию в интерфейсах. Множественное наследование интерфейсов, переопределение методов по умолчанию в классах, реализовавших множественное наследование интерфейсов (Interfece.supper.method()). Функциональные интерфейсы.
  11. Лямбда выражения, реализация функционального программирования в Java. Определение лямбда выражения. Описание и передача параметров в функцию (лямбда выражение). Ссылки на методы и конструкторы классов в лямбда. Интерфейсы Stream и ParallelStream для работы с наборами данных. Развертывание и свертывание потоков, фильтрация, преобразование. Статистика в потоках, расчет выражений, итогов, контрольных сумм.
  12. Чтение файлов и их представление в виде потоков. Реализация интерфейса Comparator для сложных объектов из ссылок на методы, которые возвращают Comparable типы. Методы модификации всех элементов списка. Создание потоков случайных чисел в заданом диапазоне. Выполнение атомарных арифметических операций над простыми типами данных . LongAccumulator и функция, определяющая накопление данных в контейнере.
  13. Перечисления — как представитель патерна Singleton с немедленной инициализацией экземпляров enums, отличия от описания констант в интерфейсах.
  14. Аннотации, создание собственных аннотаций, определение методов доступа к свойствам аннотаций, область видимости и цель где будет использована аннотация. Простой пример использования аннотаций с динамической компиляцией класса , загрузкой последнего в JVM,  рефлективным выполнением методов на основе заключенных контрактов.
  15.  Определение потока (нити) в java. Как запускается главный поток приложения. Группы потоков и распределение квантов процессорного времени, приоритеты потоков, демоны. Два способа создания собственного потока и его запуск в работу. Останов потока и выход. Механизмы уведомлений.
  16.  Мониторы объектов — как механизмы доступа из потоков к ресурсам приложения. Блоки синхронизации, динамические и статические методы с синхронизированным доступом. Объект класса Class и его монитор. Взаимные блокировки в потоках и блокировки ресурсов (объектов).
  17. Синхронизация данных. Модификатор volatile. Системная синхронизация — методы wait, notify, notifyAll. Механизмы возобновления работы потоков. Модель памяти в потоках -happens-before. Патерн синглетон в многопоточной среде — Double-checked locking. Конкурентная работа с коллекциями в потоках, копирование и синхронизация коллекций . Работа с очередями в многопоточных сервисах. Контейнеры (pool) выполнения потоков, асинхронный возврат результатов из потока. Контейнеры задач (ScheduledExecutorService). Паркинг потоков — LockSupport.
  18. Fork-Join FrameWork — основные интерфейсы и классы. Примеры использования на разборе XML файлов. Интерфейсы и классы для создания пула потоков ComplitableFuture, описание методов и их выполнение с «воровством» у соседей.
  19. Сетевые взаимодействия. Создание в пуле потоков сетевого слушателя на основе сокета, клиент для сервера. Нагрузочное тестирование сервера — утилита jmeter.
  20. Дополнительные вопросы — по согласованию со слушателями:
  21. Механизмы работы с XML документами — парсирование, маршалирование, JAXB компиляция.
  22. Технология JDBC.
  23. Введение в технологию JEE.
  24. EJB3, JMS, JPA-ORM, транзакционная модель JTA/JTS.
  25. WebService, REST service.

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

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

Направления обучения

Поиск по сайту