Wydajność w języku Java

LICZBA DNI: 5 (40h)

KOD KURSU: J/ADV

Powiadom
o kolejnych terminach

# performance

# java

Autor szkolenia:
Michał Podbielski

O szkoleniu

DLA KOGO?

Programiści chcący poznać sekrety tworzenia wydajnego programowania w języku Java

WYMAGANIA

Umiejętność programowania w języku Java

ZALETY

Szkolenie skupia się na aspektach wydajnościowych niezależnych od dobranych bibliotek, kontenerów czy frameworków, dzięki czemu poznana wiedza i zdobyte doświadczenie można wykorzystać w dowolnych aplikacjach Java

Cele szkolenia

Obycie się z praktykami tworzenia wydajnego oprogramowania w Java

Badanie wydajności z użyciem benchmarków

Wykorzystanie narzędzi do profilowania i monitorowania

Tuningowanie JVM (w tym Garbage Collector’a)

Program

  • Różne wymiary wydajności
  • Proces tworzenia wydajnego oprogramowania
  • Co wpływa na wydajność w Javie
  • Problemy ze zwiększaniem wydajności
  • Micro i makrobenchmarking
  • Profilowanie aplikacji
  • Przegląd narzędzi do profilowania i monitorowania
  • Użycie wybranych narzędzi (jconsole, VisualVM, JMC, MAT)
  • Strumienie - jak zepsuć i jak naprawić
  • Swobodny dostęp i inne sztuczki
  • Kanały i bufory (NIO)
  • Odwzorowywanie plików w pamięci (NIO)
  • Optymalizacja Serializacji
  • Przegląd funkcjonalny NIO2
  • Przegląd rozwiązań dla XML
  • Złożoność obliczeniowa
  • Sztuka doboru rozwiązania
  • Rekurencja a iteracja
  • Nie tylko algorytm się liczy
  • API kolekcji z wysoka
  • Porównanie, dobór, konfiguracja i poprawne użycie: zbiorów, list, kolejek, map
  • Stare kontenery, czyli czego i czemu unikać
  • Widoki kolekcji
  • Klasa pomocnicza Collections
  • Przegląd kolekcji wielowątkowych (java.util.concurrent)
  • Tablice - wady i zalety
  • Klasa pomocnicza Arrays
  • Kolekcje na typach prostych - przegląd bibliotek
  • Wstęp do JMH
  • Tworzenie benchmarków
  • Uruchomienie i wyniki
  • Konfiguracja benchmarków
  • Wsparcie wielowątkowości
  • Benchmarki parametryzowalne
  • Blackhole i poprawne pętle
  • Pułapki, profilery i inne tematy zaawansowane
  • Proces ładowania klas
  • Obiekty Class i jak je pozyskać
  • Jak i kiedy tworzyć ClassLoader
  • Po co kontrolować ładowanie
  • Jak unikać zachłannego ładowania klas
  • Redukowanie ilości klas: łączenie listenerów, refleksja, invokedynamic, dynamiczne Proxy
  • Kiedy warto kontrolować ładowanie klas?
  • Wstęp do modułów (projekt jigsaw)
  • Jak działa odśmiecanie pamięci
  • Co gwarantuje Garbage Collector?
  • Cykl życia obiektu
  • Referencje soft, weak i phantom
  • Wycieki pamięci w Javie - powody i unikanie
  • Złe praktyki przy Garbage Collector
  • Ograniczanie zajętości pamięci
  • Słaba teoria generacji, czyli skąd minor i major collections
  • Obszary pamięci: young, eden, survival spaces, old/tenured, metaspace
  • Wymiarowanie pamięci - parametry tuningowania
  • Opcje podglądu GC
  • Wybór, działanie i tuning GC: Serial, Parallel, Concurrent, G1
  • Przegląd eksperymentalnych GC: Z, Epsilon, Shenandoah
  • Inne opcje strojenia pamięci
  • Zmiany w najnowszych maszynach Java
  • Zing jako płatna alternatywa bez pauz
  • Podstawowe tryby pracy a wydajność
  • Parametry tuningowania JVM
  • Porównywanie wydajności różnych JVM
  • Przegląd wybranych macrobenchmarków: JBB2015, VolanoMark
  • Usprawnienia w Java 9-12
  • Kłopoty z optymalizacją serwerów
  • Przegląd przydatnych narzędzi i bibliotek:
  • HttpUnit, JWebUnit, Grinder, Apache JMeter
  • Pokaz możliwości Apache JMeter
  • Optymalizacje kompilatora a microbenchmark
  • Microbenchmark a GC
  • Uruchamianie wielu aplikacji
  • Przyzwyczajenia programistów
  • Optymalizacja za kompilator
  • Przedwczesna optymalizacja
  • Antywzorze związane z wydajnością

Nasi eksperci

POLITYKA COOKIES:

Korzystamy z plików cookies, by móc jak najlepiej dostosować stronę do Twoich potrzeb oraz wyświetlać Ci przydatne i adekwatnych dla Ciebie reklamy w serwisie i poza nim. Możesz kontrolować ustawienia ciasteczek w swoich ustawieniach swojej przeglądarki. Odwiedzając tę stronę, wyrażasz zgodę na wykorzystywanie przez nas plików cookies.