Details zum E-Book

Java. Techniki zaawansowane. Wydanie XI

Java. Techniki zaawansowane. Wydanie XI

Cay S. Horstmann

E-book

Java jest dojrzałym językiem programowania, który pozwala na pisanie kodu dla wielu rodzajów komputerów służących do różnych celów i działających na różnych platformach. Jest świetnym wyborem dla programistów, którym zależy na tworzeniu bezpiecznych aplikacji o wyjątkowej jakości. Wokół Javy skupia się duża społeczność, dzięki której język ten wciąż się rozwija, unowocześnia i wzbogaca o nowe elementy. Osoby, które swoje zawodowe życie wiążą z pisaniem programów w Javie, muszą poznać zaawansowane zagadnienia i mniej oczywiste funkcjonalności Javy, również te niedawno zaimplementowane. To konieczność dla każdego profesjonalnego programisty Javy.

Oto kolejne, przejrzane, zaktualizowane i uzupełnione wydanie znakomitego podręcznika dla zawodowych programistów Javy. Znalazł się tu dokładny opis sposobów tworzenia interfejsu użytkownika, stosowania rozwiązań korporacyjnych, sieciowych i zabezpieczeń, a także nowości wprowadzonych w JDK 11. Przedstawiono techniki programowania baz danych oraz umiędzynarodowiania aplikacji Javy. Sporo uwagi poświęcono bibliotece Swing oraz jej wykorzystaniu do tworzenia realistycznej grafiki i efektów specjalnych. Ponadto w książce zostały pokazane nowe możliwości języka - zademonstrowano, jak dzięki nim uzyskać wyjątkową jakość aplikacji, a zamieszczone przykłady opracowano pod kątem zrozumiałości i wartości praktycznej.

W tej książce między innymi:

  • API wejścia-wyjścia Javy, serializacja i wyrażenia regularne
  • efektywne korzystanie z usług sieciowych
  • klienty, serwery i pobieranie danych z internetu
  • moduły platformy Javy
  • nowoczesne mechanizmy bezpieczeństwa w Javie

Java: nowoczesny styl, najlepsze praktyki, sprawdzone rozwiązania!


Wstęp 11

Podziękowania 15

Rozdział 1. Strumienie 17

  • 1.1. Od iteracji do operacji na strumieniach 18
  • 1.2. Tworzenie strumieni 20
  • 1.3. Metody filter, map oraz flatMap 26
  • 1.4. Pobieranie podstrumieni i łączenie strumieni 27
  • 1.5. Inne przekształcenia strumieni 29
  • 1.6. Proste operacje redukcji 30
  • 1.7. Typ Optional 32
    • 1.7.1. Pobieranie wartości Optional 32
    • 1.7.2. Korzystanie z wartości Optional 33
    • 1.7.3. Potoki wartości opcjonalnych 33
    • 1.7.4. Jak nie należy używać wartości opcjonalnych 35
    • 1.7.5. Tworzenie obiektów typu Optional 36
    • 1.7.6. Łączenie funkcji zwracających wartości opcjonalne przy użyciu flatMap 36
    • 1.7.7. Przekształcanie wartości opcjonalnej w strumień 37
  • 1.8. Gromadzenie wyników 40
  • 1.9. Gromadzenie wyników w mapach 44
  • 1.10. Grupowanie i podział 48
  • 1.11. Kolektory przetwarzające 50
  • 1.12. Operacje redukcji 54
  • 1.13. Strumienie danych typów prostych 57
  • 1.14. Strumienie równoległe 62

