Spring WebFlux: Programowanie reaktywne w Javie z wykorzystaniem frameworka Spring
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
- 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.
Stanowisko robocze
Do tego szkolenia każdy uczestnik otrzymuje dostęp do indywidualnej wirtualnej maszyny w chmurze. Ma ona zainstalowane i skonfigurowane wszystko co potrzebne do realizacji szkolenia. Maszyna będzie dostępna przez cały okres szkolenia.
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.