• Kategorie
  • Java . Techniki zaawansowane.

Autor(zy) Horstmann Cay S.
Miejsce wydania Gliwice
Rok 2020
Wydanie XI
Ilość stron 808
Format B5
Okładka twarda
149.00 -13% 129.90
Wysyłka w ciągu 1-5 dni
Cena przesyłki 0
PP Przesyłka biznesowa pobranie (od 80 zł gratis) 0
Odbiór osobisty 0
PP Przesyłka biznesowa (od 80 zł gratis) 0
Paczkomaty InPost przelew (od 100 zł gratis) 0
Odbiór osobisty 0
Kurier przelew (od 200 zł gratis) 12
Kurier pobranie (od 200 zł gratis) 16
Dostępność 0 szt.
ISBN 978-83-283-6066-2.
EAN 9788328360662

Zamów telefonicznie: 914340603

Zostaw telefon

Java . Techniki zaawansowane.

Autor(zy): Horstmann Cay S.
ISBN: 978-83-283-6066-2.
Miejsce wydania: Gliwice
Rok wydania: 2020
Wydanie :XI
Ilość stron: 808
Format: B5
Okładka: twarda





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





Nie ma jeszcze komentarzy ani ocen dla tego produktu.