Szkolenie dostępne na zamówienie

Szkolenie: Wydajność aplikacji na platformie Java

Podczas szkolenia "Wydajność aplikacji na platformie Java" uczestnicy zajmą się badaniem wydajności i wytwarzaniem wysokowydajnych aplikacji działających na platformie Java z uwzględnieniem technik narzędzi dostępnych w najnowszych wersjach języka Java.

3550 PLN+23% VAT (4366 PLN brutto / 1 os.)

Czas trwania szkolenia:4 dni (32h)

Poziom zaawansowania:

Kod kursu:J/EFF

javaefficiency

Dostępne terminy szkolenia

  • Termin
  • Trener
  • Cena
  • Zapis
  • Lokalizacja

Termin:

16 grudnia
Trwają zapisy na szkolenie

Trener:

Mateusz Kamiński

Cena:

3550 PLN netto
Ikona podpowiedziDowiedz się więcej o cenach szkoleń - zapraszamy do kontaktu
+23% VAT

Lokalizacja:

Zdalne
Zdalne
Ikona podpowiedziZapytaj o inne lokalizacje - w tym celu skorzystaj z chatu

Forma szkolenia

Interesuje Cię szkolenie stacjonarne?

Powiadom o kolejnych terminach

Interesuje Cię szkolenie w innym terminie?

Wydajność aplikacji na platformie Java

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


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.


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


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

Pobierz program w PDF

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

  • 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

  • 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

  • Realizacja złożonych obliczeń na kartach graficznych z wykorzystaniem TornadoVM

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

Autorem szkolenia jest Mateusz Kamiński

Absolwent informatyki Instytutu Informatyki na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej, obecnie Engineering Manager w Sages. Przez wiele lat prowadził zespoły programistyczne wytwarzające współczesne oprogramowanie, kładąc przy tym nacisk na jakość i elastyczność tworzonych rozwiązań. Od kilku lat lider zespołu technicznego Sages, który to w niedługim czasie z niewielkiego startupu rozwinął się w software house. Od początków kariery był mentorem w zespołach programistycznych,…