Rozdział 2. Wejście i wyjście 67

  • 2.1. Strumienie wejścia-wyjścia 67
    • 2.1.1. Odczyt i zapis bajtów 68
    • 2.1.2. Zoo pełne strumieni 71
    • 2.1.3. Łączenie filtrów strumieni wejścia-wyjścia 74
    • 2.1.4. Strumienie tekstowe 78
    • 2.1.5. Zapisywanie tekstu 79
    • 2.1.6. Wczytywanie tekstu 81
    • 2.1.7. Zapis obiektów w formacie tekstowym 82
    • 2.1.8. Zbiory znaków 85
  • 2.2. Odczyt i zapis danych binarnych 88
    • 2.2.1. Interfejsy DataInput i DataOutput 88
    • 2.2.2. Strumienie plików o swobodnym dostępie 90
    • 2.2.3. Archiwa ZIP 94
  • 2.3. Strumienie obiektów i serializacja 97
    • 2.3.1. Zapisywanie i wczytywanie obiektów serializowalnych 97
    • 2.3.2. Format pliku serializacji obiektów 101
    • 2.3.3. Modyfikowanie domyślnego mechanizmu serializacji 107
    • 2.3.4. Serializacja singletonów i wyliczeń 109
    • 2.3.5. Wersje 110
    • 2.3.6. Serializacja w roli klonowania 113
  • 2.4. Zarządzanie plikami 115
    • 2.4.1. Ścieżki dostępu 115
    • 2.4.2. Odczyt i zapis plików 118
    • 2.4.3. Tworzenie plików i katalogów 119
    • 2.4.4. Kopiowanie, przenoszenie i usuwanie plików 120
    • 2.4.5. Informacje o plikach 122
    • 2.4.6. Przeglądanie zawartości katalogu 124
    • 2.4.7. Stosowanie strumieni katalogów 125
    • 2.4.8. Systemy plików ZIP 129
  • 2.5. Mapowanie plików w pamięci 130
    • 2.5.1. Wydajność plików mapowanych w pamięci 130
    • 2.5.2. Struktura bufora danych 136
  • 2.6. Blokowanie plików 138
  • 2.7. Wyrażenia regularne 140
    • 2.7.1. Składnia wyrażeń regularnych 141
    • 2.7.2. Dopasowywanie wyrażeń regularnych do łańcucha 145
    • 2.7.3. Znajdowanie wielu dopasowań 148
    • 2.7.4. Podział w miejscach wystąpienia separatora 150
    • 2.7.5. Zastępowanie dopasowań 150

Rozdział 3. Język XML 155

  • 3.1. Wprowadzenie do języka XML 156
  • 3.2. Struktura dokumentu XML 158
  • 3.3. Parsowanie dokumentów XML 160
  • 3.4. Kontrola poprawności dokumentów XML 169
    • 3.4.1. Definicje typów dokumentów 170
    • 3.4.2. XML Schema 178
    • 3.4.3. Praktyczny przykład 180
  • 3.5. Wyszukiwanie informacji i XPath 186
  • 3.6. Przestrzenie nazw 190
  • 3.7. Parsery strumieniowe 193
    • 3.7.1. Wykorzystanie parsera SAX 193
    • 3.7.2. Wykorzystanie parsera StAX 198
  • 3.8. Tworzenie dokumentów XML 202
    • 3.8.1. Dokumenty bez przestrzeni nazw 202
    • 3.8.2. Dokumenty z przestrzenią nazw 203
    • 3.8.3. Zapisywanie dokumentu 203
    • 3.8.4. Zapis dokumentu XML za pomocą parsera StAX 206
    • 3.8.5. Przykład: tworzenie pliku SVG 210
  • 3.9. Przekształcenia XSL 212

Rozdział 4. Programowanie aplikacji sieciowych 221

  • 4.1. Połączenia z serwerem 221
    • 4.1.1. Stosowanie programu telnet 221
    • 4.1.2. Nawiązywanie połączenia z serwerem z wykorzystaniem Javy 224
    • 4.1.3. Limity czasu gniazd 225
    • 4.1.4. Adresy internetowe 227
  • 4.2. Implementacja serwerów 228
    • 4.2.1. Gniazda serwera 229
    • 4.2.2. Obsługa wielu klientów 231
    • 4.2.3. Połączenia częściowo zamknięte 235
    • 4.2.4. Przerywanie działania gniazd sieciowych 236
  • 4.3. Połączenia wykorzystujące URL 242
    • 4.3.1. URL i URI 242
    • 4.3.2. Zastosowanie klasy URLConnection do pobierania informacji 244
    • 4.3.3. Wysyłanie danych do formularzy 251
  • 4.4. Klient HTTP 259
  • 4.5. Wysyłanie poczty elektronicznej 266

