Wydajność w języku Java
![](https://jsystems.pl/page_resources/images/logo/medium/java.jpg)
Najbliższe terminy tego szkolenia
Standardy JSystems
- Wszyscy nasi trenerzy muszą być praktykami i osiągać średnią z ankiet minimum 4.75 na 5. Nie ma wśród nas trenerów-teoretyków. Każdy trener JSystems ma bogate doświadczenie komercyjne w zakresie tematów z których prowadzi szkolenia.
- Wszystkie szkolenia mają format warszatowy. Każde zagadnienie teoretyczne jest poparte rzędem warsztatów w ściśle określonym formacie.
- Terminy gwarantowane na 100%. Jeśli jakiś termin jest oznaczony jako gwarantowany, oznacza to że odbędzie się nawet jeśli część grupy wycofa się z udziału. Ryzyko ponosimy my jako organizator.
- Do każdego szkolenia które wymaga jakiegokolwiek oprogramowania dostarczamy skonfigurowane, gotowe hosty w chmurze. Dzięki temu uczestnik nie musi nic instalować na swoim komputerze (i bić się z blokadami korporacyjnymi). Połączenie następuje przez zdalny pulpit lub SSH - w zależności od szkolenia.
Program szkolenia
- Jak tworzyć wydajne oprogramowanie
- Wydajność ma wymiary
- Nie tylko pomiar, czyli subiektywne odczuwanie wydajności
- Proces tworzenia wydajnego oprogramowania
- Czynniki wpływające na wydajność w Javie
- Techniki pomiaru wydajności
- Problemy
- Benchmarking w skali micro i macro
- Czym jest profilowanie
- Graficzne i tekstowe narzędzia do profilowania/monitoringu
- Praca z wybranymi narzędziami: JFR w JMC czy VisualVM, JConsole, MAT
- Wydajny odczyt i zapis plików
- Optymalizacja Serializacji
- Strumienie
- Swobodny dostęp i inne sztuczki
- NIO
- Kanały i bufory
- Odwzorowywanie plików w pamięci
- Przegląd NIO2
- Słów kilka o API dla XML
- Wydajność a algorytmy
- Złożoność obliczeniowa i jej pułapki
- Jak dobierać rozwiązania
- Kiedy rekurencja, a kiedy iteracja
- Uwzględnianie kontekstu użycia
- Kolekcje i tablice
- Jak dobrać, skonfigurować i wydajnie użyć
- Zbiory
- Listy
- Kolejki
- Mapy
- Stare kontenery z nowym API
- Widoki
- Klasa Collections a wydajność
- Przegląd kolekcji z java.util.concurrent
- Tablice i klasa Arrays
- Przegląd bibliotek kolekcji typów prostych
- JMH - microbenchmark Framework
- Dlaczego JMH
- Tworzenie, uruchamianie i analiza wyników
- Konfiguracja benchmarków
- Benchmarki wielowątkowe i parametryzowalne
- Blackhole jako alternatywa akumulacji
- Pułapki, profilery i inne tematy zaawansowane
- GC czyli zarządzanie pamięcią
- Jak działa i co gwarantuje Garbage Collector
- Od stworzenia do zniszczenia, czyli cykl życia obiektów
- Referencje soft, weak, phantom a odśmiecanie
- Wycieki pamięci - skąd i jak unikać
- Złe praktyki i jak je ograniczyć
- Słaba teoria generacji
- Obszary pamięci: young, eden, survival spaces, old/tenured, metaspace
- Rodzaje odśmiecania
- Podgląd GC na różnym poziomie szczegółowości
- Rodzaje GC: Epsilon, Serial, Parallel, Concurrent, G1, ZGC, Shenandoah
- Działanie, wybór i tuning GC
- Brak pauz w płatnym Zing
- JVM
- Podstawowe tryby pracy - co dziś zostało
- Podgląd, kontrola i strojenie JIT
- Zmniejszanie wpływu wyjątków na wydajność
- Tuningowanie JVM
- Opcje podglądu parametrów Javy
- Słów kilka o gotowych macrobenchmarkach
- Usprawnienia między wersjami Java
- Problemy optymalizacji
- Co przeszkadza mikrobenchmarkom
- Wiele JVM na tej samej maszynie
- Unikaj starych przyzwyczajeń
- Tego nie rób, czyli optymalizacja za kompilator
- Problemy przedwczesnej optymalizacji
- Antywzorze dotyczące wydajności
Opis szkolenia
Szkolenie odbywa się na żywo z udziałem trenera. Nie jest to forma kursu video!O szkoleniu w skrócie
Celem szkolenia jest diagnostyka, optymalizacja i wytwarzanie wydajnego oprogramowania w języku Java. Zakres dobrano tak, aby uczestnik mógł wykorzystać zdobyte doświadczenie niezależnie od bibliotek, kontenerów czy frameworków w projekcie. Poznajemy tajniki wydajności z użyciem narzędzi do monitoringu, benchmarkowania, profilowania. Uczymy się porównywania i doboru najlepszych rozwiązań, w tym wydajnego odczytu plików czy stosowania kolekcji odpowiednio do charakterystyki użycia. W świecie, gdzie wielu doświadczonych programistów nigdy nie próbowało lub źle "pomaga" Javie, obalamy mity dotyczące JVM, GC i odkrywamy tajniki ich tuningowania. Nauczysz się pisać wydajniejszy kod, diagnozować istniejące problemy, a nawet zwiększać wydajność bez dotykania kodu.
Dla kogo?
Dla programistów Java posiadających mocne podstawy tego języka.
Wymagania wstępne
Umiejętność programowania w języku Java
Prowadzący szkolenie: Michał Podbielski
Programista Java od 2004 roku, doświadczony w wielkich międzynarodowych projektach. Architekt oprogramowania i konsultant w zakresie architektury oprogramowania,
UML i BPMN rozwiązujący problemy klientów w złożonych i zróżnicowanych projektach. Przeprowadził w sumie ponad 390 szkoleń ze świetnymi wynikami w ankietach.
Prowadzi szkolenia z języka Java, architektury oprogramowania, UML i BPMN.
Gdy na jakiś termin zgłosi się minimalna liczba osób, termin oznaczamy jako gwarantowany.
Jeśli jakiś termin oznaczony jest jako gwarantowany to oznacza to, że na 100% się odbędzie we wskazanym czasie i miejscu.
Nawet gdyby część takiej grupy zrezygnowała lub przeniosła się na inny termin, raz ustalony termin gwarantowany takim pozostaje.
Ewentualne ryzyko ponosimy my jako organizator.
Przejdź do terminów tego szkolenia
![](https://jsystems.pl/page_resources/images/logo/medium/java.jpg)
Sprawdź, co mówią o nas ci, którzy nam zaufali
Trenerzy kategorii Java
![](https://jsystems.pl/new_page_resources/images/trainers/dzierzak.jpg)
![](https://jsystems.pl/new_page_resources/images/trainers/dzierzak.jpg)
![](https://jsystems.pl/new_page_resources/images/trainers/mydlarz.jpg)
![](https://jsystems.pl/new_page_resources/images/trainers/mydlarz.jpg)
![](https://jsystems.pl/new_page_resources/images/trainers/gellert.jpg)
![](https://jsystems.pl/new_page_resources/images/trainers/gellert.jpg)
![](https://jsystems.pl/new_page_resources/images/trainers/tomczyk.jpg)
![](https://jsystems.pl/new_page_resources/images/trainers/tomczyk.jpg)
![](https://jsystems.pl/new_page_resources/images/trainers/chrost.jpg)
![](https://jsystems.pl/new_page_resources/images/trainers/chrost.jpg)
Jestem programistą z ponad 15-letnim doświadczeniem. W trakcie swojej kariery kilka razy zmieniałem obszary, z którymi miałem do czynienia (poczynając od niskopoziomowego programowania w C, poprzez fullstackowe zabawy w RubyOnRails, aż do prawdziwego backendu w Javie). Odkąd pamiętam, zawsze lubiłem dzielić się wiedzą z innymi i sprawiało to satysfakcję obu stronom tego procesu. Dlatego naturalną konsekwencją było to, iż zostałem kilka lat temu profesjonalnym trenerem IT.
Prowadzenie szkoleń pozwala mi również na każdorazowe powtórzenie i ugruntowanie swojej wiedzy, co potem bardzo przydaje się w pracy projektowej. Natomiast to, co daje mi największe zadowolenie jako trenerowi, to sytuacja gdy uczeń przerośnie mistrza - wtedy wiem, że dałem z siebie wszystko, a moja praca przyniosła owoce.
![](https://jsystems.pl/new_page_resources/images/trainers/podbielski.png)
![](https://jsystems.pl/new_page_resources/images/trainers/podbielski.png)