JAVA. Uniwersalne techniki programowania. Rozdział 11-12

1 opinia

Format:

epub, mobi

RODZAJ DOSTĘPU

9,21  13,15

Format: epub, mobi

Cena początkowa: 13,15 zł (-30%)

Najniższa cena z 30 dni: 9,21 zł  


9,21

w tym VAT

Rozdziały 11-12 z publikacji pt. "JAVA. Uniwersalne techniki programowania", redakcja naukowa: Krzysztof Barteczko.
Rozdział 11. Wejście-wyjście
Rozdział 12. Programowanie współbieżne i równoległe.
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ń. Publikacja adresowana jest do czytelnika zorientowanego w podstawach programowania w języku Java, apragnącego rozwijać swoje umiejętności.


Rok wydania2015
KategoriaInne
WydawcaWydawnictwo Naukowe PWN
ISBN-13978-83-01-18916-7
Język publikacjipolski
Informacja o sprzedawcyePWN sp. z o.o.

Ciekawe propozycje

Spis treści

  Wstęp     9
  
  1. 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
RozwińZwiń