Tworzenie wydajnych aplikacji i optymalizacja JVM

Tworzenie wysokowydajnych aplikacji na platformę Java było do niedawna zarezerwowane dla języków C/C++ i innych, kompilowanych do kodu natywnego platformy, na której docelowo miała działać aplikacja. Dzięki wysiłkom inżynierów pracujących nad rozwojem JVM, tworzenie wysokowydajnych aplikacji na platformę JVM, stało się już dziś codziennością. Codziennością, która wymaga od programistów zrozumienia mechanizmów działania maszyny wirtualnej, prawideł rządzących dostępem do pamięci oraz przede wszystkim innego, świeżego spojrzenia na zarządzanie pamięcią, operacje „wejścia-wyjścia” i programowanie wielowątkowe.

Celem szkolenia jest wprowadzenie uczestników w świat JVM, optymalizacji mechanizmów automatycznego zarządzania pamięcią, tajników działania kompilatora HotSpot, wykorzystania API java.nio oraz java.util.concurrent. Ponadto szkolenie zapozna Was z tajnikami tworzenia wysokowydajnych aplikacji z wykorzystaniem różnych modeli programowania współbieżnego, takich jak: model aktorów, STM (software transactional memory), czy też „persistent data structures”.

Szkolenie łączy teorię i praktykę: od podstaw automatycznego zarządzania pamięcią, do optymalizacji parametrów „garbage collector’a” -przykładowej aplikacji. Od wątków i sekcji krytycznych, po „reentrant lock” i „atomic structures”. Od prostego serwera TCP opartego o wątki, po ten sam serwer z wykorzystaniem modelu opartego o zdarzenia i nie blokujące IO.

Program szkolenia „Tworzenie wydajnych aplikacji i optymalizacja JVM”:

  1. Wprowadzenie do mechanizmów maszyny wirtualnej Java
    1. Czym jest bytecode i jak jest on interpretowany przez JVM
    2. JMM (Java Memory Model), czyli jak działają wątki i dostęp do współdzielonej pamięci
    3. Krótkie wprowadzenie do teorii „garbage collectors” (GC)
    4. Generacyjny GC w maszynie JVM
    5. Nowy algorytm GC w Oracle JVM, czyli słów kilka o G1
    6. Przestrzeń PermGen i alokacja pamięci poza stertą w JVMie
    7. Kompilator HotSpot i dynamiczna optymalizacja wykonywanego kodu
  2. Metryki i optymalizacja GC
    1. Metody zbierania metryk GC w Oracle JVM
    2. Narzędzia i techniki analizy zachowania GC (jmap, jhat, jstat, jstack, VisualVM, GCViewer, MAT (Memory Analyzer Tool)), JITWatcher
    3. Omówienie dostępnych parametrów GC w Oracle JVM
    4. Optymalizacja zachowania GC i kilka słów o tym, jak dobrać algorytm odpowiedni dla naszych potrzeb
  3. Testowanie wydajności i optymalizacja wykorzystania zasobów
    1. Metodologie optymalizacji wydajności aplikacji
    2. Optymalizacja wykorzystania CPU
    3. Optymalizacja wykorzystania pamięci
    4. Wykrywanie wycieków pamięci
    5. Wykrywania „lock contention”
    6. Antywzorce w testowaniu wydajności i optymalizacji JVM
  4. Tworzenie wysokowydajnych aplikacji na platformę Java
    1. Efektywne operacje „wejścia-wyjścia” z wykorzystaniem Java NIO API
    2. Netty asynchroniczne, oparte o model zdarzeń tworzenie aplikacji sieciowych
    3. Tworzenie wielowątkowych aplikacji z wykorzystaniem java.util.concurrent
    4. Vert.x, lekka alternatywna platforma dla budowania skalowalnych aplikacji
    5. Akka, model aktorów dla platformy JVM
    6. java.util.concurrent.atomic i inne struktury danych dla programowania współbieżnego
    7. Techniki pracy z obiektami java.lang.String
    8. Optymalizacje wykorzystywane przez JVM, o które bałeś się zapytać

Zapytaj o szkolenie