- -5%
ebook JAVA. Uniwersalne techniki programowania
Krzysztof Barteczko
Wydawca:
Wydawnictwo Naukowe PWN
Rok wydania:
2015
Książka przedstawia sposoby i techniki programowania użyteczne we wszelkich zastosowaniach języka Java. W publikacji akcentowany jest kontekst praktyczny: jak i do czego poszczególnych narzędzi językowych używać. Specjalna uwaga zwracana jest na nowe elementy języka, dostępne w wersjach 8 i 9. Rozbudowane rozdziały o kolekcjach, wejściu-wyjściu, programowaniu współbieżnym i dynamicznym stanowią swoiste kompendia, które dają nie tylko orientację co do zestawu dostępnych środków programowania, ale również omawiają ważne szczegóły i niuanse ich zastosowań. Zakłada się, że czytelnik ma orientację w podstawach programowania w języku Java, ale niekoniecznie musi być zaawansowanym programistą. Dlatego ważne bloki tematyczne (takie jak np. programowanie obiektowe i funkcyjne w Javie) omawiane są od podstaw. D
o interesujących szczegółowych tematów poruszanych w książce należą: - definiowanie metod w interfejsach (w tym metod prywatnych, poczynając od Javy w wersji 9), - lambda-wyrażenia i przetwarzanie strumieniowe, - obiekty typu Optional jako monady oraz ich użycie, - spliteratory, - zadania typu CountedCompleter jako kontynuacje oraz ich zastosowania, - zadania typu CompletableFuture (dostępne od Javy 8) i ich praktyczne użycie, - wyspecjalizowane synchronizatory, w tym - nowe w Javie 8 - obiekty typu StampedLock, - zastosowanie refleksji oraz uchwytów metod (MethodHandle), - tworzenie dynamicznych klas i obiektów typu proxy, - zastosowania JavaBeans i delegacyjnego modelu obsługi zdarzeń zmian ich właściwości, - definiowanie i przetwarzanie adnotacji (w tym definiowanie procesorów adnotacji), - użycie skryptów z poziomu aplikacji Javy.
o interesujących szczegółowych tematów poruszanych w książce należą: - definiowanie metod w interfejsach (w tym metod prywatnych, poczynając od Javy w wersji 9), - lambda-wyrażenia i przetwarzanie strumieniowe, - obiekty typu Optional jako monady oraz ich użycie, - spliteratory, - zadania typu CountedCompleter jako kontynuacje oraz ich zastosowania, - zadania typu CompletableFuture (dostępne od Javy 8) i ich praktyczne użycie, - wyspecjalizowane synchronizatory, w tym - nowe w Javie 8 - obiekty typu StampedLock, - zastosowanie refleksji oraz uchwytów metod (MethodHandle), - tworzenie dynamicznych klas i obiektów typu proxy, - zastosowania JavaBeans i delegacyjnego modelu obsługi zdarzeń zmian ich właściwości, - definiowanie i przetwarzanie adnotacji (w tym definiowanie procesorów adnotacji), - użycie skryptów z poziomu aplikacji Javy.
Spis treści ebooka JAVA. Uniwersalne techniki programowania
Wstęp 91. Klasy 13
1.1. Abstrakcja i hermetyzacja 15
1.2. Enumeracje 17
1.3. Definiowanie klas 22
1.4. Wykorzystanie składowych statycznych 25
1.5. Przeciążanie metod i konstruktorów 26
1.6. Klasy i obiekty niezmienne 27
1.7. Inicjowanie 28
1.8. Singletony 35
1.9. Klasy opakowujące typy proste 36
2. Ponowne wykorzystanie klas 41
2.1. Dziedziczenie 43
2.2. Konwersje referencyjne 48
2.3. Stwierdzanie typu 50
2.4. Dziedziczenie w Javie 52
2.5. Przedefiniowanie metod 52
2.6. Kowariancja typów wyników 56
2.7. Przedefiniowanie metod w wyliczeniach 57
2.8. Przedefiniowanie a wyjątki 58
2.9. Przedefiniowanie a przeciążanie, przesłanianie i pokrywanie 59
2.10. Adnotacja @override 60
2.11. Metody wirtualne i polimorfizm 62
2.12. Kompozycja 67
2.13. Kompozycja a dziedziczenie 68
2.14. Reguły ponownego wykorzystania klas 71
3. Wyjątki 73
3.1. Obsługa wyjątków 75
3.2. Zgłaszanie wyjątków 83
3.3. Ponowne zgłaszanie wyjątków 85
3.4. Niskopoziomowe przyczyny i łańcuchowanie wyjątków 90
3.5. Wykorzystanie informacji o śladzie stosu 91
4. Interfejsy i klasy wewnętrzne 93
4.1. Metody i klasy abstrakcyjne 95
4.2. Pojęcie interfejsu 97
4.3. Problem wielodziedziczenia 97
4.4. Definiowanie i implementowanie interfejsów 99
4.5. Interfejsy jako typy danych 102
4.6. Implementacja metod w interfejsach 106
4.7. Mixiny 107
4.8. Właściwości metod domyślnych 108
4.9. Prywatne metody w interfejsach 111
4.10. Pojęcie klasy wewnętrznej 113
4.11. Przykładowe zastosowanie klasy wewnętrznej 114
4.12. Anonimowe klasy wewnętrzne 117
4.13. Lokalne klasy wewnętrzne 119
5. Typy i metody sparametryzowane (generics) 123
5.1. Definiowanie typów sparametryzowanych. Typy surowe i czyszczenie typów 125
5.2. Ograniczenia parametrów typu 128
5.3. Restrykcje 129
5.4. Metody sparametryzowane 131
5.5. Uniwersalne argumenty typu 131
6. Elementy programowania funkcyjnego w Javie 8. Przegląd pragmatyczny 137
6.1. O programowaniu funkcyjnym 139
6.2. Interfejsy na pomoc 140
6.3. Lambda-wyrażenia: pierwsze spotkanie 141
6.4. O gotowych interfejsach funkcyjnych 144
6.5. O przetwarzaniu strumieniowym 145
7. Lambda-wyrażenia 149
7.1. Interfejsy funkcyjne i lambda-wyrażenia 151
7.2. Składnia i cechy lambda-wyrażeń 152
7.3. Referencje do metod i konstruktorów 158
7.4. Gotowe interfejsy funkcyjne 161
7.5. Interfejsy z pakietu java.util.function a wyjątki kontrolowane 169
7.6. Lambda-wyrażenia i obiekty typu Optional 172
8. Proste narzędzia 177
8.1. Analiza składniowa tekstów i wyrażenia regularne 179
8.2. Uproszczenia stosowania wyrażeń regularnych w klasach String i Scanner 191
8.3. Działania na liczbach 199
8.4. Daty i czas 204
8.4.1. Tradycyjna klasa Calendar i operacje na datach 204
8.4.2. Daty i czas w Javie 8 – elementy nowego API 210
8.5. Formatowanie liczb i dat 217
8.6. Metody tablicowe 222
9. Kolekcje 225
9.1. Architektura kolekcji (JCF). Interfejsy i implementacje 227
9.2. Programowanie w kategoriach interfejsów 231
9.3. Ogólne operacje na kolekcjach 233
9.4. Operacje opcjonalne oraz wyjątki zgłaszane przez metody kolekcyjne 234
9.5. Przekształcanie kolekcji. Kolekcje z tablic 235
9.6. Przykłady ogólnych operacji na kolekcjach 237
9.7. Iterowanie po kolekcjach 243
9.7.1. Tradycyjny iterator i rozszerzone for 243
9.7.2. Iteracje wewnętrzne 247
9.7.3. Spliteratory 249
9.7.4. Konkurencyjne modyfikacje 256
9.8. Listy 258
9.8.1. Podstawowe implementacje i operacje 258
9.8.2. Szczególne implementacje list: niuanse metody Arrays.asList(...) 264
9.8.3. Iteratory listowe 267
9.8.4. Przykłady operacji na listach 269
9.9. Kolejki 273
9.10. Zbiory typu HashSet, metody hashCode() i equals() 276
9.11. Porównywanie i porządkowanie elementów kolekcji 283
9.12. Zbiory uporządkowane i nawigowalne 291
9.13. Mapy 293
9.13.1. Wprowadzenie 293
9.13.2. Implementacje i interfejsy. Ogólne operacje na mapach 296
9.13.3. Iterowanie po mapach 301
9.13.4. Użycie domyślnych metod interfejsu Map 304
9.13.5. Sortowanie map 307
9.14. Algorytmy, widoki, fabrykatory kolekcji 313
9.15. Własne implementacje kolekcji 316
10. Przetwarzanie strumieniowe 317
10.1. Pojęcie strumienia. Rodzaje i cechy operacji strumieniowych 319
10.2. Uzyskiwanie strumieni 321
10.3. Przegląd operacji na strumieniach 322
10.4. Filtrowanie i leniwość strumieni 325
10.5. Metoda forEach dla strumieni 326
10.6. Sortowanie strumieni 327
10.7. Redukcja 328
10.8. Proste kolektory 329
10.9. Kolektory budujące mapy 330
10.10. Generatory 332
10.11. Strumienie równoległe 334
10.12. Przykłady innych użytecznych metod 336
11. Wejście-wyjście 339
11.1. Programowanie wejścia-wyjścia: obraz ogólny 341
11.2. Abstrakcyjne strumienie wejścia-wyjścia. Operacje elementarne 342
11.3. Strumieniowe klasy przedmiotowe 346
11.4. Instrukcja try-with-resources. Automatyczne zarządzanie zasobami a obsługa tłumionych wyjątków 349
11.5. Strumieniowe klasy przetwarzające – przegląd 356
11.6. Buforowanie 359
11.7. Binarne strumienie wejścia-wyjścia 360
11.8. Kodowanie-dekodowanie przy użyciu strumieni wejścia-wyjścia 362
11.9. Serializacja obiektów 364
11.10. Potoki 369
11.11. Analiza składniowa strumieni – StreamTokenizer 371
11.12. Obiekty plikowe i klasa File 373
11.13. Wygodne metody klasy java.nio.fi le.Files 374
11.14. Skaner 378
11.15. Przeglądanie katalogów 381
11.16. Archiwa 390
11.17. Pliki o dostępie swobodnym 397
11.18. Nowe wejście-wyjście (NIO): przegląd 398
11.19. NIO: bufory 401
11.20. NIO: kanały i bufory. Kanały plikowe 406
11.21. Widoki buforów bajtowych 410
11.22. NIO: bufory – uporządkowanie bajtów (endianess) 414
11.23. NIO: bufory znakowe. Kodowanie i dekodowanie 416
11.24. NIO: operacje kanałowe na wielu buforach (scattering i gathering) 418
11.25. NIO: mapowanie plików 420
11.26. NIO: bezpośrednie transfery kanałowe 424
12. Programowanie współbieżne i równoległe 425
12.1. Procesy i wątki 427
12.2. Uruchamianie równoległych działań. Tworzenie wątków 428
12.3. Zadania i wykonawcy 432
12.4. Zamykanie wykonawców. Oczekiwanie na zakończenie zadań i serwis kompletacji (CompletionService) 439
12.5. Zadania powtarzalne, opóźnione i okresowe 444
12.6. Wykonawcy a pule wątków 449
12.7. ForkJoinPool i zadania rekursywne 452
12.8. Kompletery typu CountedCompleter 463
12.9. CountedCompleter jako kontynuacja 469
12.10. Kiedy i jak używać zadań typu ForkJoinTask? Praktyczny przykład użycia kompleterów 473
12.11. Zadania kompletowalne (CompletableFuture) 478
12.12. Przerywanie zadań z zewnątrz i kończenie pracy wątków 491
12.13. Synchronizacja 498
12.14. Synchronizacja za pomocą jawnego ryglowania 507
12.15. Rygle do odczytu i zapisu: ReentrantReadWriteLock i StampedLock 510
12.16. Synchronizatory wyższego poziomu 514
12.17. Unikanie synchronizacji: struktura kodu, volatile, atomiki i konkurencyjne kolekcje 519
12.18. Koordynacja pracy wątków – mechanizm wait-notify 526
12.19. Koordynacja: warunki 532
13. Dynamiczna Java 535
13.1. Mechanizm refleksji 537
13.2. Uchwyty metod 543
13.3. Znaczenie refleksji – praktyczne przykłady 551
13.4. Refleksja a generics 558
13.5. Dynamiczne klasy proxy 562
13.6. JavaBeans 568
13.6.1. Koncepcja JavaBeans 568
13.6.2. Nasłuch i wetowanie zmian właściwości za pomocą obsługi zdarzeń 569
13.6.3. Introspekcja 575
13.7. Adnotacje 576
13.7.1. Istota adnotacji i sposoby ich definiowana 576
13.7.2. Przetwarzanie adnotacji w fazie wykonania 580
13.7.3. Przetwarzanie adnotacji w fazie kompilacji. Transformowanie kodu bajtowego 582
13.8. Skrypty w Javie 589
14. Lokalizacja i internacjonalizacja aplikacji 595
14.1. Lokalizacje 597
14.2. Jeszcze trochę o formatorach liczbowych 602
14.3. Waluty 603
14.4. Strefy czasowe 604
14.5. Kalendarze i zlokalizowane daty 606
14.6. Porównywanie i sortowanie napisów 607
14.7. Internacjonalizacja aplikacji i dodatkowe zasoby (resource bundle) 608
Literatura 614
Szczegóły ebooka JAVA. Uniwersalne techniki programowania
- Wydawca:
- Wydawnictwo Naukowe PWN
- Rok wydania:
- 2015
- Typ publikacji:
- Ebook
- Język:
- polski
- Format:
- epub,mobi
- ISBN:
- 978-83-01-18480-3
- ISBN wersji papierowej:
- 978-83-01-18341-7
- Wydanie:
- 1
- Autorzy:
- Krzysztof Barteczko
- Miejsce wydania:
- Warszawa
- Liczba Stron:
- 614
Recenzje ebooka JAVA. Uniwersalne techniki programowania
-
Reviews (0)
Na jakich urządzeniach mogę czytać ebooki?
Na czytnikach Kindle, PocketBook, Kobo i innych
Na komputerach stacjonarnych i laptopach
Na telefonach z systemem ANDROID lub iOS
Na wszystkich urządzeniach obsługujących format plików PDF, Mobi, EPub
- -5%
-5%
79,00 zł
75,15 zł
@CUSTOMER_NAME@
@COMMENT_TITLE@
@COMMENT_COMMENT@