Rozdział 5. Programowanie baz danych: JDBC 271

  • 5.1. Architektura JDBC 272
    • 5.1.1. Typy sterowników JDBC 272
    • 5.1.2. Typowe zastosowania JDBC 274
  • 5.2. Język SQL 274
  • 5.3. Instalacja JDBC 280
    • 5.3.1. Adresy URL baz danych 280
    • 5.3.2. Pliki JAR zawierające sterownik 281
    • 5.3.3. Uruchamianie baz danych 281
    • 5.3.4. Rejestracja klasy sterownika 282
    • 5.3.5. Nawiązywanie połączenia z bazą danych 283
  • 5.4. Stosowanie poleceń SQL 285
    • 5.4.1. Wykonywanie poleceń SQL 285
    • 5.4.2. Zarządzanie połączeniami, poleceniami i zbiorami wyników 289
    • 5.4.3. Analiza wyjątków SQL 289
    • 5.4.4. Wypełnianie bazy danych 292
  • 5.5. Wykonywanie zapytań 295
    • 5.5.1. Polecenia przygotowane 296
    • 5.5.2. Odczyt i zapis dużych obiektów 301
    • 5.5.3. Sekwencje sterujące 303
    • 5.5.4. Zapytania o wielu zbiorach wyników 305
    • 5.5.5. Pobieranie wartości kluczy wygenerowanych automatycznie 306
  • 5.6. Przewijalne i aktualizowalne zbiory wyników zapytań 306
    • 5.6.1. Przewijalne zbiory wyników 307
    • 5.6.2. Aktualizowalne zbiory rekordów 309
  • 5.7. Zbiory rekordów 313
    • 5.7.1. Tworzenie zbiorów rekordów 313
    • 5.7.2. Buforowane zbiory rekordów 314
  • 5.8. Metadane 317
  • 5.9. Transakcje 326
    • 5.9.1. Programowanie transakcji w JDBC 326
    • 5.9.2. Punkty kontrolne 327
    • 5.9.3. Aktualizacje wsadowe 327
    • 5.9.4. Zaawansowane typy języka SQL 330
  • 5.10. Zaawansowane zarządzanie połączeniami 331

Rozdział 6. API dat i czasu 333

  • 6.1. Oś czasu 334
  • 6.2. Daty lokalne 338
  • 6.3. Modyfikatory dat 343
  • 6.4. Czas lokalny 344
  • 6.5. Czas strefowy 346
  • 6.6. Formatowanie i parsowanie 351
  • 6.7. Współdziałanie ze starym kodem 355

Rozdział 7. Internacjonalizacja 357

  • 7.1. Lokalizatory 358
    • 7.1.1. Dlaczego stosuje się lokalizatory? 358
    • 7.1.2. Określanie lokalizatorów 359
    • 7.1.3. Lokalizator domyślny 361
    • 7.1.4. Nazwa lokalizatora 362
  • 7.2. Formaty liczb 364
    • 7.2.1. Formatowanie wartości liczbowych 364
    • 7.2.2. Waluty 369
  • 7.3. Data i czas 371
  • 7.4. Porządek alfabetyczny i normalizacja 377
  • 7.5. Formatowanie komunikatów 384
    • 7.5.1. Formatowanie liczb i dat 384
    • 7.5.2. Formatowanie z wariantami 386
  • 7.6. Wczytywanie i wyświetlanie tekstów 388
    • 7.6.1. Pliki tekstowe 388
    • 7.6.2. Znaki końca wiersza 388
    • 7.6.3. Konsola 389
    • 7.6.4. Pliki dzienników 390
    • 7.6.5. BOM - znacznik kolejności bajtów UTF-8 390
    • 7.6.6. Kodowanie plików źródłowych 391
  • 7.7. Komplety zasobów 391
    • 7.7.1. Wyszukiwanie kompletów zasobów 392
    • 7.7.2. Pliki właściwości 393
    • 7.7.3. Klasy kompletów zasobów 393
  • 7.8. Kompletny przykład 396

