Wydajność aplikacji na platformie Java
Wydajność aplikacji na platformie Java
Informacje podstawowe
Informacje podstawowe
- KategoriaInformatyka i telekomunikacja / Programowanie
- Sposób dofinansowaniawsparcie dla osób indywidualnychwsparcie dla pracodawców i ich pracowników
- Grupa docelowa usługi
Szkolenie jest dedykowane dla 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.
- Minimalna liczba uczestników4
- Maksymalna liczba uczestników8
- Data zakończenia rekrutacji09-06-2025
- Forma prowadzenia usługizdalna w czasie rzeczywistym
- Liczba godzin usługi32
- Podstawa uzyskania wpisu do BURCertyfikat systemu zarządzania jakością wg. ISO 9001:2015 (PN-EN ISO 9001:2015) - w zakresie usług szkoleniowych
Cel
Cel
Cel edukacyjny
Poznanie możliwości testowania wydajności i strojenia aplikacji opierających się na Wirtualnej Maszynie JavyNabycie 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
Efekty uczenia się oraz kryteria weryfikacji ich osiągnięcia i Metody walidacji
Efekty uczenia się | Kryteria weryfikacji | Metoda walidacji |
---|---|---|
Efekty uczenia się Uczestnicy poznają techniki i narzędzia pozwalające na osiągnięcie zakładanych celów wydajnościowych, z uwzględnieniem nowości wprowadzonych w ostatnim czasie do Wirtualnej Maszyny Javy. Nabędą kompetencje w zakresie badania wydajności, strojenia i programowania wysokowydajnych aplikacji w języku Java. | Kryteria weryfikacji Tworzy realny projekt, który będzie można wygodnie udostępnić, skomentować i zaprezentować. | Metoda walidacji Obserwacja w warunkach rzeczywistych |
Metoda walidacji Test teoretyczny |
Kwalifikacje i kompetencje
Kwalifikacje
Kompetencje
Usługa prowadzi do nabycia kompetencji.Warunki uznania kompetencji
Program
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
- 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
Harmonogram
Harmonogram
Przedmiot / temat zajęć | Prowadzący | Data realizacji zajęć | Godzina rozpoczęcia | Godzina zakończenia | Liczba godzin |
---|---|---|---|---|---|
Przedmiot / temat zajęć 1 z 4 Testowanie wydajności Narzędzia profilujące | Prowadzący Mateusz Kamiński | Data realizacji zajęć 16-06-2025 | Godzina rozpoczęcia 09:00 | Godzina zakończenia 17:00 | Liczba godzin 08:00 |
Przedmiot / temat zajęć 2 z 4 Typy podstawowe w Javie i ich wpływ na wydajność Metody programistyczne poprawiające wydajność aplikacji | Prowadzący Mateusz Kamiński | Data realizacji zajęć 16-06-2025 | Godzina rozpoczęcia 09:00 | Godzina zakończenia 17:00 | Liczba godzin 08:00 |
Przedmiot / temat zajęć 3 z 4 Just-In-Time Compiler Porządkowanie pamięci w Wirtualnej Maszynie Javy | Prowadzący Mateusz Kamiński | Data realizacji zajęć 17-06-2025 | Godzina rozpoczęcia 09:00 | Godzina zakończenia 17:00 | Liczba godzin 08:00 |
Przedmiot / temat zajęć 4 z 4 Wydajność w aspekcie wielowątkowości Aspekty architektury w wydajności aplikacji Platforma GraalVM / Coordinated Restore at Checkpoint (CRaC) | Prowadzący Mateusz Kamiński | Data realizacji zajęć 19-06-2025 | Godzina rozpoczęcia 09:00 | Godzina zakończenia 17:00 | Liczba godzin 08:00 |
Cena
Cena
Cennik
- Rodzaj cenyCena
- Koszt przypadający na 1 uczestnika brutto4 366,50 PLN
- Koszt przypadający na 1 uczestnika netto3 550,00 PLN
- Koszt osobogodziny brutto136,45 PLN
- Koszt osobogodziny netto110,94 PLN
Prowadzący
Prowadzący
Mateusz Kamiński
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, prowadził bootcamp z Javy w Kodilli, a aktualnie prowadzi dodatkowo zajęcia projektowe z programowania aplikacji na Politechnice Warszawskiej.
Informacje dodatkowe
Informacje dodatkowe
Informacje o materiałach dla uczestników usługi
część teoretyczna szkolenia, slajdy - zostanie przekazana uczestnikom na szkoleniu w formie pdf.
uczestnik otrzyma certyfikat uczestnictwa z opisem nabytych umiejętności
Warunki uczestnictwa
Podstawowa umiejętność programowania w języku Java
Informacje dodatkowe
Szkolenie będzie prowadzone zdalnie, w czasie rzeczywistym, na żywo, z trenerem, możliwością zadawania pytań.
Warunki techniczne
Warunki techniczne
szkolenie na platformie zoom, wymagane:
stabilne połączenie internetowe (zalecane min. 10Mbit/s download i 1Mbit/s upload)
przeglądarka internetowa Chrome
zainstalowana aplikacja Zoom App
dobrej jakości słuchawki oraz mikrofon (opcjonalnie) kamera internetowa
link do szkolenia zostanie przesłany uczestnikom przed szkoleniem i będzie aktywny do końca szkolenia.