Wydajność aplikacji na platformie Java

3250 PLN+23% VAT (3997 PLN brutto / 1 os.)

Czas trwania szkolenia:3 dni (24h)

Kod kursu:J/EFF

Poziom zaawansowania:
javaefficiency

Dostępne terminy

  • Termin
  • Trener
  • Cena
  • Zapis
  • Lokalizacja

Termin:

1 lipiec
Trwają zapisy na szkolenie

Trener:

Mateusz Kamiński

Cena:

3250 PLN netto+23% VAT

Lokalizacja:

Zdalne
Zdalne

Termin:

16 grudzień
Trwają zapisy na szkolenie

Trener:

Mateusz Kamiński

Cena:

3250 PLN netto+23% VAT

Lokalizacja:

Zdalne
Zdalne

Interesuje Cię szkolenie stacjonarne lub nie odpowiada Ci żaden z dostępnych terminów?

Ikona pytaniaZapytaj o szkolenie

O szkoleniu Wydajność aplikacji na platformie 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

Dla kogo?

  • Osób, które chcą poznać możliwości badania wydajności i strojenia aplikacji działających na Wirtualnej Maszynie Javy oraz zasad programowania w języku Java i aspektów dot. architektury wdrażanej aplikacji, które pozwolą na osiągnięcie wysokiej wydajności docelowego rozwiązania.

Wymagania

  • Podstawowa umiejętność programowania w języku Java

Zalety

  • Przekrojowe omówienie zagadnień oraz przykłady oparte o życiowe problemy
  • Promowanie obowiązujących konwencji i dobrych praktyk programistycznych w celu osiągania wysokiej wydajności napisanego kodu
  • Minimalna teoria oparta na praktycznych przykładach i warsztatach z naciskiem na badanie wydajności rozwiązań
  • Praktyczna wiedza uwzględniająca zmiany wprowadzone w najnowszych wydaniach Javy oraz Wirtualnej Maszyny Javy

Cele szkolenia

  • Poznanie możliwości testowania wydajności i strojenia aplikacji opierających się na Wirtualnej Maszynie Javy
  • Nabycie umiejętności tworzenia wydajnego kodu w Javie z uwzględnieniem nowości wprowadzanych do języka przez ostatnie lata
  • Poznanie niuansów języka Java mających wpływ na optymalizacje działania aplikacji
  • Omówienie i praktyczne przetestowanie wpływu zastosowanych rozwiązań na wydajność napisanego kodu zarówno na poziomie programistycznym, jak i architektonicznym

Program

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
  • Testy czarnej skrzynki - Gatling
  • 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ść
  • Przydatne flagi do strojenia JIT

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
  • Application Class-Data Sharing - mechanizm Class Data Sharing
  • 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
  • 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

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

Podobne szkolenia