Rozdział 8. Skrypty, kompilacja i adnotacje 411

  • 8.1. Skrypty na platformie Java 411
    • 8.1.1. Wybór silnika skryptów 412
    • 8.1.2. Wykonywanie skryptów i wiązania zmiennych 413
    • 8.1.3. Przekierowanie wejścia i wyjścia 415
    • 8.1.4. Wywoływanie funkcji i metod skryptów 416
    • 8.1.5. Kompilacja skryptu 418
    • 8.1.6. Przykład: skrypty i graficzny interfejs użytkownika 418
  • 8.2. Interfejs kompilatora 423
    • 8.2.1. Wywoływanie kompilatora 423
    • 8.2.2. Uruchamianie zadania kompilacji 424
    • 8.2.3. Przechwytywanie informacji diagnostycznych 425
    • 8.2.4. Wczytywanie plików źródłowych z pamięci 425
    • 8.2.5. Zapis kodów bajtowych w pamięci 426
    • 8.2.6. Przykład: dynamiczne tworzenie kodu w języku Java 427
  • 8.3. Stosowanie adnotacji 433
    • 8.3.1. Wprowadzenie do stosowania adnotacji 434
    • 8.3.2. Przykład: adnotacje obsługi zdarzeń 435
  • 8.4. Składnia adnotacji 440
    • 8.4.1. Interfejsy adnotacji 440
    • 8.4.2. Adnotacje 441
    • 8.4.3. Adnotacje deklaracji 443
    • 8.4.4. Adnotacje zastosowań typów 444
    • 8.4.5. Adnotacje i this 445
  • 8.5. Adnotacje standardowe 447
    • 8.5.1. Adnotacje kompilacji 448
    • 8.5.2. Adnotacje zarządzania zasobami 448
    • 8.5.3. Metaadnotacje 449
  • 8.6. Przetwarzanie adnotacji w kodzie źródłowym 452
    • 8.6.1. Procesory adnotacji 452
    • 8.6.2. Interfejs programowy modelu języka 452
    • 8.6.3. Stosowanie adnotacji do generacji kodu źródłowego 453
  • 8.7. Inżynieria kodu bajtowego 456
    • 8.7.1. Modyfikowanie plików klasowych 456
    • 8.7.2. Modyfikacja kodu bajtowego podczas ładowania 461

Rozdział 9. System modułów platformy Javy 465

  • 9.1. Pojęcie modułu 466
  • 9.2. Nadawanie nazw modułom 467
  • 9.3. Modularny program "Witaj, świecie!" 468
  • 9.4. Żądanie użycia modułów 470
  • 9.5. Eksportowanie pakietów 471
  • 9.6. Modularne pliki JAR 475
  • 9.7. Moduły a technika refleksji 476
  • 9.8. Moduły automatyczne 479
  • 9.9. Moduł nienazwany 481
  • 9.10. Flagi wiersza poleceń stosowane podczas migracji 482
  • 9.11. Wymagania przechodnie i statyczne 484
  • 9.12. Eksport kwalifikowany i otwieranie 485
  • 9.13. Wczytywanie usług 486
  • 9.14. Narzędzia do pracy z modułami 489

Rozdział 10. Bezpieczeństwo 493

  • 10.1. Ładowanie klas 494
    • 10.1.1. Proces wczytywania plików klas 494
    • 10.1.2. Hierarchia klas ładowania 495
    • 10.1.3. Zastosowanie procedur ładujących w roli przestrzeni nazw 497
    • 10.1.4. Implementacja własnej procedury ładującej 498
    • 10.1.5. Weryfikacja kodu maszyny wirtualnej 504
  • 10.2. Menedżery bezpieczeństwa i pozwolenia 508
    • 10.2.1. Sprawdzanie uprawnień 508
    • 10.2.2. Bezpieczeństwo na platformie Java 509
    • 10.2.3. Pliki polityki bezpieczeństwa 512
    • 10.2.4. Tworzenie własnych klas pozwoleń 519
    • 10.2.5. Implementacja klasy pozwoleń 520
  • 10.3. Uwierzytelnianie użytkowników 526
    • 10.3.1. Framework JAAS 526
    • 10.3.2. Moduły JAAS 531
  • 10.4. Podpis cyfrowy 540
    • 10.4.1. Skróty wiadomości 541
    • 10.4.2. Podpisywanie wiadomości 544
    • 10.4.3. Weryfikacja podpisu 546
    • 10.4.4. Problem uwierzytelniania 548
    • 10.4.5. Podpisywanie certyfikatów 550
    • 10.4.6. Żądania certyfikatu 551
    • 10.4.7. Podpisywanie kodu 552
  • 10.5. Szyfrowanie 555
    • 10.5.1. Szyfrowanie symetryczne 555
    • 10.5.2. Generowanie klucza 557
    • 10.5.3. Strumienie szyfrujące 561
    • 10.5.4. Szyfrowanie kluczem publicznym 562

