Java. Techniki zaawansowane. Wydanie XIII - Helion

Autor: Cay S. Horstmann
Tytuł oryginału: Core Java, Volume II: Advanced Features, 13th Edition
Tłumaczenie: Piotr Rajca
ISBN: 978-83-289-3004-9
stron: 919, Format: 164x239, okładka: twarda
Data wydania: 2025-08-01
Księgarnia: Helion
Cena książki: 135,20 zł (poprzednio: 169,00 zł)
Oszczędzasz: 20% (-33,80 zł)
Tytuł oryginału: Core Java, Volume II: Advanced Features, 13th Edition
Tłumaczenie: Piotr Rajca
ISBN: 978-83-289-3004-9
stron: 919, Format: 164x239, okładka: twarda
Data wydania: 2025-08-01
Księgarnia: Helion
Cena książki: 135,20 zł (poprzednio: 169,00 zł)
Oszczędzasz: 20% (-33,80 zł)
Nakład wyczerpany
Tagi: Java - Programowanie
Od ponad trzydziestu lat Java jest wybierana przez programistów, którym zale
Zobacz także:
- JavaFX. Kurs video. Wzorce oraz typy generyczne 79,00 zł, (31,60 zł -60%)
- Platforma Xamarin. Kurs video. Poziom drugi. Zaawansowane techniki tworzenia aplikacji cross-platform 99,00 zł, (39,60 zł -60%)
- Spring Security. Kurs video. Skuteczne metody zabezpieczeń aplikacji 69,00 zł, (27,60 zł -60%)
- JUnit - testy jednostkowe. Kurs video. Automatyzacja procesu testowania w Javie 79,00 zł, (31,60 zł -60%)
- Algorytmy i struktury danych. Kurs video. Java, JavaScript, Python 89,00 zł, (40,05 zł -55%)
Spis treści
Java. Techniki zaawansowane. Wydanie XIII -- spis treści
Wstęp
Podziękowania
1. Strumienie
- 1.1. Od iteracji do operacji na strumieniach
- 1.2. Tworzenie strumieni
- 1.3. Metody filter, map oraz flatMap
- 1.4. Pobieranie podstrumieni i łączenie strumieni
- 1.5. Inne przekształcenia strumieni
- 1.6. Proste operacje redukcji
- 1.7. Typ Optional
- 1.7.1. Pobieranie wartości Optional
- 1.7.2. Korzystanie z wartości Optional
- 1.7.3. Potoki wartości opcjonalnych
- 1.7.4. Jak nie należy używać wartości opcjonalnych
- 1.7.5. Tworzenie obiektów typu Optional
- 1.7.6. Łączenie funkcji zwracających wartości opcjonalne przy użyciu flatMap
- 1.7.7. Przekształcanie wartości opcjonalnej w strumień
- 1.8. Gromadzenie wyników
- 1.9. Gromadzenie wyników w mapach
- 1.10. Grupowanie i podział
- 1.11. Kolektory przetwarzające
- 1.12. Operacje redukcji
- 1.13. Strumienie danych typów prostych
- 1.14. Strumienie równoległe
2. Wejście i wyjście
- 2.1. Strumienie wejścia-wyjścia
- 2.1.1. Odczyt i zapis bajtów
- 2.1.2. Zoo pełne strumieni
- 2.1.3. Łączenie filtrów strumieni wejścia-wyjścia
- 2.1.4. Tekstowe operacje wejścia-wyjścia
- 2.1.5. Wczytywanie tekstu
- 2.1.6. Zapisywanie tekstu
- 2.1.7. Zapis obiektów w formacie tekstowym
- 2.1.8. Zbiory znaków
- 2.1.9. Wczytywanie znaków
- 2.2. Odczyt i zapis danych binarnych
- 2.2.1. Interfejsy DataInput i DataOutput
- 2.2.2. Strumienie plików o swobodnym dostępie
- 2.2.3. Archiwa ZIP
- 2.3. Strumienie obiektów i serializacja
- 2.3.1. Zapisywanie i wczytywanie obiektów serializowalnych
- 2.3.2. Format pliku serializacji obiektów
- 2.3.3. Pola pomijane podczas serializacji
- 2.3.4. Metody readObject i writeObject
- 2.3.5. Metody readExternal i writeExternal
- 2.3.6. Metody readResolve i writeReplace
- 2.3.7. Wersje
- 2.3.8. Serializacja w roli klonowania
- 2.3.9. Deserializacja a bezpieczeństwo
- 2.4. Praca z plikami
- 2.4.1. Ścieżki dostępu
- 2.4.2. Odczyt i zapis plików
- 2.4.3. Tworzenie plików i katalogów
- 2.4.4. Kopiowanie, przenoszenie i usuwanie plików
- 2.4.5. Informacje o plikach
- 2.4.6. Przeglądanie zawartości katalogu
- 2.4.7. Stosowanie strumieni katalogów
- 2.4.8. Systemy plików ZIP
- 2.5. Mapowanie plików w pamięci
- 2.5.1. Wydajność plików mapowanych w pamięci
- 2.5.2. Struktura bufora danych
- 2.6. Blokowanie plików
- 2.7. Wyrażenia regularne
- 2.7.1. Składnia wyrażeń regularnych
- 2.7.2. Testowanie dopasowania
- 2.7.3. Znajdowanie wszystkich dopasowań w łańcuchu
- 2.7.4. Grupy
- 2.7.5. Podział w miejscach wystąpienia separatora
- 2.7.6. Zastępowanie dopasowań
- 2.7.7. Flagi
3. Język XML
- 3.1. Wprowadzenie do języka XML
- 3.2. Struktura dokumentu XML
- 3.3. Parsowanie dokumentów XML
- 3.4. Kontrola poprawności dokumentów XML
- 3.4.1. Definicje typów dokumentów
- 3.4.2. XML Schema
- 3.4.3. Praktyczny przykład
- 3.5. Wyszukiwanie informacji za pomocą XPath
- 3.6. Przestrzenie nazw
- 3.7. Parsery strumieniowe
- 3.7.1. Wykorzystanie parsera SAX
- 3.7.2. Wykorzystanie parsera StAX
- 3.8. Tworzenie dokumentów XML
- 3.8.1. Dokumenty bez przestrzeni nazw
- 3.8.2. Dokumenty z przestrzenią nazw
- 3.8.3. Zapisywanie dokumentu
- 3.8.4. Zapis dokumentu XML za pomocą parsera StAX
- 3.9. Przekształcenia XSL
4. Programowanie aplikacji sieciowych
- 4.1. Połączenia z serwerem
- 4.1.1. Stosowanie programu telnet
- 4.1.2. Nawiązywanie połączenia z serwerem z wykorzystaniem Javy
- 4.1.3. Limity czasu gniazd
- 4.1.4. Adresy internetowe
- 4.2. Implementacja serwerów
- 4.2.1. Gniazda serwera
- 4.2.2. Obsługa wielu klientów
- 4.2.3. Połączenia częściowo zamknięte
- 4.2.4. Przerywanie działania gniazd sieciowych
- 4.2.5. Stosowanie bezpiecznych gniazd
- 4.3. Połączenia wykorzystujące URL
- 4.3.1. URL i URI
- 4.3.2. Zastosowanie klasy URLConnection do pobierania informacji
- 4.3.3. Wysyłanie danych do formularzy
- 4.4. Klient HTTP
- 4.4.1. Klasa HttpClient
- 4.4.2. Klasa HttpRequest i publikowanie zawartości
- 4.4.3. Interfejs HttpResponse i obsługa zawartości
- 4.4.4. Przetwarzanie asynchroniczne
- 4.5. Prosty serwer HTTP
- 4.5.1. Narzędzie uruchamiane z wiersza poleceń
- 4.5.2. API serwera HTTP
- 4.5.3. Obiekty obsługi
- 4.5.4. Filtry
- 4.6. Wysyłanie poczty elektronicznej
5. Programowanie baz danych: JDBC
- 5.1. Architektura JDBC
- 5.1.1. Typy sterowników JDBC
- 5.1.2. Typowe zastosowania JDBC
- 5.2. Język SQL
- 5.3. Instalacja JDBC
- 5.3.1. Adresy URL baz danych
- 5.3.2. Pliki JAR zawierające sterownik
- 5.3.3. Uruchamianie baz danych
- 5.3.4. Nawiązywanie połączenia z bazą danych
- 5.4. Stosowanie poleceń SQL
- 5.4.1. Wykonywanie poleceń SQL
- 5.4.2. Zarządzanie połączeniami, poleceniami i zbiorami wyników
- 5.4.3. Analiza wyjątków SQL
- 5.4.4. Wypełnianie bazy danych
- 5.5. Wykonywanie zapytań
- 5.5.1. Polecenia przygotowane
- 5.5.2. Odczyt i zapis dużych obiektów
- 5.5.3. Sekwencje sterujące
- 5.5.4. Zapytania o wielu zbiorach wyników
- 5.5.5. Pobieranie wartości kluczy wygenerowanych automatycznie
- 5.6. Przewijalne i aktualizowalne zbiory wyników zapytań
- 5.6.1. Przewijalne zbiory wyników
- 5.6.2. Aktualizowalne zbiory rekordów
- 5.7. Zbiory rekordów
- 5.7.1. Tworzenie zbiorów rekordów
- 5.7.2. Buforowane zbiory rekordów
- 5.8. Metadane
- 5.9. Transakcje
- 5.9.1. Programowanie transakcji w JDBC
- 5.9.2. Punkty kontrolne
- 5.9.3. Aktualizacje wsadowe
- 5.9.4. Zaawansowane typy języka SQL
- 5.10. Zaawansowane zarządzanie połączeniami
6. API dat i czasu
- 6.1. Oś czasu
- 6.2. Daty lokalne
- 6.3. Modyfikatory dat
- 6.4. Czas lokalny
- 6.5. Czas strefowy
- 6.6. Formatowanie i parsowanie
- 6.7. Współdziałanie ze starym kodem
7. Internacjonalizacja
- 7.1. Lokalizatory
- 7.1.1. Dlaczego stosuje się lokalizatory?
- 7.1.2. Określanie lokalizatorów
- 7.1.3. Lokalizator domyślny
- 7.1.4. Nazwa lokalizatora
- 7.2. Formaty liczb
- 7.2.1. Formatowanie wartości liczbowych
- 7.2.2. Klasa DecimalFormat
- 7.2.3. Waluty
- 7.3. Data i czas
- 7.4. Porządek alfabetyczny i normalizacja
- 7.5. Formatowanie komunikatów
- 7.5.1. Formatowanie liczb i dat
- 7.5.2. Formatowanie z wariantami
- 7.6. Granice tekstu
- 7.7. Wczytywanie i wyświetlanie tekstów
- 7.7.1. Pliki tekstowe
- 7.7.2. Znaki końca wiersza
- 7.7.3. Konsola
- 7.7.4. BOM - znacznik kolejności bajtów UTF-8
- 7.7.5. Kodowanie plików źródłowych
- 7.8. Komplety zasobów
- 7.8.1. Wyszukiwanie kompletów zasobów
- 7.8.2. Pliki właściwości
- 7.8.3. Klasy kompletów zasobów
- 7.9. Kompletny przykład
8. Skrypty, kompilacja i adnotacje
- 8.1. Interfejs kompilatora
- 8.1.1. Wywoływanie kompilatora
- 8.1.2. Uruchamianie zadania kompilacji
- 8.1.3. Przechwytywanie informacji diagnostycznych
- 8.1.4. Wczytywanie plików źródłowych z pamięci
- 8.1.5. Zapis kodów bajtowych w pamięci
- 8.1.6. Przykład: dynamiczne tworzenie kodu w języku Java
- 8.2. Skrypty na platformie Java
- 8.2.1. Wybór silnika skryptowego
- 8.2.2. Wykonywanie skryptów i wiązania zmiennych
- 8.2.3. Przekierowanie wejścia i wyjścia
- 8.2.4. Wywoływanie funkcji i metod skryptów
- 8.2.5. Kompilacja skryptu
- 8.2.6. Przykład: arkusze skryptowe
9. Bezpieczeństwo
- 9.1. Ładowanie klas
- 9.1.1. Proces wczytywania plików klas
- 9.1.2. Hierarchia klas ładowania
- 9.1.3. Zastosowanie procedur ładujących w roli przestrzeni nazw
- 9.1.4. Implementacja własnej procedury ładującej
- 9.1.5. Weryfikacja kodu maszyny wirtualnej
- 9.2. Uwierzytelnianie użytkowników
- 9.2.1. Framework JAAS
- 9.2.2. Moduły JAAS
- 9.3. Podpis cyfrowy
- 9.3.1. Skróty wiadomości
- 9.3.2. Podpisywanie wiadomości
- 9.3.3. Weryfikacja podpisu
- 9.3.4. Problem uwierzytelniania
- 9.3.5. Podpisywanie certyfikatów
- 9.3.6. Żądania certyfikatu
- 9.3.7. Podpisywanie kodu
- 9.3.8. Skróty haseł
- 9.4. Szyfrowanie
- 9.4.1. Szyfrowanie symetryczne
- 9.4.2. Generowanie klucza
- 9.4.3. Strumienie szyfrujące
- 9.4.4. Szyfrowanie kluczem publicznym
10. Graficzne interfejsy użytkownika
- 10.1. Historia zestawów narzędzi do tworzenia interfejsów użytkownika
- 10.2. Wyświetlanie ramki
- 10.2.1. Tworzenie ramki
- 10.2.2. Właściwości ramki
- 10.3. Wyświetlanie informacji w komponencie
- 10.3.1. Figury 2D
- 10.3.2. Kolory
- 10.3.3. Czcionki
- 10.3.4. Wyświetlanie obrazów
- 10.4. Obsługa zdarzeń
- 10.4.1. Podstawowe koncepcje obsługi zdarzeń
- 10.4.2. Przykład
- obsługa kliknięcia przycisku
- 10.4.3. Zwięzłe definiowanie procedur nasłuchowych
- 10.4.4. Klasy adaptacyjne
- 10.4.5. Akcje
- 10.4.6. Zdarzenia generowane przez mysz
- 10.4.7. Hierarchia zdarzeń w bibliotece AWT
- 10.5. API Preferences
11. Komponenty Swing interfejsu użytkownika
- 11.1. Swing i wzorzec model-widok-kontroler
- 11.2. Wprowadzenie do zarządzania rozkładem
- 11.2.1. Zarządcy układu
- 11.2.2. Rozkład brzegowy
- 11.2.3. Rozkład siatkowy
- 11.3. Wprowadzanie tekstu
- 11.3.1. Pola tekstowe
- 11.3.2. Etykiety komponentów
- 11.3.3. Pola haseł
- 11.3.4. Obszary tekstowe
- 11.3.5. Panele przewijane
- 11.4. Komponenty umożliwiające wybór opcji
- 11.4.1. Pola wyboru
- 11.4.2. Przełączniki
- 11.4.3. Obramowanie
- 11.4.4. Listy rozwijane
- 11.4.5. Suwaki
- 11.5. Menu
- 11.5.1. Tworzenie menu
- 11.5.2. Ikony w elementach menu
- 11.5.3. Pola wyboru i przełączniki jako elementy menu
- 11.5.4. Menu podręczne
- 11.5.5. Mnemoniki i akceleratory
- 11.5.6. Aktywowanie i dezaktywowanie elementów menu
- 11.5.7. Paski narzędzi
- 11.5.8. Dymki
- 11.6. Rozkład siatkowy
- 11.6.1. Rozkład GridBagLayout
- 11.6.2. Parametry gridx, gridy, gridwidth i gridheight
- 11.6.3. Pola weight
- 11.6.4. Parametry fill i anchor
- 11.6.5. Dopełnienie
- 11.6.6. Inny sposób ustawiania wartości parametrów gridx, gridy, gridwidth i gridheight
- 11.6.7. Układ GridBagLayout - receptura
- 11.6.8. Klasa pomocnicza ułatwiająca pracę z ograniczeniami GridBagLayout
- 11.7. Niestandardowi zarządcy rozkładu
- 11.8. Okna dialogowe
- 11.8.1. Okna dialogowe opcji
- 11.8.2. Tworzenie okien dialogowych
- 11.8.3. Wymiana danych
- 11.8.4. Okna dialogowe wyboru plików
12. Zaawansowane możliwości pakietu Swing i grafiki
- 12.1. Tabele
- 12.1.1. Najprostsze tabele
- 12.1.2. Modele tabel
- 12.2. Wiersze i kolumny
- 12.2.1. Klasy kolumn
- 12.2.2. Dostęp do kolumn tabeli
- 12.2.3. Zmiana rozmiaru kolumn
- 12.2.4. Zmiana rozmiaru wierszy
- 12.2.5. Wybór wierszy, kolumn i komórek
- 12.2.6. Sortowanie wierszy
- 12.2.7. Filtrowanie wierszy
- 12.2.8. Ukrywanie i wyświetlanie kolumn
- 12.3. Rysowanie i edytowanie komórek
- 12.3.1. Rysowanie komórek
- 12.3.2. Wyświetlanie nagłówka
- 12.3.3. Edytowanie komórek
- 12.3.4. Tworzenie własnych edytorów
- 12.4. Drzewa
- 12.4.1. Proste drzewa
- 12.4.2. Modyfikowanie drzew i ścieżek drzew
- 12.4.3. Przeglądanie węzłów
- 12.4.4. Rysowanie węzłów
- 12.4.5. Nasłuchiwanie zdarzeń w drzewach
- 12.4.6. Własne modele drzew
- 12.5. Zaawansowane możliwości biblioteki AWT
- 12.5.1. Potokowe tworzenie grafiki
- 12.5.2. Figury
- 12.5.3. Tworzenie kształtów
- 12.5.4. Pola
- 12.5.5. Ślad pędzla
- 12.5.6. Wypełnienia
- 12.5.7. Przekształcenia układu współrzędnych
- 12.5.8. Przycinanie
- 12.5.9. Przezroczystość i składanie obrazów
- 12.6. Grafika rastrowa
- 12.6.1. Odczyt i zapis plików graficznych
- 12.6.2. Wykorzystanie obiektów zapisu i odczytu plików graficznych
- 12.6.3. Odczyt i zapis plików zawierających sekwencje obrazów
- 12.6.4. Operacje na obrazach
- 12.6.5. Filtrowanie obrazów
- 12.7. Drukowanie
- 12.7.1. Drukowanie grafiki
- 12.7.2. Drukowanie wielu stron
- 12.7.3. Usługi drukowania
- 12.7.4. Usługi drukowania za pośrednictwem strumieni
- 12.7.5. Atrybuty drukowania
13. Metody macierzyste
- 13.1. Wywołania funkcji języka C z programów w języku Java
- 13.2. Numeryczne parametry metod i wartości zwracane
- 13.3. Łańcuchy znaków jako parametry
- 13.4. Dostęp do składowych obiektu
- 13.4.1. Dostęp do pól instancji
- 13.4.2. Dostęp do pól statycznych
- 13.5. Sygnatury
- 13.6. Wywoływanie metod języka Java
- 13.6.1. Wywoływanie metod obiektów
- 13.6.2. Wywoływanie metod statycznych
- 13.6.3. Konstruktory
- 13.6.4. Alternatywne sposoby wywoływania metod
- 13.7. Dostęp do elementów tablic
- 13.8. Obsługa błędów
- 13.9. Interfejs programowy wywołań języka Java
- 13.10. Kompletny przykład: dostęp do rejestru systemu Windows
- 13.10.1. Rejestr systemu Windows
- 13.10.2. Interfejs dostępu do rejestru na platformie Java
- 13.10.3. Implementacja dostępu do rejestru za pomocą metod macierzystych
- 13.11. Funkcje obce: spojrzenie w przyszłość
Skorowidz