reklama - zainteresowany?

Java. Podej - Helion

Java. Podej
ebook
Autor: Ben Weidig
Tytuł oryginału: A Functional Approach to Java: Augmenting Object-Oriented Java Code with Functional Principles
TÅ‚umaczenie: Lech Lachowski
ISBN: 978-83-289-0652-5
stron: 352, Format: ebook
Księgarnia: Helion

Cena książki: 87,00 zł

Książka będzie dostępna od stycznia 2024

Tagi: Java - Programowanie

Aby napisa

Spis treści

Java. Podejście funkcyjne. Rozszerzanie obiektowego kodu Javy o zasady programowania funkcyjnego eBook -- spis treści

Przedmowa

Część I. Podstawy programowania funkcyjnego

  • 1. Wprowadzenie do programowania funkcyjnego
    • Co sprawia, że jÄ™zyk jest funkcyjny?
    • Koncepcje programowania funkcyjnego
      • Funkcje czyste i transparentność referencyjna
      • Niemutowalność
      • Rekurencja
      • Typy pierwszoklasowe i funkcje wyższego rzÄ™du
      • Kompozycja funkcyjna
      • Rozwijanie funkcji
      • Częściowe zastosowanie funkcji
      • Ewaluacja leniwa
    • Zalety programowania funkcyjnego
    • Wady programowania funkcyjnego
    • Podsumowanie
  • 2. Funkcyjna Java
    • Czym sÄ… wyrażenia lambda Javy?
      • SkÅ‚adnia wyrażeÅ„ lambda
      • Interfejsy funkcyjne
      • Wyrażenia lambda i zmienne zewnÄ™trzne
      • A co z klasami anonimowymi?
      • Instrukcja invokedynamic
    • Wyrażenia lambda w dziaÅ‚aniu
      • Tworzenie wyrażeÅ„ lambda
      • WywoÅ‚ywanie wyrażeÅ„ lambda
      • OdwoÅ‚ywanie siÄ™ do metod
    • Koncepcje programowania funkcyjnego w Javie
      • Funkcje czyste i transparentność referencyjna
      • Niemutowalność
      • Typy pierwszoklasowe
      • Kompozycja funkcyjna
      • Ewaluacja leniwa
    • Podsumowanie
  • 3. Interfejsy funkcyjne pakietu JDK
    • Cztery gÅ‚ówne kategorie interfejsów funkcyjnych
      • Funkcje
      • Konsumenty
      • Dostawcy
      • Predykaty
    • Dlaczego jest tak wiele wariantów interfejsu funkcyjnego?
      • Argumentowość funkcji
      • Typy proste
      • WypeÅ‚nianie luki miÄ™dzy interfejsami funkcyjnymi
    • Kompozycja funkcyjna
    • Rozszerzanie wsparcia funkcyjnego
      • Dodawanie metod domyÅ›lnych
      • BezpoÅ›rednie implementowanie interfejsu funkcyjnego
      • Tworzenie statycznych metod pomocniczych
    • Podsumowanie

