Wydajność w języku Java
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
Sprawdź, co mówią o nas ci, którzy nam zaufali
Trenerzy kategorii Java
Programista i projektant z 13-letnim doświadczeniem, specjalizujący się w Javie i full-stack development. Pracował nad dużymi projektami korporacyjnymi w sektorach fintech oraz insurtech, zdobywając bogate doświadczenie w tworzeniu systemów rozproszonych oraz integracji opartej o API i zdarzenia.
Jako specjalista w dziedzinie Java i architektury oprogramowania, zajmował się również strategicznym rozwojem kompetencji technicznych w organizacji, będąc aktywnym rekruterem technicznym, trenerem oraz mentorem. Pasjonat współpracy z ekspertami domenowymi i klientami, z zamiłowaniem do prostoty i czytelności, z zainteresowaniem Domain Driven Design (DDD) oraz innymi podejściami inżynierii oprogramowania zorientowanymi na domenę biznesową.
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.