Курс надає знання та навички розробки програмного забезпечення на мові програмування Java з використання нових платформ та технологій.
Після закінчення курсу слухачі зможуть:
- ефективно розробляти програмне забезпечення на мові програмування Java з використанням сучасних технологій.
Аудиторія
Курс призначений для слухачів, які володіють основами Java та використовують в своїх розробках технології JSE.
Для ефективного навчання на курсі, слухачі повинні володіти такими знаннями і навичками:
- досвід програмування на Java.
- Тема 1
- Коротка історія від OAK до Java2
- Версії SDK та JVM, еволюція розвитку. Від ООП до функціонального та аспектно-орієнтованого програмування
- Тема 2
- Запуск JVM, порядок завантаження класів, додатки JSE та JEE, багатопотокове програмування
- Розподіл пам'яті JVM. Heap, Metaspace, Stack, параметри, які визначають розміри областей. Збирання сміття GC, 4 основних алгоритми збирання, параметри управління алгоритмами GC
- JMX-інтерфейс. Утиліти моніторингу JVM (JVisualVM, JMC), порівняння та використання
- Термінальні утиліти спостереження за JVM jmap, jstack
- Тестові завдання та спостереження за розподілом об'єктів у купі
- Профілювання додатків засобами Java та утилітами моніторингу.
- Тема 3
- Завантаження класів в JVM, призначення класу Class, об'єкт класу Class з описом структури класів, завантажених в JVM, виконання статичного блоку класу
- Типи посилань в Java. Жорсткі, м'які, слабкі, фантомні посилання. Економія оперативної пам'яті, створення кешей об'єктів, коли об'єкти видаляються збирачами сміття. Приклади використання посилань
- Тема 4
- Інтерфейси в Java, статичні, абстрактні та методи за замовчуванням в інтерфейсах. Множинне спадкування інтерфейсів, перевизначення методів за умовчанням в класах, що реалізували множинне спадкування інтерфейсів Interface.supper.method(). Функціональні інтерфейси
- Тема 5
- Лямбда-вирази, реалізація функціонального програмування в Java. Визначення лямбда-виразу. Опис та передача параметрів в функцію, лямбда-вираз. Посилання на методи та конструктори класів в лямбда. Інтерфейси Stream та ParallelStream для роботи з наборами даних. Розгортання та згортання потоків, фільтрація, перетворення. Статистика в потоках, розрахунок виразів, підсумків, контрольних сум
- Тема 6
- Читання файлів та їх представлення у вигляді потоків. Реалізація інтерфейсу Comparator для складних об'єктів з посилань на методи, які повертають Comparable-типи. Методи модифікації всіх елементів списку. Створення потоків випадкових чисел в заданому діапазоні. Виконання атомарних арифметичних операцій над простими типами даних. LongAccumulator та функція, яка визначає накопичення даних в контейнері
- Перерахування як представник патерна Singleton з негайною ініціалізацією примірників enums, відмінності від опису констант в інтерфейсах
- Тема 7
- Анотації, створення власних анотацій, визначення методів доступу до властивостей анотацій, область видимості та мета, де буде використана анотація. Простий приклад використання анотацій з динамічною компіляцією класу, його завантаженням в JVM, рефлективним виконанням методів на основі укладених контрактів
- Тема 8
- Механізми виконання скриптових мов в Java на прикладі JavaScript (JS)
- Менеджер скриптових мов. Виконання JS функцій та методів класів з Java, передавання параметрів та повернення результатів, імплементація java-інтерфейсів в JS
- Тема 9
- Визначення потоку (нитки) в Java. Як запускається головний потік програми. Групи потоків та розподіл квантів процесорного часу, пріоритети потоків, демони. Два способи створення власного потоку та його запуск в роботу. Зупинка потоку та вихід. Механізми повідомлень
- Тема 10
- Монітори об'єктів як механізми доступу з потоків до ресурсів програми
- Блоки синхронізації, динамічні та статичні методи з синхронізованим доступом. Об'єкт класу Class та його монітор. Взаємні блокування в потоках та блокування ресурсів, об'єктів
- Тема 11
- Синхронізація даних. Модифікатор volatile. Системна синхронізація, методи wait, notify, notifyAll. Механізми відновлення роботи потоків. Модель пам'яті в потоках happens-before. Патерн Синглетон в багатопотоковому середовищі, Double-checked locking. Конкурентна робота з колекціями в потоках, копіювання та синхронізація колекцій. Робота з чергами в багатопотокових сервісах. Контейнери pool виконання потоків, асинхронне повернення результатів з потоку. Контейнери завдань ScheduledExecutorService. Паркінг потоків LockSupport
- Fork-Join FrameWork, основні інтерфейси та класи. Приклади використання при розборі XML-файлів
- Інтерфейси та класи для створення пулу потоків ComplitableFuture, опис методів та їх виконання з «крадіжкою» у сусідів
- Тема 12
- Мережні взаємодії. Створення в пулі потоків мережного слухача на основі сокета, клієнт для сервера. Тестування навантаження сервера, утиліта jmeter
- Тема 13
- Механізми роботи з XML-документами, парсування, маршалірування, JAXB-компіляція.
- Технологія JDBC
- Вступ до технології JEE
- EJB3, JMS, JPA-ORM, транзакційна модель JTA/JTS
- WebService та REST-service