Kod: JVA-074
Czas trwania: 36 godzin
Czas trwania: 36 godzin
Opis szkolenia
W naszym kursie przyjrzymy się współczesnym funkcjonalnym i reaktywnym podejściom do programowania w Javie (w celu zwiększenia wydajności backendu). Szkolenie obejmuje takie tematy, jak non-blocking input/output NIO2, asynchroniczne obietnice CompletableFuture, reaktywne biblioteki programowania RxJava i Reactor, asynchroniczny interfejs dostępu DB R2DBC i inne. Zawiera również protokół przesyłania strumieniowego SSE, reaktywne repozytoria Spring Data, protokoły WebClient, WebSocket i RSocket, a także praktyczne przykłady.Plan szkolenia
Funkcjonalna Java- Funkcjonalne interfejsy
- Odniesienia do metod
- Strumienie danych
- Mapuj / filtruj / zmniejszaj
- Funkcje agregujące
- Ograniczenie przetwarzania równoległego i sekwencyjnego
- Łączenie konsumentów
- Kolektory strumieniowe
Framework wykonawczy. Fork Join pool
- Korzystanie z executorów
- Przyszły interfejs
- Korzystanie z interfejsu wywoływalnego
- Anulowanie zadań
- Framework ForkJoin
- Tworzenie puli i zadań ForkJoin
- Strumienie równoległe w Javie 8+
- ForkJoin, strumienie równoległe a testy porównawcze sekwencyjne
Nieblokujące wejście / wyjście
- Główne różnice między Java NIO i IO
- Kanał NIO a strumień
- Zorientowany na strumień a zorientowany na bufor
- Blocking vs. Non-blocking IO
- Bufor Java NIO
- Kanał Java NIO
- Bufor bezpośredni
- Mapowany bufor plików
- Selektor Java NIO
- Asynchroniczne I/O z NIO
- Blokada pliku
- Gotowy do produkcji serwer NIO
- Architektura serwera Netty
Asynchroniczna Java (Completable Future)
- Problemy z kodem synchronicznym
- Architektura NodeJS
- Przetwarzanie przepływu danych równolegle
- CompletableFuture sync i async
- Łączenie, komponowanie i szybsze metody wygrywania
- Obsługa wyjątków w CompletableFuture
- Anulowanie CompletableFuture
- Korzystanie z CompletableFuture do przepływu danych w prawdziwym użyciu
Programowanie reaktywne
- Co to jest reaktywność?
- Podstawy RxJava: obserwator i obserwowalny
- Strumienie reaktywne Java 9
- Metody efektów ubocznych
- Obsługa błędów
- Gorące oraz zimne obserwable
- Udostępnione i możliwe do podłączenia obserwable
- Usuwanie obserwabli
- Operatorzy reaktywni (pełny katalog)
- Tematy
- Współbieżność RxJava (harmonogramy)
- Przeciwciśnienie i płyny
- Testowanie strumieni reaktywnych
Projekt Reaktor
- Zależności Reactor Maven
- Operatory Flux / Mono Reactor
- Obsługa przeciwciśnienia za pomocą urządzenia Reactor
- Osoby planujące reaktory
- Strumień równoległy
- Zawijanie synchronicznych wywołań blokujących
- Testowanie z Reactor
- Procesory reaktorowe
Spring WebFlux i praktyczne programowanie reaktywne
- Dostęp reaktywny do DB
- Reaktywne sterowniki R2DBC
- Repozytorium reaktywne Spring Data
- Obsługa paginacji
- WebFlux: funkcjonalne kontrolery
- Sterowniki Spring REST zwracające wyniki reaktywne (Mono / Flux)
- Kontrolery Spring REST zwracające SSE
- WebClient: pobieranie reaktywnych danych z serwera
- Protokoły SSE i WebSocket
- Używanie protokołu WebSocket do przekazywania / pobierania danych JSON
- Używanie protokołu WebSocket do przekazywania / pobierania danych binarnych
- Protokół RSocket
- Kontroler RSocket: po stronie serwera
- Klient RSocket z JSON i wymianą danych binarnych
- RSocket z równoważeniem obciążenia
- RSocket z ważonym równoważeniem obciążenia
- Używanie strumieni reaktywnych z brokerem komunikatów (RabbitMQ)
- Repozytorium Spring Data MongoDB
- Testy porównawcze reaktywne: R2DBC vs JDBC i WebFlux vs Web MVC
- Architektura i wzorce programowania reaktywnego
Cele
- Przedstawienie wprowadzenia do nowoczesnego programowania asynchronicznego i reaktywnego
- Przykłady wykorzystania nowoczesnego programowania asynchronicznego i reaktywnego
Grupa docelowa
- Programiści Java
- Architekci Java
Wymagania
- Dobra znajomość języka Java (pożądana znajomość Springa)