Szkolenie: Wydajność aplikacji na platformie Java
Szkolenie Wydajność aplikacji na platformie Java uczy optymalizacji, testowania i strojenia aplikacji Java, wykorzystując najnowsze narzędzia, techniki profilowania, zarządzania pamięcią, wielowątkowości oraz nowoczesne rozwiązania JVM i GraalVM
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:4 dni (32h)
Kod kursu:J/EFF
Wydajność aplikacji na platformie Java
Cele szkolenia
Szkolenie przygotowuje do samodzielnego analizowania i optymalizowania wydajności aplikacji działających na platformie Java
Szkolenie uczy stosowania narzędzi do testowania, profilowania oraz strojenia kodu i środowiska uruchomieniowego Java
Szkolenie pokazuje, jak projektować i implementować rozwiązania programistyczne oraz architektoniczne zwiększające efektywność działania aplikacji
Szkolenie omawia wpływ nowości w języku Java i JVM na wydajność oraz uczy ich praktycznego wykorzystania w codziennej pracy
Dla kogo?
Programistów Java z podstawowym doświadczeniem, którzy chcą rozwijać umiejętności w zakresie optymalizacji wydajności aplikacji
Architektów i liderów technicznych odpowiedzialnych za projektowanie i wdrażanie wydajnych rozwiązań opartych o JVM
Specjalistów IT zainteresowanych nowoczesnymi narzędziami do testowania, profilowania i strojenia aplikacji Java
Efekty kształcenia
Uczestnik analizuje i interpretuje wyniki testów wydajnościowych aplikacji Java
Uczestnik stosuje narzędzia do profilowania i monitorowania działania aplikacji
Uczestnik projektuje wydajne rozwiązania z wykorzystaniem nowoczesnych funkcji języka Java
Uczestnik optymalizuje zarządzanie pamięcią i wykorzystanie wątków w aplikacjach
Uczestnik wdraża dobre praktyki programistyczne zwiększające efektywność kodu
Uczestnik rozróżnia i dobiera odpowiednie technologie JVM do specyfiki projektu
Wymagania
Podstawowa umiejętność programowania w języku Java
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program szkolenia
Testowanie wydajności
Poziomy testów wydajnościowych
Problemy związane z poprawnym testowaniem wydajnościowym aplikacji
Zasady tworzenia i utrzymywania testów wydajnościowych
Testy białej skrzynki - Java Microbenchmark Harness
Interpretacja wyników testów
Narzędzia profilujące
Podstawowe narzędzia JDK: jps / jinfo / jmap / jconsole / jstack / jcmd
Java Flight Recorder
Intellij Debugger & (Async) Profiler
VisualVM / Java Mission Control
Zbieranie metryk z produkcyjnie działających aplikacji
Just-In-Time Compiler
Zasady działania JIT i wpływ na wydajność
Ahead-of-Time Method Profiling
Przydatne flagi do strojenia JIT
OpenJ9 - alternatywny JVM z JIT Server
Porządkowanie pamięci w Wirtualnej Maszynie Javy
Podstawy działania mechanizmu odśmiecania pamięci
Porównanie dostępnych GC w najnowszych JVM: Serial, Parallel, G1GC, ZGC, Shenandoah, Epsilon
Heap Memory vs No-Heap Memory
Powody pojawienia się błędu związanego z brakiem pamięci
Wyciek vs Brak pamięci
Kompresja wskaźników na obiekty
Compact Object Headers
Application Class-Data Sharing - mechanizm Class Data Sharing
Ahead-of-Time
Przydatne flagi do strojenia Garbage Collectora
Typy podstawowe w Javie i ich wpływ na wydajność
Typy prymitywne vs typy opakowane
Integer cache
Pule ciągów znaków / String.intern
Typowe błędy w operacjach na Stringach
Deduplikacja Stringów / Compact Strings
Metody programistyczne poprawiające wydajność aplikacji
Problemy związane z metodami equals, hashCode, toString
Wyjątki vs programowanie defensywne
Wydajne używanie pakietu NIO
Leniwe przetwarzanie
Cache / Memoization
Stable Values jako prawdziwy const w Javie
Pule obiektów
Wzorce projektowe wspomagające pisanie wydajnych aplikacji
Wołanie natywnych aplikacji z wykorzystaniem Process API oraz Foreign Linker API
Wydajność w aspekcie wielowątkowości
Java Memory Model
Cechy dostępnych pul wątków
Unikanie synchronizacji danych
Synchronizacja zmiennych w przetwarzaniu wielowątkowym (typy atomowe, LongAdder)
Stosowanie złożonych obiektów synchronizujących z pakietu java.util.concurrent
Dobór kolekcji wielowątkowych do problemu
Pułapki w użyciu java.util.Random
Vector API jako alternatywa dla bezpośredniego paralelizmu
Wirtualne wątki i Structured Concurrency
Realizacja złożonych obliczeń na kartach graficznych z wykorzystaniem TornadoVM
Project Babylon jako przyszłość obliczeń z kartami graficznymi na platformie Java
Aspekty architektury w wydajności aplikacji
Wpływ systemu operacyjnego na JVM i dobór odpowiedniego rozwiązania na przykładzie Alpaquita Linux
Mikroserwisowość i konteneryzacja JVM
JPMS i budowanie własnych obrazych JVM
Optymalizacja serializacji obiektów
Asynchroniczna komunikacja między serwisami
Zagadnienia wydajnościowe w warstwie persystencji
Platforma GraalVM / Coordinated Restore at Checkpoint (CRaC)
Problemy we wdrażaniu aplikacji opartych na Wirutalnej Maszynie Javy
Omówienie platformy GraalVM
Budowanie natywnych aplikacji Java w GraalVM
Polyglot API (inne języki programowania w ramach JVM)
Coordinated Restore at Checkpoint (CRaC) - alternatywa dla natywnej aplikacji
Wybrane opinie
Przeczytaj pozytywne opinie pochodzące z ankiet satysfakcji z naszych szkoleń wypełnianych wyłącznie przez ich uczestników po realizacji usługi

