Spring WebFlux: Programowanie reaktywne w Javie z wykorzystaniem frameworka Spring

Najbliższe terminy tego szkolenia
Skuteczność
Program szkolenia
- Wstęp do programowania reaktywnego
- Definicja tego czym jest programowanie reaktywne
- Powody wprowadzenia podejścia reaktywnego
- marnowanie zasobów
- problemy ze skalowalnością
- Demo - porównanie działania aplikacji napisanej w sposób zwykły i reaktywny
- Kiedy nie stosować podejścia reaktywnego
- Reactive Streams jako specyfikacja programowania reaktywnego
- Składowe specyfikacji (kod, testy, specyfikacja tekstowa)
- Interfejsy
- Publisher - nadawca elementów
- Subscriber - odbiorca elementów
- Subscription - połączenie między nadawcą i odbiorcą
- Przebieg subskrypcji (rozpoczęcie, żądanie elementów, zakończenie)
- Backpressure i nieograniczona subskrypcja
- Przegląd zaawansowanych reguł dotyczących subskrypcji
- Podstawy frameworka Reactor
- Ogólne cechy frameworka
- Mono i Flux jako podstawowe klasy
- Marble diagrams
- Flux - strumień wielu elementów
- Tworzenie z gotowych elementów
- Tworzenie programowe
- Mono - strumień jednoelementowy
- Subskrypcja do strumieni
- Poprzez callbacki
- Poprzez BaseSubscriber
- Anulowanie subskrypcji
- Operatory
- Ogólne działanie operatora
- wpięcie w łańcuch subskrypcji
- upstream, downstream
- Mapowanie
- synchroniczne ( map() )
- asynchroniczne ( flatMap() , concatMap() )
- Filtrowanie ( filter() , take() , skip() )
- Redukowanie ( reduce() )
- Łączenie strumieni
- tych samych typów ( merge() , concat() )
- różnych typów ( zip() )
- Zależności czasowe
- opóźnianie elementów ( delayElements() )
- uruchamianie strumienia po zakończeniu poprzedniego ( then() )
- Tworzenie własnych operatorów ( transform() )
- Jak wybrać potrzebny operator - porady praktyczne
- Ogólne działanie operatora
- Obsługa błędów
- Sygnał błędu zamiast rzucania wyjątku
- Błąd podczas subskrypcji
- Zastąpienie sygnału błędu
- Za pomocą elementu
- Za pomocą sekwencji
- Przemapowanie błędu
- Dodatkowa akcja przy wystąpieniu błędu
- Resubskrypcja do strumienia
- Testowanie
- Przedstawienie testowych klas pomocniczych oferowanych przez Reactor
- StepVerifier - weryfikacja emisji danych przez strumień
- Tworzenie
- Nakładanie asercji
- Uruchamianie testu
- Użycie wirtualnego czasu
- TestPublisher - możliwość manipulacji emisją danych do strumienia
- Tworzenie
- Emitowanie danych
- Debugowanie
- Analiza callstacka rzucanego przez Reactor
- Włączanie trybu debugowania
- Jako globalny hook
- Jako Java Agent
- Checkpointy
- Logowanie zachowania strumienia za pomocą operatora log()
- Reactor a wielowątkowość
- Scheduler jako abstrakcja wyboru wątku
- Predefiniowane i customowe schedulery
- Zmiana wątku emisji elementów - operator publishOn()
- Zmiana wątku tworzenia elementów - operator subscribeOn()
- Równoległe przetwarzanie danych w strumieniu
- Typowe pułapki programowania reaktywnego
- Brak subskrypcji
- Operacje wykonane przed subskrypcją
- Blokujące operacje w operatorach
- Nadmiar operatorów
- Ręczne tworzenie strumieni
- Framework Spring - podejście reaktywne
- Ogólny opis stosu reaktywnego w Springu
- Reaktywny serwer HTTP - WebFlux
- Podejście adnotacyjne
- Podejście funkcyjne
- Technika SSE (Server-Sent-Events)
- WebSockets
- Reaktywny klient HTTP - WebClient
- Tworzenie i użycie
- Łączenie kilku operacji
- Warsztat - implementacja gry MasterMind w podejściu reaktywnym z wykorzystaniem Springa
- Przedstawienie wymagań, ogólnego zarysu architektury i dostarczonych narzędzi
- Implementacja części serwerowej
- Implementacja części klienckiej
Opis szkolenia
Szkolenie odbywa się na żywo z udziałem trenera. Nie jest to forma kursu video!O skoleniu w skrócie
Szkolenie przeznaczone jest głównie dla dwóch kategorii uczestników:
- osób mających doświadczenie w programowaniu w Javie oraz Springu i chcących się nauczyć w sposób praktyczny programowania reaktywnego z użyciem ww. narzędzi
- osób, które mają już praktyczne doświadczenie w programowaniu reaktywnym, ale odczuwają potrzebę lepszego zapoznania się z teorią (lub jej ugruntowania)
Prowadzący szkolenie: Marcin Chrost
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.

Sprawdź, co mówią o nas ci, którzy nam zaufali
Trenerzy kategorii Java










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.