Część II. Podejście funkcyjne

  • 4. Niemutowalność
    • Mutowalność i struktury danych w OOP
    • Niemutowalność (nie tylko) w programowaniu funkcyjnym
    • Stan niemutowalnoÅ›ci Javy
      • java.lang.String
      • Niemutowalne kolekcje
      • Typy proste i obiektowe typy opakowujÄ…ce
      • Niemutowalna matematyka
      • Java Time API (JSR-310)
      • Typy wyliczeniowe
      • SÅ‚owo kluczowe final
      • Rekordy
    • Jak osiÄ…gnąć niemutowalność?
    • Powszechne praktyki
    • Podsumowanie
  • 5. Praca z rekordami
    • Typy agregacji danych
      • Krotki
      • Prosty POJO
      • Od POJO do niemutowalnoÅ›ci
      • Od POJO do rekordu
    • Rekordy na ratunek
      • Mechanizmy wewnÄ™trzne
      • FunkcjonalnoÅ›ci rekordu
      • BrakujÄ…ce funkcjonalnoÅ›ci
    • Przypadki użycia i powszechne praktyki
      • Walidacja rekordów i oczyszczanie danych
      • ZwiÄ™kszanie poziomu niemutowalnoÅ›ci
      • Tworzenie zmodyfikowanych kopii
      • Rekordy jako lokalne krotki nominalne
      • Lepsza obsÅ‚uga opcjonalnych danych
      • Serializowanie ewoluujÄ…cych rekordów
      • Dopasowywanie wzorców rekordów (od Javy 19)
    • Jeszcze kilka sÅ‚ów na temat rekordów
    • Podsumowanie
  • 6. Przetwarzanie danych za pomocÄ… strumieni
    • Przetwarzanie danych za pomocÄ… iteracji
      • Iteracja zewnÄ™trzna
      • Iteracja wewnÄ™trzna
    • Strumienie jako funkcyjne potoki danych
      • FunkcjonalnoÅ›ci strumieni
      • Spliterator, krÄ™gosÅ‚up strumieni
    • Budowanie potoków strumieniowych
      • Tworzenie strumienia
      • Wykonywanie pracy
      • KoÅ„czenie strumienia
      • Koszt operacji
      • Modyfikowanie zachowania strumienia
    • Używać strumienia czy nie?
    • Podsumowanie
  • 7. Praca ze strumieniami
    • Strumieniowe typy proste
    • Strumienie iteracyjne
    • Strumienie nieskoÅ„czone
      • Liczby losowe
      • Pamięć nie jest nieskoÅ„czona
    • Od tablic do strumieni i z powrotem
      • Tablice typu obiektowego
      • Tablicowe typy proste
    • Niskopoziomowe tworzenie strumieni
    • Praca z operacjami we-wy plików
      • Odczytywanie zawartoÅ›ci katalogów
      • Przechodzenie katalogów w gÅ‚Ä…b
      • Przeszukiwanie systemu plików
      • Odczytywanie plików linia po linii
      • Zastrzeżenia dotyczÄ…ce strumieni z operacjami we-wy plików
    • ObsÅ‚uga daty i czasu
      • Kwerendowanie typów czasowych
      • Strumienie z zakresem LocalDate
    • Pomiar wydajnoÅ›ci strumienia za pomocÄ… narzÄ™dzia JMH
    • Kolektory
      • Kolektory downstreamowe
      • Tworzenie wÅ‚asnego kolektora
    • Jeszcze kilka sÅ‚ów na temat strumieni (sekwencyjnych)
    • Podsumowanie
  • 8. RównolegÅ‚e przetwarzanie danych za pomocÄ… strumieni
    • WspóÅ‚bieżność a równolegÅ‚ość
    • Strumienie jako równolegÅ‚e potoki funkcyjne
    • Strumienie równolegÅ‚e w akcji
    • Kiedy używać, a kiedy unikać strumieni równolegÅ‚ych?
      • Wybór odpowiedniego źródÅ‚a danych
      • Liczba elementów
      • Operacje strumieniowe
      • Koszty ogólne strumienia i dostÄ™pne zasoby
      • PrzykÅ‚ad - jeszcze raz Wojna i pokój
      • PrzykÅ‚ad - liczby losowe
    • Lista kontrolna dla strumieni równolegÅ‚ych
    • Podsumowanie
  • 9. ObsÅ‚uga wartoÅ›ci null za pomocÄ… typów Optional
    • Problem z zerowymi referencjami
    • Jak obsÅ‚ugiwać wartość null w Javie (przed wprowadzeniem Optional)?
      • Najlepsze praktyki w zakresie obsÅ‚ugi wartoÅ›ci null
      • Kontrole null z użyciem narzÄ™dzi
      • Typy wyspecjalizowane, takie jak Optional
    • Typy opcyjne na ratunek
      • Czym jest Optional?
      • Tworzenie potoków opcyjnych
    • Opcje i strumienie
      • Typy opcyjne jako elementy strumienia
      • Operacje terminalne strumieni
    • Opcyjne typy proste
    • Zastrzeżenia
      • Opcje sÄ… zwykÅ‚ymi typami
      • Metody uwzglÄ™dniajÄ…ce tożsamość
      • Narzut zwiÄ…zany z wydajnoÅ›ciÄ…
      • Szczególne kwestie dotyczÄ…ce kolekcji
      • Opcje i serializacja
    • Jeszcze kilka sÅ‚ów na temat referencji null
    • Podsumowanie
  • 10. ObsÅ‚uga wyjÄ…tków funkcyjnych
    • ObsÅ‚uga wyjÄ…tków Javy w piguÅ‚ce
    • Blok try-catch
      • Różne rodzaje wyjÄ…tków i bÅ‚Ä™dów
    • WyjÄ…tki sprawdzane w wyrażeniach lambda
      • WyodrÄ™bnianie kodu do postaci bezpiecznych metod
      • Anulowanie sprawdzania wyjÄ…tków
      • Sneaky throws
    • Funkcyjne podejÅ›cie do wyjÄ…tków
      • Nierzucanie wyjÄ…tków
      • BÅ‚Ä™dy jako wartoÅ›ci
      • Wzorzec Próba, Powodzenie, Niepowodzenie
    • Jeszcze kilka sÅ‚ów na temat funkcyjnej obsÅ‚ugi wyjÄ…tków
    • Podsumowanie
  • 11. Ewaluacja leniwa
    • Porównanie leniwoÅ›ci i gorliwoÅ›ci
    • Jak gorliwa jest Java?
      • Ewaluacja minimalna
      • Struktury sterowania
      • Leniwe typy pakietu JDK
    • Wyrażenia lambda i funkcje wyższego rzÄ™du
      • PodejÅ›cie gorliwe
      • PodejÅ›cie bardziej leniwe
      • PodejÅ›cie funkcyjne
    • Opóźnianie wykonywania za pomocÄ… typu Thunk
      • Tworzenie prostego typu Thunk
      • Thunk bezpieczny dla wÄ…tków
    • Jeszcze kilka sÅ‚ów na temat leniwoÅ›ci
    • Podsumowanie
  • 12. Rekurencja
    • Czym jest rekurencja?
      • Porównanie rekurencji gÅ‚owowej i ogonowej
      • Rekurencja i stos wywoÅ‚aÅ„
    • Bardziej zÅ‚ożony przykÅ‚ad
      • Iteracyjne przechodzenie drzewa
      • Rekurencyjne przechodzenie drzewa
    • Strumienie rekurencyjne
    • Jeszcze kilka sÅ‚ów na temat rekurencji
    • Podsumowanie
  • 13. Zadania asynchroniczne
    • Porównanie zadaÅ„ synchronicznych i asynchronicznych
    • Typy Future Javy
    • Projektowanie potoków asynchronicznych przy użyciu typu CompletableFuture
      • Obiecywanie wartoÅ›ci
      • Tworzenie instancji CompletableFuture
      • Komponowanie i Å‚Ä…czenie zadaÅ„
      • ObsÅ‚uga wyjÄ…tków
      • Operacje terminalne
      • Tworzenie metody pomocniczej CompletableFuture
    • RÄ™czne tworzenie i rozwiÄ…zywanie
      • RÄ™czne tworzenie
      • RÄ™czne rozwiÄ…zywanie
      • Przypadki użycia dla rÄ™cznie utworzonych i ukoÅ„czonych instancji
    • Pule wÄ…tków i limity czasu
    • Jeszcze kilka sÅ‚ów na temat zadaÅ„ asynchronicznych
    • Podsumowanie
  • 14. Funkcyjne wzorce projektowe
    • Czym sÄ… wzorce projektowe?
    • (Funkcyjne) wzorce projektowe
      • Wzorzec Metoda Wytwórcza
      • Wzorzec Dekorator
      • Wzorzec Strategia
      • Wzorzec Budowniczy
    • Jeszcze kilka sÅ‚ów na temat funkcyjnych wzorców projektowych
    • Podsumowanie
  • 15. Funkcyjne podejÅ›cie do Javy
    • Porównanie zasad OOP i FP
    • Funkcyjny sposób myÅ›lenia
      • Funkcje sÄ… typami pierwszoklasowymi
      • Unikanie skutków ubocznych
      • Funkcyjne przetwarzanie danych za pomocÄ… mapowania, filtrowania i redukcji
      • Implementacje opierajÄ… siÄ™ na abstrakcjach
      • Budowanie funkcyjnych pomostów
      • UÅ‚atwienie równolegÅ‚oÅ›ci i wspóÅ‚bieżnoÅ›ci
      • Uwaga na potencjalny narzut
    • Architektura funkcyjna w Å›wiecie imperatywnym
      • Od obiektów do wartoÅ›ci
      • Separacja zagadnieÅ„
      • Różne rozmiary FC/IS
      • Testowanie FC/IS
    • Jeszcze kilka sÅ‚ów na temat funkcyjnego podejÅ›cia do Javy
    • Podsumowanie

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.