Rozdział 11. Zaawansowane możliwości pakietu Swing i grafiki 567

  • 11.1. Tabele 567
    • 11.1.1. Najprostsze tabele 568
    • 11.1.2. Modele tabel 571
    • 11.1.3. Wiersze i kolumny 575
    • 11.1.4. Rysowanie i edycja komórek 590
  • 11.2. Drzewa 601
    • 11.2.1. Proste drzewa 602
    • 11.2.2. Przeglądanie węzłów 616
    • 11.2.3. Rysowanie węzłów 618
    • 11.2.4. Nasłuchiwanie zdarzeń w drzewach 621
    • 11.2.5. Własne modele drzew 627
  • 11.3. Zaawansowane możliwości biblioteki AWT 635
    • 11.3.1. Potokowe tworzenie grafiki 635
    • 11.3.2. Figury 638
    • 11.3.3. Pola 652
    • 11.3.4. Ślad pędzla 653
    • 11.3.5. Wypełnienia 661
    • 11.3.6. Przekształcenia układu współrzędnych 663
    • 11.3.7. Przycinanie 668
    • 11.3.8. Przezroczystość i składanie obrazów 670
  • 11.4. Grafika rastrowa 678
    • 11.4.1. Odczyt i zapis plików graficznych 678
    • 11.4.2. Operacje na obrazach 688
  • 11.5. Drukowanie 703
    • 11.5.1. Drukowanie grafiki 703
    • 11.5.2. Drukowanie wielu stron 711
    • 11.5.3. Usługi drukowania 720
    • 11.5.4. Usługi drukowania za pośrednictwem strumieni 722
    • 11.5.5. Atrybuty drukowania 725

Rozdział 12. Metody macierzyste 733

  • 12.1. Wywołania funkcji języka C z programów w języku Java 734
  • 12.2. Numeryczne parametry metod i wartości zwracane 740
  • 12.3. Łańcuchy znaków jako parametry 742
  • 12.4. Dostęp do składowych obiektu 747
    • 12.4.1. Dostęp do pól instancji 747
    • 12.4.2. Dostęp do pól statycznych 751
  • 12.5. Sygnatury 752
  • 12.6. Wywoływanie metod języka Java 754
    • 12.6.1. Wywoływanie metod obiektów 754
    • 12.6.2. Wywoływanie metod statycznych 757
    • 12.6.3. Konstruktory 758
    • 12.6.4. Alternatywne sposoby wywoływania metod 758
  • 12.7. Dostęp do elementów tablic 760
  • 12.8. Obsługa błędów 764
  • 12.9. Interfejs programowy wywołań języka Java 768
  • 12.10. Kompletny przykład: dostęp do rejestru systemu Windows 773
    • 12.10.1. Rejestr systemu Windows 773
    • 12.10.2. Interfejs dostępu do rejestru na platformie Java 775
    • 12.10.3. Implementacja dostępu do rejestru za pomocą metod macierzystych 776

Skorowidz 789

  • Titel: Java. Techniki zaawansowane. Wydanie XI
  • Autor: Cay S. Horstmann
  • Originaler Titel: Core Java, Volume II--Advanced Features (11th Edition)
  • Übersetzung: Piotr Rajca, Jaromir Senczyk
  • ISBN: 978-83-283-6067-9, 9788328360679
  • Veröffentlichungsdatum: 2020-02-25
  • Format: E-book
  • Artikelkennung: jatz11
  • Verleger: Helion