Programowanie funkcyjne w Javie
Opis
Język Java zasłynął jako obiektowy język programowania. W ciągu ostatnich kilku wersji, aby wzbogacić możliwości języka, nadać mu większej zwięzłości i ekspresyjności, zaczęto wprowadzać elementy programowania funkcyjnego. Niniejsze szkolenie sprawi, iż Twoje programowanie przeniesie się na wyższy poziom i zobaczysz z jaką łatwością można się zastąpić wiele problematycznych konstrukcji z klasycznej Javy, konstrukcjami funkcyjnymi.
Podstawowy program
Moduł. 1
Wprowadzenie do programowania funkcyjnego
Moduł. 2
Budowa interfejsów
Moduł. 3
Wyrażenia lambda
Moduł. 4
Myślenie funkcyjne
Moduł. 5
Strumienie danych (Stream API)
Moduł. 7
Programowanie funkcyjne z Vavr.io
Szczegółowy program
Moduł. 1
Wprowadzenie do programowania funkcyjnego
- Czym jest programowanie funkcyjne?
- Programowanie funkcyjne a inne paradygmaty programowania
- Zakres wsparcia programowania funkcyjnego w Javie
Moduł. 2
Budowa interfejsów
- Interfejsy z jedną metodą abstrakcyjną i ich implementacja
- Metody domyślne
- Metody statyczne
- Rozwiązywanie konfliktów w interfejsach
- Przykładowe metody statyczna i domyślne w Java API
- Pakiet java.util.function
- Consumer
- Supplier
- Function
- UnaryOperator i BinaryOperator
Moduł. 3
Wyrażenia lambda
- Czym są wyrażenia lambda?
- Składnia lambda w języku Java
- Referencje do metod i konstruktorów
- Przykłady użycia wyrażeń lambda w zastosowaniu do realnych problemów
Moduł. 4
Myślenie funkcyjne
- Klasyczna obiektowość a programowanie funkcyjne
- Wzorce GoF a programowanie funkcyjne
- Funkcyjne wzorce projektowe
- Type-Driven Development
Moduł. 5
Strumienie danych (Stream API)
- Czym są strumienie danych?
- Tworzenie i przetwarzanie strumieni
- Interfejs java.util.Stream
- Strumienie obiektowe i „prymitywne”
- Mapowanie i filtrowanie
- Operacje redukcyjne (map-reduce)
- Zbieranie danych z list i zbiorów
- Zbieranie danych ze złożonych struktur danych
- Implementacja komparatorów z użyciem lambd
- Optymalizacje
Moduł. 6
Klasa Optional
- Tworzenie wyników opcjonalnych
- Optional w warstwie dostępu do danych
- Metody typu Optional
Moduł. 7
Programowanie funkcyjne z Vavr.io
- Funkcyjne struktury danych - tuples, linked list, queue, sorted set
- Stan w kolekcjach (Seq/Set/Map)
- Funkcje - composition/lifting/partials/currying/memoization
- Option
- Try
- Lazy
- Either
- Future
- Validation
- Funkcyjne podejście do obsługi błędów Optional/Try/Either
- Pattern Matching