Zaawansowane aspekty języka Java
Szkolenie obejmuje zaawansowane programowanie we współczesnym wydaniu języka Java z naciskiem na optymalizację.
2150 PLN+23% VAT (2644 PLN brutto / 1 os.)Czas trwania szkolenia:2 dni (16h)
Kod kursu:J/EXT
Zaawansowane aspekty języka Java
Cele szkolenia
Nabycie umiejętności zaawansowanego programowania w Javie z uwzględnieniem nowości wprowadzanych do języka
Poznanie niuansów języka Java i ich wpływ na wydajność napisanego kodu
Zastosowanie technik i standardowo dostępnych narzędzi dla osiągnięcia jeszcze bardziej wydajnej aplikacji końcowej
Dla kogo?
Osób, które chcą poznać język Java na wyższym poziomie oraz dowiedzieć się, jakie są możliwości optymalizacji działania aplikacji z wykorzystaniem dostępnych narzędzi, i technik programistycznych
Zalety
Przekrojowe omawianie zagadnień oraz przykłady oparte o życiowe problemy
Promowanie obowiązujących konwencji i dobrych praktyk programistycznych
Minimalna teoria oparta na praktycznych przykładach i warsztatach
Praktyczna wiedza uwzględniająca zmiany wprowadzone w najnowszych wydaniach Javy
Wymagania
Podstawowa umiejętność programowania w języku Java
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program
Zaawansowane aspekty praktycznego użycia Javy
Zasady tworzenia własnych adnotacji i ich procesowanie z wykorzystaniem refleksji
Typy generyczne z operatorami extend / super / &
Typy wyliczeniowe jako obiekty typu Singleton lub fabryki obiektów
Wprowadzenie do typów zapieczętowanych (sealed types) i ich praktyczne zastosowanie
(Opcjonalnie) Interpolacja Stringów oraz praktyczne tworzenie własnych implementacji String Template
Programowanie funkcyjne w Javie
Zasady programowania funkcyjnego jako podstawa współczesnego programowania
Lambdy i interfejsy funkcyjne
Typowe błędy w tworzeniu typów niemutowalnych w Javie
Rekordy a ich zastosowanie w programowaniu funkcyjnym
Pattern matching z wykorzystaniem konstrukcji if / switch oraz typów zapieczętowanych
Typowe błędy podczas używania typów Optional / Stream
Prymitywne odpowiedniki strumieniu i interfejsów funkcyjnych
NIO a funkcyjność
Budowanie zaawansowanego procesowania danych z wykorzystaniem strumieni i złożonych kolektorów
Obiektowe wzorce projektowe a programowanie funkcyjne
Optymalizacja obliczeń
Wołanie natywnych aplikacji z wykorzystaniem Process API oraz Foreign Linker API
Optymalizowanie procesowania Stringów w różnych praktycznych scenariuszach
Vector API jako alternatywa dla bezpośredniego paralelizmu
Wirtualne wątki
Porównanie wątków fizycznych i wirtualnych
Potencjalne problemy w używaniu wirtualnych wątków
Structured Concurrency - nowe spojrzenie na programowanie asynchroniczne w Javie
Popularne frameworki a wirtualne wątki
Modularność Javy (JPMS)
Wprowadzenie do JPMS
Problemy we wprowadzaniu modułów do istniej ących aplikacji
Budowanie własnych, zoptymalizowanych obrazów JVM
Budowanie modularnych aplikacji z wykorzystaniem serwisów
Rozszerzenia Języka Java z wykorzystaniem popularnych bibliotek (Opcjonalnie)
Lombok - zastosowanie zaawansowanych adnotacje @ExtensionMethod, @SuperBuilder, @Accessors
MapStruct - wykorzystanie jako konstruktor kopiujący / deep cloning
Jackson / Gson - nietypowe przypadki związane z serializacją obiektów do formatu JSON