Nowoczesne receptury w Javie. Proste rozwiązania trudnych problemów - ebook
Nowoczesne receptury w Javie. Proste rozwiązania trudnych problemów - ebook
Java "od zawsze" była klasyką programowania obiektowego. Wprowadzenie do tego języka elementów programowania funkcyjnego, takich jak wyrażenia lambda, referencje do metod czy strumienie, całkowicie odmieniło technikę pracy. Wielu programistów stanęło przed koniecznością szybkiego nadrobienia zaległości. Ten wysiłek jest opłacalny, gdyż nowy model programowania Javy ma wiele zalet. Podejście funkcyjne sprawia, że pisany kod jest prostszy i czytelniejszy, łatwiejsze też się staje uzyskanie współbieżności. Projektanci pracujący ze starszymi wersjami Javy muszą po prostu postarać się zrozumieć, jak nowe funkcyjne idiomy zmieniły sposób pisania kodu źródłowego.
Trzymasz w ręku książkę, która ułatwi Ci to zadanie. Znajdziesz tu niemal kompletny opis Javy SE 8 i informację o planowanych nowościach w Javie 9. Poszczególne zagadnienia zostały wyjaśnione i zilustrowane praktycznymi, szczegółowo omówionymi recepturami. W ten sposób pokazano, jak najnowsze elementy Javy ułatwiają proste rozwiązywanie dość złożonych problemów. Poza zaprezentowaniem kluczowych koncepcji, takich jak wyrażenia lambda czy pojęcie interfejsu funkcyjnego, omówiono i bardziej problematyczne zagadnienia: typ Optional, strumienie wejścia i wyjścia, pakiet java.time czy współbieżność i równoległość. Nie zabrakło oczywiście licznych, łatwych do przeanalizowania i zrozumienia przykładów kodu.
W tej książce między innymi:
- Podstawowe pojęcia programowania funkcyjnego
- Sortowanie strumieni danych
- Lenistwo, odroczone wykonywanie i kompozycje domknięć
- Mapowanie i mapowanie płaskie
- Programowanie funkcyjne a praca z plikami i katalogami
- Możliwości Javy 9, w tym Jigsaw, metody prywatne interfejsów, kolektory, strumienie dat
Java to nowoczesność, prostota i elegancja rozwiązań!
Dr Kenneth Kousen jest doświadczonym programistą i szkoleniowcem. Kieruje własną firmą i prowadzi techniczne kursy na temat Javy, Androida, Spring, Hibernate, Groovy i Grails. Regularnie występuje podczas cyklicznej konferencji No Fluff, Just Stuff, która dotyczy technicznych aspektów programowania w Javie. Kousen uzyskał szereg certyfikatów technicznych i ukończył kilka kierunków studiów. Od czasu do czasu wykłada na politechnice Rensselaer w Hartford.
Spis treści
Wstęp (9)
Wprowadzenie (11)
- Nowoczesna Java (11)
- Adresaci książki (12)
- Struktura książki (12)
- Konwencje typograficzne (14)
- Przykłady kodu (15)
- Podziękowania (15)
1. Podstawy (17)
- 1.1 Wyrażenia lambda (18)
- 1.2 Referencje do metod (21)
- 1.3 Referencje do konstruktorów (25)
- 1.4 Interfejsy funkcyjne (29)
- 1.5 Domyślne metody w interfejsach (31)
- 1.6 Statyczne metody w interfejsach (34)
2. Pakiet java.util.function (37)
- 2.1 Konsumenty (37)
- 2.2 Dostawcy (40)
- 2.3 Predykaty (42)
- 2.4 Funkcje (46)
3. Strumienie (49)
- 3.1 Tworzenie strumieni (49)
- 3.2 Strumienie w opakowaniach (53)
- 3.3 Redukowanie wartości przy użyciu metody reduce (55)
- 3.4 Sprawdzanie poprawności sortowania przy użyciu metody reduce (63)
- 3.5 Debugowanie strumieni przy użyciu metody peek (64)
- 3.6 Konwertowanie łańcuchów na strumienie i z powrotem (66)
- 3.7 Liczenie elementów (69)
- 3.8 Zestawienia statystyczne (71)
- 3.9 Znajdowanie pierwszego elementu w strumieniu (74)
- 3.10 Sposoby użycia metod anyMatch, allMatch i noneMatch (78)
- 3.11 Strumienie i słowniki (80)
- 3.12 Łączenie strumieni (83)
- 3.13 Leniwe strumienie (86)
4. Komparatory i kolektory (89)
- 4.1 Sortowanie przy użyciu komparatora (89)
- 4.2 Konwertowanie strumienia na kolekcję (92)
- 4.3 Dodawanie liniowej kolekcji do słownika (95)
- 4.4 Sortowanie słowników (97)
- 4.5 Dzielenie i grupowanie (100)
- 4.6 Kolektory strumieniowe (102)
- 4.7 Znajdowanie najmniejszej i największej wartości (104)
- 4.8 Tworzenie niezmiennych kolekcji (106)
- 4.9 Implementowanie interfejsu Collector (108)
5. Różne zastosowania strumieni, lambd i referencji do metod (113)
- 5.1 Klasa java.util.Objects (113)
- 5.2 Wyrażenia lambda i finalność (115)
- 5.3 Strumienie liczb losowych (118)
- 5.4 Domyślne metody w interfejsie Map (119)
- 5.5 Konflikty metod domyślnych (123)
- 5.6 Iteracyjne przeglądanie kolekcji i słowników (125)
- 5.7 Zapisywanie dziennika przy użyciu dostawcy (128)
- 5.8 Łączenie domknięć (130)
- 5.9 Obsługa wyjątków za pomocą wydzielonej metody (133)
- 5.10 Wyjątki kontrolowane i wyrażenia lambda (135)
- 5.11 Generyczne opakowanie wyjątków (137)
6. Typ Optional (141)
- 6.1 Tworzenie obiektu klasy Optional (142)
- 6.2 Pobieranie wartości z obiektów typu Optional (144)
- 6.3 Typ Optional w metodach dostępowych (147)
- 6.4 Klasa Optional oraz metody map i ?atMap (148)
- 6.5 Mapowanie obiektów Optional (152)
7. Plikowe wejście i wyjście (155)
- 7.1 Przetwarzanie plików (156)
- 7.2 Pobieranie plików jako strumienia (158)
- 7.3 Przeglądanie systemu plików (159)
- 7.4 Przeszukiwanie systemu plików (161)
8. Pakiet java.time (163)
- 8.1 Sposób użycia podstawowych klas biblioteki dat i godzin (164)
- 8.2 Tworzenie dat i godzin z istniejących obiektów (167)
- 8.3 Regulatory i zapytania (171)
- 8.4 Konwersja z java.util.Date na java.time.LocalDate (176)
- 8.5 Parsowanie i formatowanie (179)
- 8.6 Znajdowanie stref czasowych z nietypowymi przesunięciami (181)
- 8.7 Znajdowanie nazw regionów po przesunięciach (183)
- 8.8 Czas dzielący wydarzenia (186)
9. Równoległość i współbieżność (189)
- 9.1 Konwertowanie strumieni sekwencyjnych na równoległe (190)
- 9.2 Kiedy zrównoleglenie jest warte zachodu? (193)
- 9.3 Zmienianie rozmiaru puli (197)
- 9.4 Interfejs Future (199)
- 9.5 Kończenie CompletableFuture (202)
- 9.6 Koordynacja obiektów CompletableFuture ? część I (206)
- 9.7 Koordynacja obiektów CompletableFuture ? część II (211)
10. Nowości w Javie 9 (217)
- 10.1 Moduły w Jigsaw (218)
- 10.2 Metody prywatne w interfejsach (222)
- 10.3 Tworzenie niezmiennych kolekcji (223)
- 10.4 Stream: metody ofNullable, iterate, takeWhile i dropWhile (227)
- 10.5 Kolektory strumieniowe: metody filtering i ?atMapping (230)
- 10.6 Optional: metody stream, or i ifPresentOrElse (233)
- 10.7 Przedziały dat (236)
A. Typy generyczne i Java 8 (239)
- Podstawowe wiadomości (239)
- Co wszyscy wiedzą? (239)
- Z czego niektórzy programiści nie zdają sobie sprawy? (242)
- Symbole wieloznaczne i PECS (243)
- Przykłady z API Javy 8 (247)
- Podsumowanie (254)
Skorowidz (255)
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-4074-9 |
Rozmiar pliku: | 3,2 MB |