Wydajność w Java
Tworzenie wydajnych aplikacji w Java
Kod szkolenia: JAVA-WYD
Szkolenie jest adresowane do programistów języka Java, którzy chcą poznać sekrety tworzenia wydajnego oprogramowania w tym języku.
Celem szkolenia jest obycie się z praktykami tworzenia wydajnego oprogramowania w Java, poprzez tworzenie benchmark’ów i badanie wydajności, profilowanie aplikacji, używanie struktur danych odpowiednich do trybu pracy, wydajny dostęp do plików i przede wszystkim obalenie błędnych mitów dotyczących pracy Garbage Collector’a. Wielu programistów Java posiadających nawet wieloletnie doświadczenie nie zdaje sobie sprawy z tego jakie grzechy popełnia próbując pomagać wirtualnej maszynie Java, czy Garbage Collector’owi, w rezultacie otrzymując efekt przeciwny do zamierzonego. To szkolenie obala te mity i uczy prawdziwych praktyk tworzenia wydajnego oprogramowania w Javie. A także jak zwiększyć wydajność aplikacji bez dotykania samego kodu, czyli profilowanie JVM i GC.
5 dni, po 8 godzin. Łącznie 40 godzin(y) szkolenia.
Oczekiwane przygotowanie słuchaczy przed szkoleniem
Od uczestników wymagana jest umiejętność programowania w języku Java.
Polecane szkolenia uzupełniające
Szkolenie poprzedzające - Programowanie w Java (JAVA-PRO).
Inne szkolenia zaawansowane:
wielowątkowość (JAVA-WAT), projektowanie (JAVA-WZO), architektura (JAVA-ARCH)
- Tworzenie wydajnego oprogramowania
- Różne wymiary wydajności
- Wydajność a użytkownik – subiektywne odczucie wydajności
- Proces tworzenia wydajnego oprogramowania
- Co wpływa na wydajność w Javie
- Pomiary wydajności
- Problemy ze zwiększaniem wydajności
- Co to jest Benchmarking
- Czym jest profilowanie aplikacji
- Wydajna praca z plikami
- Strumienie
- Swobodny dostęp do plików
- Lepsza wydajność – biblioteka NIO
- NIO2
- Serializacja
- Algorytm wydajności
- Sztuka doboru algorytmu
- Problemy z rekurencją
- Nie tylko algorytm się liczy
- Kolekcje i tablice
- API kolekcji
- Struktury danych – podstawy wydajnych operacji
- Zbiory
- Listy
- Kolejki
- Mapy
- Stare kontenery (Java 1.0 i 1.1)
- Widok kolekcji
- Collections - klasa pomocnicza
- Wydajność a kolekcje odporne na wielowątkowość
- Tablice
- JMH – microbenchmak framework
- Czym jest JMH
- @Benchmark
- Przygotowanie projektu JMH
- Uruchomienie JMH
- Wyniki benchmarków
- Dodatkowa konfiguracja benchmarków
- Współbieżność
- Benchmarki parametryzowalne
- Blackhole i bezpieczne pętle
- Pułapki
- Inne frameworki
- Informacje dodatkowe (opcjonalne)
- Zarządzanie pamięcią
- Java a zarządzanie pamięcią
- Typy referencji a Garbage Collector i proces odśmiecania
- Wycieki pamięci w Javie
- Garbage Collector - złe praktyki
- Ograniczanie zajętości pamięci
- Opcje strojenia Garbage Collector’a
- Maszyna wirtualna Javy
- Podstawowe tryby pracy a wydajność
- Parametry wydajnościowe JVM
- Przegląd wybranych macrobenchmarków
- Usprawnienia w Java
- Problemy z optymalizacją
- Optymalizacje kompilatora a micro-benchmark
- Micro-benchmark a GC
- Uruchamianie wielu aplikacji
- Przyzwyczajenia programistów
- Optymalizacja za kompilator
- Przedwczesna optymalizacja
- Antywzorze związane z wydajnością