Java. Kompendium programisty. Wydanie X - ebook
Java. Kompendium programisty. Wydanie X - ebook
Niemal od chwili swojego powstania Java jest jednym z najważniejszych i najpopularniejszych języków programowania. Dzieje się tak dzięki konsekwentnemu rozwijaniu tego języka i poszukiwaniu coraz to nowszych technologii. Sprawia to, że Java jest pierwszym i najlepszym wyborem dla programistów zainteresowanych tworzeniem aplikacji internetowych. Oprócz tego nadaje się do wielu innych zastosowań. Łatwo się można przekonać, że większość współczesnego świata korzysta z kodu Javy. Dotyczy to nie tylko komputerów czy smartfonów, ale także ogromnej liczby różnych innych urządzeń.
Ta książka jest X wydaniem znakomitego podręcznika, w pełni zaktualizowanym o informacje dotyczące Java SE 9. W przystępny sposób wyjaśniono tu, jak pisać, kompilować, debugować i uruchamiać kod Javy. Znalazły się tu także informacje o kluczowych elementach biblioteki Java API, takich jak obsługa wejścia-wyjścia, Collections Framework, biblioteka strumieni oraz narzędzia do programowania współbieżnego. W praktyczny sposób przedstawiono bibliotekę Swing, JavaFX, technologię JavaBeans oraz serwletów. Książka zawiera także szczegółowy opis modułów i praktyczne wprowadzenie do JShell, narzędzia do interaktywnego programowania w Javie.
Najważniejsze zagadnienia ujęte w książce:
- typy danych, zmienne, tablice i operatory oraz instrukcje sterujące
- programowanie obiektowe i dziedziczenie
- interfejsy i pakiety oraz obsługa wyjątków
- programowanie wielowątkowe
- wyrażenia lambda, moduły, programowanie sieciowe
- obsługa zdarzeń i programowanie współbieżne
Java. Klasyka w programowaniu!
Spis treści
- O autorze
- O redaktorze merytorycznym
- Przedmowa
- Książka dla wszystkich programistów
- Zawartość książki
- Nie zapomnij: kody źródłowe do pobrania
- Specjalne podziękowania
- Warto przeczytać
- CZĘŚĆ I Język Java
- Rozdział 1. Historia i ewolucja języka Java
- Rodowód Javy
- Narodziny nowoczesnego języka C
- Język C++ następny krok
- Podwaliny języka Java
- Powstanie języka Java
- Powiązanie z językiem C#
- Jak Java wywarła wpływ na internet
- Aplety Javy
- Bezpieczeństwo
- Przenośność
- Magia języka Java kod bajtowy
- Wychodząc poza aplety
- Serwlety Java po stronie serwera
- Hasła języka Java
- Prostota
- Obiektowość
- Niezawodność
- Wielowątkowość
- Neutralność architektury
- Interpretowalność i wysoka wydajność
- Rozproszenie
- Dynamika
- Ewolucja Javy
- Java SE 9
- Kultura innowacji
- Rodowód Javy
- Rozdział 2. Podstawy języka Java
- Programowanie obiektowe
- Dwa paradygmaty
- Abstrakcja
- Trzy zasady programowania obiektowego
- Hermetyzacja
- Dziedziczenie
- Polimorfizm
- Połączenie polimorfizmu, hermetyzacji i dziedziczenia
- Pierwszy przykładowy program
- Wpisanie kodu programu
- Kompilacja programów
- Bliższe spojrzenie na pierwszy przykładowy program
- Drugi prosty program
- Dwie instrukcje sterujące
- Instrukcja if
- Pętla for
- Bloki kodu
- Kwestie składniowe
- Znaki białe
- Identyfikatory
- Stałe
- Komentarze
- Separatory
- Słowa kluczowe języka Java
- Biblioteki klas Javy
- Programowanie obiektowe
- Rozdział 3. Typy danych, zmienne i tablice
- Java to język ze ścisłą kontrolą typów
- Typy proste
- Typy całkowitoliczbowe
- Typ byte
- Typ short
- Typ int
- Typ long
- Typy zmiennoprzecinkowe
- Typ float
- Typ double
- Typ znakowy
- Typ logiczny
- Bliższe spojrzenie na stałe
- Stałe całkowitoliczbowe
- Stałe zmiennoprzecinkowe
- Stałe logiczne
- Stałe znakowe
- Stałe łańcuchowe
- Zmienne
- Deklaracja zmiennej
- Inicjalizacja dynamiczna
- Zasięg i czas życia zmiennych
- Konwersja typów i rzutowanie
- Automatyczna konwersja typów
- Rzutowanie niezgodnych typów
- Automatyczne rozszerzanie typów w wyrażeniach
- Zasady rozszerzania typu
- Tablice
- Tablice jednowymiarowe
- Tablice wielowymiarowe
- Alternatywna składnia deklaracji tablicy
- Kilka słów o łańcuchach
- Rozdział 4. Operatory
- Operatory arytmetyczne
- Podstawowe operatory arytmetyczne
- Operator reszty z dzielenia
- Operatory arytmetyczne z przypisaniem
- Inkrementacja i dekrementacja
- Operatory bitowe
- Logiczne operatory bitowe
- Operator negacji bitowej
- Operator iloczynu bitowego
- Operator sumy bitowej
- Operator sumy bitowej modulo 2
- Wykorzystanie operatorów bitowych
- Przesunięcie w lewo
- Przesunięcie w prawo
- Przesunięcie w prawo bez znaku
- Operatory bitowe z przypisaniem
- Logiczne operatory bitowe
- Operatory relacji
- Operatory logiczne
- Operatory logiczne ze skracaniem
- Operator przypisania
- Operator ?
- Kolejność wykonywania operatorów
- Stosowanie nawiasów okrągłych
- Operatory arytmetyczne
- Rozdział 5. Instrukcje sterujące
- Instrukcje wyboru
- Instrukcja if
- Zagnieżdżanie instrukcji if
- Sekwencja if-else-if
- Instrukcja switch
- Zagnieżdżone instrukcje switch
- Instrukcja if
- Instrukcje iteracyjne
- Pętla while
- Pętla do-while
- Pętla for
- Deklaracja zmiennej sterującej wewnątrz pętli for
- Wykorzystanie przecinka
- Odmiany pętli for
- Wersja for-each pętli for
- Przejście przez tablicę wielowymiarową
- Wykorzystanie rozszerzonej pętli for
- Pętle zagnieżdżone
- Instrukcje skoku
- Instrukcja break
- Wykorzystanie instrukcji break do opuszczenia pętli
- Wykorzystanie instrukcji break jako instrukcji goto
- Instrukcja continue
- Instrukcja return
- Instrukcja break
- Instrukcje wyboru
- Rozdział 6. Wprowadzenie do klas
- Klasy
- Ogólna postać klasy
- Prosta klasa
- Deklarowanie obiektów
- Bliższe spojrzenie na operator new
- Przypisywanie zmiennych referencyjnych do obiektów
- Wprowadzenie do metod
- Dodanie metody do klasy Box
- Zwracanie wartości
- Dodanie metody przyjmującej parametry
- Konstruktor
- Konstruktor sparametryzowany
- Słowo kluczowe this
- Ukrywanie zmiennych składowych
- Mechanizm odzyskiwania pamięci
- Klasa stosu
- Klasy
- Rozdział 7. Dokładniejsze omówienie metod i klas
- Przeciążanie metod
- Przeciążanie konstruktorów
- Obiekty jako parametry
- Dokładniejsze omówienie przekazywania argumentów
- Zwracanie obiektów
- Rekurencja
- Wprowadzenie do kontroli dostępu
- Składowe statyczne
- Słowo kluczowe final
- Powtórka z tablic
- Klasy zagnieżdżone i klasy wewnętrzne
- Omówienie klasy String
- Wykorzystanie argumentów wiersza poleceń
- Zmienna liczba argumentów
- Przeciążanie metod o zmiennej liczbie argumentów
- Zmienna liczba argumentów i niejednoznaczności
- Przeciążanie metod
- Rozdział 8. Dziedziczenie
- Podstawy dziedziczenia
- Dostęp do składowych a dziedziczenie
- Bardziej praktyczny przykład
- Zmienna klasy bazowej może zawierać referencję do obiektu klasy pochodnej
- Słowo kluczowe super
- Wykorzystanie słowa kluczowego super do wywołania konstruktora klasy bazowej
- Drugie zastosowanie słowa kluczowego super
- Tworzenie hierarchii wielopoziomowej
- Kiedy są wykonywane konstruktory?
- Przesłanianie metod
- Dynamiczne przydzielanie metod
- Dlaczego warto przesłaniać metody?
- Zastosowanie przesłaniania metod
- Klasy abstrakcyjne
- Słowo kluczowe final i dziedziczenie
- Słowo kluczowe final zapobiega przesłanianiu
- Słowo kluczowe final zapobiega dziedziczeniu
- Klasa Object
- Podstawy dziedziczenia
- Rozdział 9. Pakiety i interfejsy
- Pakiety
- Definiowanie pakietu
- Znajdowanie pakietów i ścieżka CLASSPATH
- Prosty przykład pakietu
- Dostęp do pakietów i składowych
- Przykład dostępu
- Import pakietów
- Interfejsy
- Definiowanie interfejsu
- Implementacja interfejsu
- Dostęp do implementacji za pośrednictwem referencji do interfejsu
- Implementacja częściowa
- Interfejsy zagnieżdżone
- Stosowanie interfejsów
- Zmienne w interfejsach
- Interfejsy można rozszerzać
- Metody domyślne
- Podstawy metod domyślnych
- Bardziej praktyczny przykład
- Problemy wielokrotnego dziedziczenia
- Metody statyczne w interfejsach
- Stosowanie metod prywatnych w interfejsach
- Ostatnie uwagi dotyczące pakietów i interfejsów
- Pakiety
- Rozdział 10. Obsługa wyjątków
- Podstawy obsługi wyjątków
- Typy wyjątków
- Nieprzechwycone wyjątki
- Stosowanie instrukcji try i catch
- Wyświetlenie opisu wyjątku
- Wiele klauzul catch
- Zagnieżdżone instrukcje try
- Instrukcja throw
- Klauzula throws
- Słowo kluczowe finally
- Wyjątki wbudowane w język Java
- Tworzenie własnej klasy pochodnej wyjątków
- Łańcuch wyjątków
- Trzy dodatkowe cechy wyjątków
- Wykorzystanie wyjątków
- Rozdział 11. Programowanie wielowątkowe
- Model wątków języka Java
- Priorytety wątków
- Synchronizacja
- Przekazywanie komunikatów
- Klasa Thread i interfejs Runnable
- Wątek główny
- Tworzenie wątku
- Implementacja interfejsu Runnable
- Rozszerzanie klasy Thread
- Wybór odpowiedniego podejścia
- Tworzenie wielu wątków
- Stosowanie metod isAlive() i join()
- Priorytety wątków
- Synchronizacja
- Synchronizacja metod
- Instrukcja synchronized
- Komunikacja międzywątkowa
- Zakleszczenie
- Zawieszanie, wznawianie i zatrzymywanie wątków
- Uzyskiwanie stanu wątku
- Stosowanie metody wytwórczej do tworzenia i uruchamiania wątku
- Korzystanie z wielowątkowości
- Model wątków języka Java
- Rozdział 12. Wyliczenia, automatyczne opakowywanie typów prostych i adnotacje
- Typy wyliczeniowe
- Podstawy wyliczeń
- Metody values() i valueOf()
- Wyliczenia Javy jako typy klasowe
- Wyliczenia dziedziczą po klasie Enum
- Inny przykład wyliczenia
- Opakowania typów
- Klasa Character
- Klasa Boolean
- Opakowania typów numerycznych
- Automatyczne opakowywanie typów prostych
- Automatyczne opakowywanie i metody
- Automatyczne opakowywanie i rozpakowywanie w wyrażeniach
- Automatyczne opakowywanie typów znakowych i logicznych
- Automatyczne opakowywanie pomaga zapobiegać błędom
- Słowo ostrzeżenia
- Adnotacje
- Podstawy tworzenia adnotacji
- Określanie strategii zachowywania adnotacji
- Odczytywanie adnotacji w trakcie działania programu za pomocą refleksji
- Drugi przykład refleksji
- Odczytywanie wszystkich adnotacji
- Interfejs AnnotatedElement
- Wartości domyślne
- Adnotacje znacznikowe
- Adnotacje jednoelementowe
- Wbudowane adnotacje
- Adnotacja @Retention
- Adnotacja @Documented
- Adnotacja @Target
- Adnotacja @Inherited
- Adnotacja @Override
- Adnotacja @Deprecated
- Adnotacja @FunctionalInterface
- Adnotacja @SafeVarargs
- Adnotacja @SuppressWarnings
- Adnotacje typów
- Adnotacje powtarzalne
- Ograniczenia
- Typy wyliczeniowe
- Rozdział 13. Wejście-wyjście, instrukcja try z zasobami i inne tematy
- Podstawowa obsługa wejścia i wyjścia
- Strumienie
- Strumienie znakowe i bajtowe
- Klasy strumieni bajtów
- Klasy strumieni znaków
- Predefiniowane strumienie
- Odczyt danych z konsoli
- Odczyt znaków
- Odczyt łańcuchów
- Wyświetlanie informacji na konsoli
- Klasa PrintWriter
- Odczyt i zapis plików
- Automatyczne zamykanie pliku
- Modyfikatory transient i volatile
- Operator instanceof
- Modyfikator strictfp
- Metody napisane w kodzie rdzennym
- Stosowanie asercji
- Opcje włączania i wyłączania asercji
- Import statyczny
- Wywoływanie przeciążonych konstruktorów za pomocą this()
- Kilka słów o kompaktowych profilach API
- Podstawowa obsługa wejścia i wyjścia
- Rozdział 14. Typy sparametryzowane
- Czym są typy sparametryzowane?
- Prosty przykład zastosowania typów sparametryzowanych
- Typy sparametryzowane działają tylko dla typów referencyjnych
- Typy sparametryzowane różnią się, jeśli mają inny argument typu
- W jaki sposób typy sparametryzowane zwiększają bezpieczeństwo?
- Klasa sparametryzowana z dwoma parametrami typu
- Ogólna postać klasy sparametryzowanej
- Typy ograniczone
- Zastosowanie argumentów wieloznacznych
- Ograniczony argument wieloznaczny
- Tworzenie metody sparametryzowanej
- Konstruktory sparametryzowane
- Interfejsy sparametryzowane
- Typy surowe i starszy kod
- Hierarchia klas sparametryzowanych
- Zastosowanie sparametryzowanej klasy bazowej
- Podklasa sparametryzowana
- Porównywanie typów w hierarchii klas sparametryzowanych w czasie wykonywania
- Rzutowanie
- Przesłanianie metod w klasach sparametryzowanych
- Wnioskowanie typów a typy sparametryzowane
- Znoszenie
- Metody mostu
- Błędy niejednoznaczności
- Pewne ograniczenia typów sparametryzowanych
- Nie można tworzyć egzemplarza parametru typu
- Ograniczenia dla składowych statycznych
- Ograniczenia tablic typów sparametryzowanych
- Ograniczenia wyjątków typów sparametryzowanych
- Rozdział 15. Wyrażenia lambda
- Wprowadzenie do wyrażeń lambda
- Podstawowe informacje o wyrażeniach lambda
- Interfejsy funkcyjne
- Kilka przykładów wyrażeń lambda
- Blokowe wyrażenia lambda
- Sparametryzowane interfejsy funkcyjne
- Przekazywanie wyrażeń lambda jako argumentów
- Wyrażenia lambda i wyjątki
- Wyrażenia lambda i przechwytywanie zmiennych
- Referencje do metod
- Referencje do metod statycznych
- Referencje do metod instancyjnych
- Referencje do metod a typy sparametryzowane
- Referencje do konstruktorów
- Predefiniowane interfejsy funkcyjne
- Wprowadzenie do wyrażeń lambda
- Rozdział 16. Moduły
- Podstawowe informacje o modułach
- Przykład prostego modułu
- Kompilowanie i uruchamianie przykładowej aplikacji
- Dokładniejsze informacje o instrukcjach requires i exports
- java.base i moduły platformy
- Stary kod i moduł nienazwany
- Eksportowanie do konkretnego modułu
- Wymagania przechodnie
- Stosowanie usług
- Podstawowe informacje o usługach i dostawcach usług
- Słowa kluczowe związane z usługami
- Przykład stosowania usług i modułów
- Interfejsy usługi
- Klasy implementacji
- Pliki definicji modułów
- Prezentacja użycia dostawców usługi w aplikacji MyModAppDemo
- Kompilacja i uruchamianie modularnej aplikacji korzystającej z usług
- Grafy modułów
- Trzy wyspecjalizowane cechy modułów
- Moduły otwarte
- Instrukcja opens
- Instrukcja requires static
- Wprowadzenie do jlink i plików JAR modułów
- Dołączanie plików dostarczonych jako struktura katalogów
- Konsolidacja modularnych plików JAR
- Pliki JMOD
- Kilka słów o warstwach i modułach automatycznych
- Końcowe uwagi dotyczące modułów
- Podstawowe informacje o modułach
- Część II Biblioteka języka Java
- Rozdział 17. Obsługa łańcuchów
- Konstruktory klasy String
- Długość łańcucha
- Specjalne operacje na łańcuchach
- Literały tekstowe
- Konkatenacja łańcuchów
- Konkatenacja łańcuchów z innymi typami danych
- Konwersja łańcuchów i metoda toString()
- Wyodrębnianie znaków
- Metoda charAt()
- Metoda getChars()
- Metoda getBytes()
- Metoda toCharArray()
- Porównywanie łańcuchów
- Metody equals() i equalsIgnoreCase()
- Metoda regionMatches()
- Metody startsWith() i endsWith()
- Metoda equals() kontra operator ==
- Metoda compareTo()
- Przeszukiwanie łańcuchów
- Modyfikowanie łańcucha
- Metoda substring()
- Metoda concat()
- Metoda replace()
- Metoda trim()
- Konwersja danych za pomocą metody valueOf()
- Zmiana wielkości liter w łańcuchu
- Łączenie łańcuchów
- Dodatkowe metody klasy String
- Klasa StringBuffer
- Konstruktory klasy StringBuffer
- Metody length() i capacity()
- Metoda ensureCapacity()
- Metoda setLength()
- Metody charAt() i setCharAt()
- Metoda getChars()
- Metoda append()
- Metoda insert()
- Metoda reverse()
- Metody delete() i deleteCharAt()
- Metoda replace()
- Metoda substring()
- Dodatkowe metody klasy StringBuffer
- Klasa StringBuilder
- Rozdział 18. Pakiet java.lang
- Opakowania typów prostych
- Klasa Number
- Klasy Double i Float
- Metody isInfinite() i isNan()
- Klasy Byte, Short, Integer i Long
- Konwersja liczb z i do postaci tekstowej
- Klasa Character
- Dodatki wprowadzone w celu obsługi punktów kodowych Unicode
- Klasa Boolean
- Klasa Void
- Klasa Process
- Klasa Runtime
- Zarządzanie pamięcią
- Wykonywanie innych programów
- Runtime.Version
- Klasa ProcessBuilder
- Klasa System
- Wykorzystanie metody currentTimeMillis() do obliczania czasu wykonywania programu
- Użycie metody arraycopy()
- Właściwości środowiska
- Interfejs System.Logger i klasa System.LoggerFinder
- Klasa Object
- Wykorzystanie metody clone() i interfejsu Cloneable
- Klasa Class
- Klasa ClassLoader
- Klasa Math
- Funkcje trygonometryczne
- Funkcje wykładnicze
- Funkcje zaokrągleń
- Inne metody klasy Math
- Klasa StrictMath
- Klasa Compiler
- Klasy Thread i ThreadGroup oraz interfejs Runnable
- Interfejs Runnable
- Klasa Thread
- Klasa ThreadGroup
- Klasy ThreadLocal i InheritableThreadLocal
- Klasa Package
- Klasa Module
- Klasa ModuleLayer
- Klasa RuntimePermission
- Klasa Throwable
- Klasa SecurityManager
- Klasa StackTraceElement
- Klasa StackWalker i interfejs StackWalker.StackFrame
- Klasa Enum
- Klasa ClassValue
- Interfejs CharSequence
- Interfejs Comparable
- Interfejs Appendable
- Interfejs Iterable
- Interfejs Readable
- Interfejs AutoCloseable
- Interfejs Thread.UncaughtExceptionHandler
- Podpakiety pakietu java.lang
- Podpakiet java.lang.annotation
- Podpakiet java.lang.instrument
- Podpakiet java.lang.invoke
- Podpakiet java.lang.module
- Podpakiet java.lang.management
- Podpakiet java.lang.ref
- Podpakiet java.lang.reflect
- Opakowania typów prostych
- Rozdział 19. Pakiet java.util, część 1. kolekcje
- Wprowadzenie do kolekcji
- Interfejsy kolekcji
- Interfejs Collection
- Interfejs List
- Interfejs Set
- Interfejs SortedSet
- Interfejs NavigableSet
- Interfejs Queue
- Interfejs Deque
- Klasy kolekcji
- Klasa ArrayList
- Pobranie tablicy z obiektu ArrayList
- Klasa LinkedList
- Klasa HashSet
- Klasa LinkedHashSet
- Klasa TreeSet
- Klasa PriorityQueue
- Klasa ArrayDeque
- Klasa EnumSet
- Klasa ArrayList
- Dostęp do kolekcji za pomocą iteratora
- Korzystanie z iteratora Iterator
- Pętla typu for-each jako alternatywa dla iteratora
- Spliteratory
- Przechowywanie w kolekcjach własnych klas
- Interfejs RandomAccess
- Korzystanie z map
- Interfejsy map
- Interfejs Map
- Interfejs SortedMap
- Interfejs NavigableMap
- Interfejs Map.Entry
- Klasy map
- Klasa HashMap
- Klasa TreeMap
- Klasa LinkedHashMap
- Klasa IdentityHashMap
- Klasa EnumMap
- Interfejsy map
- Komparatory
- Wykorzystanie komparatora
- Algorytmy kolekcji
- Klasa Arrays
- Starsze klasy i interfejsy
- Interfejs Enumeration
- Klasa Vector
- Klasa Stack
- Klasa Dictionary
- Klasa Hashtable
- Klasa Properties
- Wykorzystanie metod store() i load()
- Ostatnie uwagi na temat kolekcji
- Rozdział 20. Pakiet java.util, część 2. pozostałe klasy użytkowe
- Klasa StringTokenizer
- Klasa BitSet
- Klasy Optional, OptionalDouble, OptionalInt oraz OptionalLong
- Klasa Date
- Klasa Calendar
- Klasa GregorianCalendar
- Klasa TimeZone
- Klasa SimpleTimeZone
- Klasa Locale
- Klasa Random
- Klasy Timer i TimerTask
- Klasa Currency
- Klasa Formatter
- Konstruktory klasy Formatter
- Metody klasy Formatter
- Podstawy formatowania
- Formatowanie łańcuchów i znaków
- Formatowanie liczb
- Formatowanie daty i godziny
- Specyfikatory %n i %%
- Określanie minimalnej szerokości pola
- Określanie precyzji
- Używanie znaczników (flag) formatów
- Wyrównywanie danych wyjściowych
- Znaczniki spacji, plusa, zera i nawiasów
- Znacznik przecinka
- Znacznik #
- Opcja wielkich liter
- Stosowanie indeksu argumentu
- Zamykanie obiektu klasy Formatter
- Metoda printf() w Javie
- Klasa Scanner
- Konstruktory klasy Scanner
- Podstawy skanowania
- Kilka przykładów użycia klasy Scanner
- Ustawianie separatorów
- Pozostałe elementy klasy Scanner
- Klasy ResourceBundle, ListResourceBundle i PropertyResourceBundle
- Dodatkowe klasy i interfejsy użytkowe
- Podpakiety pakietu java.util
- java.util.concurrent, java.util.concurrent.atomic oraz java.util.concurrent.locks
- java.util.function
- java.util.jar
- java.util.logging
- java.util.prefs
- java.util.regex
- java.util.spi
- java.util.stream
- java.util.zip
- Rozdział 21. Operacje wejścia-wyjścia: analiza pakietu java.io
- Klasy i interfejsy obsługujące operacje wejścia-wyjścia
- Klasa File
- Katalogi
- Stosowanie interfejsu FilenameFilter
- Alternatywna metoda listFiles()
- Tworzenie katalogów
- Interfejsy AutoCloseable, Closeable i Flushable
- Wyjątki operacji wejścia-wyjścia
- Dwa sposoby zamykania strumieni
- Klasy strumieni
- Strumienie bajtów
- Klasa InputStream
- Klasa OutputStream
- Klasa FileInputStream
- Klasa FileOutputStream
- Klasa ByteArrayInputStream
- Klasa ByteArrayOutputStream
- Filtrowane strumienie bajtów
- Buforowane strumienie bajtów
- Klasa BufferedInputStream
- Klasa BufferedOutputStream
- Klasa PushbackInputStream
- Klasa SequenceInputStream
- Klasa PrintStream
- Klasy DataOutputStream i DataInputStream
- Klasa RandomAccessFile
- Strumienie znaków
- Klasa Reader
- Klasa Writer
- Klasa FileReader
- Klasa FileWriter
- Klasa CharArrayReader
- Klasa CharArrayWriter
- Klasa BufferedReader
- Klasa BufferedWriter
- Klasa PushbackReader
- Klasa PrintWriter
- Klasa Console
- Serializacja
- Interfejs Serializable
- Interfejs Externalizable
- Interfejs ObjectOutput
- Klasa ObjectOutputStream
- Interfejs ObjectInput
- Klasa ObjectInputStream
- Przykład serializacji
- Korzyści wynikające ze stosowania strumieni
- Rozdział 22. System NIO
- Klasy systemu NIO
- Podstawy systemu NIO
- Bufory
- Kanały
- Zestawy znaków i selektory
- Udoskonalenia dodane w systemie NIO.2
- Interfejs Path
- Klasa Files
- Klasa Paths
- Interfejsy atrybutów plików
- Klasy FileSystem, FileSystems i FileStore
- Stosowanie systemu NIO
- Stosowanie systemu NIO dla operacji wejścia-wyjścia na kanałach
- Odczytywanie pliku za pośrednictwem kanału
- Zapisywanie pliku za pośrednictwem kanału
- Kopiowanie pliku za pomocą systemu NIO
- Stosowanie systemu NIO dla operacji wejścia-wyjścia na strumieniach
- Stosowanie systemu NIO dla operacji na ścieżkach i systemie plików
- Uzyskiwanie informacji o ścieżce i pliku
- Generowanie listy reprezentującej zawartość katalogu
- Przeszukiwanie drzewa katalogów za pomocą metody walkFileTree()
- Stosowanie systemu NIO dla operacji wejścia-wyjścia na kanałach
- Rozdział 23. Obsługa sieci
- Podstawy działania sieci
- Klasy i interfejsy obsługujące komunikację sieciową
- Klasa InetAddress
- Metody wytwórcze
- Metody klasy
- Klasy Inet4Address oraz Inet6Address
- Gniazda klientów TCP/IP
- URL
- Klasa URLConnection
- Klasa HttpURLConnection
- Klasa URI
- Pliki cookie
- Gniazda serwerów TCP/IP
- Datagramy
- Klasa DatagramSocket
- Klasa DatagramPacket
- Przykład użycia datagramów
- Rozdział 24. Obsługa zdarzeń
- Dwa mechanizmy obsługi zdarzeń
- Model obsługi zdarzeń oparty na ich delegowaniu
- Zdarzenia
- Źródła zdarzeń
- Obiekty nasłuchujące zdarzeń
- Klasy zdarzeń
- Klasa ActionEvent
- Klasa AdjustmentEvent
- Klasa ComponentEvent
- Klasa ContainerEvent
- Klasa FocusEvent
- Klasa InputEvent
- Klasa ItemEvent
- Klasa KeyEvent
- Klasa MouseEvent
- Klasa MouseWheelEvent
- Klasa TextEvent
- Klasa WindowEvent
- Źródła zdarzeń
- Interfejsy nasłuchujące zdarzeń
- Interfejs ActionListener
- Interfejs AdjustmentListener
- Interfejs ComponentListener
- Interfejs ContainerListener
- Interfejs FocusListener
- Interfejs ItemListener
- Interfejs KeyListener
- Interfejs MouseListener
- Interfejs MouseMotionListener
- Interfejs MouseWheelListener
- Interfejs TextListener
- Interfejs WindowFocusListener
- Interfejs WindowListener
- Stosowanie modelu delegowania zdarzeń
- Kluczowe zagadnienia tworzenia aplikacji graficznych z użyciem...
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-4615-4 |
Rozmiar pliku: | 12 MB |