Java. Kompendium programisty - ebook
Java. Kompendium programisty - ebook
Java od wielu lat utrzymuje swoją wyjątkową pozycję. To język programowania, który łączy w sobie technologiczną dojrzałość i nowoczesność. Jego twórcy od pierwszego wydania kładą nacisk na programowanie rozwiązań internetowych, a także na elastyczność i szybkość. W efekcie obecnie Java często jest pierwszym i najlepszym wyborem programistów, którzy chcą tworzyć szerokie spektrum oprogramowania. Wszędzie tam, gdzie wymaga się niezawodności, można znaleźć kod Javy.
Oto dwunaste wydanie wyczerpującego kompendium, w pełni zaktualizowane, uzupełnione o nowości wprowadzone w Java SE 17. Opisano w nim cały język Java: jego składnię, słowa kluczowe i najistotniejsze zasady programowania. Znalazły się tu także informacje dotyczące biblioteki Java API, takie jak operacje wejście-wyjścia, biblioteka strumieni i techniki programowania współbieżnego. Nie zabrakło opisu biblioteki Swing, JavaBeans i serwletów, jak również licznych przykładów praktycznego zastosowania Javy. Wyczerpująco omówiono najnowsze możliwości języka, takie jak rekordy, klasy zapieczętowane czy też wyrażenia switch. Podręcznik został napisany w sposób przejrzysty, jasnym i zrozumiałym językiem, co znakomicie ułatwia naukę, a poszczególne zagadnienia zilustrowano licznymi przykładowymi fragmentami kodu źródłowego. To sprawia, że z kompendium skorzystają wszyscy programiści Javy, zarówno początkujący, jak i profesjonalni deweloperzy.
W książce między innymi:
- zasady programowania obiektowego
- obsługa zdarzeń, moduły i wyrażenia lambda
- klasy i interfejsy zapieczętowane
- rozszerzenia instrukcji switch, rekordy, bloki tekstu
- Collections, AWT, Swing, JavaBean i serwlety
Java: wszystko, co musisz wiedzieć, w jednym kompendium!
Spis treści
O autorze
O redaktorze merytorycznym
Przedmowa
CZĘŚĆ I. Język Java
- 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
- Szybszy harmonogram udostępniania
- 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
- Kultura innowacji
- Rodowód Javy
- 2. Podstawy języka Java
- Programowanie obiektowe
- Dwa paradygmaty
- Abstrakcja
- Trzy zasady programowania obiektowego
- 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
- 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
- Wnioskowanie typów zmiennych lokalnych
- Ograniczenia var
- Kilka słów o łańcuchach
- 4. Operatory
- Operatory arytmetyczne
- Podstawowe operatory arytmetyczne
- Operator reszty z dzielenia
- Operatory arytmetyczne z przypisaniem
- Inkrementacja i dekrementacja
- Operatory bitowe
- Logiczne operatory bitowe
- Przesunięcie w lewo
- Przesunięcie w prawo
- Przesunięcie w prawo bez znaku
- Operatory bitowe z przypisaniem
- Operatory relacji
- Operatory logiczne
- Operatory logiczne ze skracaniem
- Operator przypisania
- Operator ?
- Kolejność wykonywania operatorów
- Stosowanie nawiasów okrągłych
- Operatory arytmetyczne
- 5. Instrukcje sterujące
- Instrukcje wyboru
- Instrukcja if
- Tradycyjna instrukcja switch
- Instrukcje iteracyjne
- Pętla while
- Pętla do-while
- Pętla for
- Wersja for-each pętli for
- Wnioskowanie typów zmiennych lokalnych w pętlach for
- Pętle zagnieżdżone
- Instrukcje skoku
- Instrukcja break
- Instrukcja continue
- Instrukcja return
- Instrukcje wyboru
- 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
- 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
- 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
- Stosowanie wnioskowania typów zmiennych lokalnych z typami referencyjnymi
- Przeciążanie metod
- 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
- Wnioskowanie typów zmiennych lokalnych a dziedziczenie
- Klasa Object
- Podstawy dziedziczenia
- 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
- 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
- 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
- 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
- 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
- Interfejs AnnotatedElement
- Wartości domyślne
- Adnotacje znacznikowe
- Adnotacje jednoelementowe
- Wbudowane adnotacje
- Adnotacje typów
- Adnotacje powtarzalne
- Ograniczenia
- Typy wyliczeniowe
- 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
- 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
- Prezentacja operatora 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 klasach wartościowych
- Podstawowa obsługa wejścia i wyjścia
- 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
- Wnioskowanie typów zmiennych lokalnych a typy sparametryzowane
- Znoszenie
- Metody mostu
- Błędy niejednoznaczności
- Pewne ograniczenia typów sparametryzowanych
- Nie można tworzyć obiektu parametru typu
- Ograniczenia dla składowych statycznych
- Ograniczenia tablic typów sparametryzowanych
- Ograniczenia wyjątków typów sparametryzowanych
- 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
- 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
- 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
- 17. Wyrażenia switch, rekordy oraz inne najnowsze możliwości języka
- Rozszerzenia switch
- Listy stałych
- Wprowadzanie wyrażenia switch i instrukcji yield
- Wprowadzenie strzałek do klauzul case
- Dokładniejsza prezentacja zapisu ze strzałką
- Inny przykład wyrażenia switch
- Bloki tekstu
- Podstawowe informacje o blokach tekstu
- Traktowanie początkowych białych znaków
- Użycie cudzysłowów w blokach tekstu
- Sekwencje specjalne w blokach tekstu
- Rekordy
- Podstawowe informacje o rekordach
- Tworzenie konstruktorów rekordów
- Inny przykład konstruktora rekordu
- Tworzenie metod pobierających w rekordach
- Dopasowywanie wzorców z użyciem operatora instanceof
- Zmienne wzorców i logiczne wyrażenia AND
- Dopasowywanie wzorców w innych wyrażeniach
- Klasy i interfejsy "zapieczętowane"
- Klasy zapieczętowane
- Interfejsy zapieczętowane
- Kierunki rozwoju
- Rozszerzenia switch
CZĘŚĆ II. Biblioteka języka Java
- 18. 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()
- Metody trim() i strip()
- 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
- 19. Pakiet java.lang
- Opakowania typów prostych
- Klasa Number
- Klasy Double i Float
- Metody isInfinite() i isNan()
- Klasy Byte, Short, Integer i Long
- Klasa Character
- Dodatki wprowadzone w celu obsługi punktów kodowych Unicode
- Klasa Boolean
- Klasa Void
- Klasa Process
- Klasa Runtime
- 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 Record
- 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.constant
- Podpakiet java.lang.instrument
- Podpakiet java.lang.invoke
- Podpakiet java.lang.management
- Podpakiet java.lang.module
- Podpakiet java.lang.ref
- Podpakiet java.lang.reflect
- Opakowania typów prostych
- 20. 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
- Klasa LinkedList
- Klasa HashSet
- Klasa LinkedHashSet
- Klasa TreeSet
- Klasa PriorityQueue
- Klasa ArrayDeque
- Klasa EnumSet
- 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
- Klasy map
- Komparatory
- Stosowanie 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
- 21. 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.random
- java.util.regex
- java.util.spi
- java.util.stream
- java.util.zip
- 22. 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 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
- 23. 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
- Stosowanie systemu NIO dla operacji wejścia-wyjścia na strumieniach
- Stosowanie systemu NIO dla operacji na ścieżkach i systemie plików
- 24. Obsługa sieci
- Podstawy działania sieci
- Klasy i interfejsy pakietu java.net 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
- Prezentacja pakietu java.net.http
- Trzy kluczowe elementy
- Prosty przykład użycia API klienta HTTP
- Czego jeszcze warto dowiedzieć się o pakiecie java.net.http?
- 25. 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 AWT
- Obsługa zdarzeń generowanych przez mysz
- Obsługa zdarzeń generowanych przez klawiaturę
- Klasy adapterów
- Klasy wewnętrzne
- Anonimowa klasa wewnętrzna
- 26. Wprowadzenie do AWT: praca z oknami, grafiką i tekstem
- Klasy AWT
- Podstawy okien
- Klasa Component
- Klasa Container
- Klasa Panel
- Klasa Window
- Klasa Frame
- Klasa Canvas
- Praca z oknami typu Frame
- Ustawianie wymiarów okna
- Ukrywanie i wyświetlanie okna
- Ustawianie tytułu okna
- Zamykanie okna typu Frame
- Metoda paint()
- Wyświetlanie łańcuchów znaków
- Określanie koloru tekstu i tła
- Żądanie ponownego wyświetlenia zawartości okna
- Tworzenie aplikacji korzystających z klasy Frame
- Wprowadzenie do stosowania grafiki
- Rysowanie odcinków
- Rysowanie prostokątów
- Rysowanie elips, kół i okręgów
- Rysowanie łuków
- Rysowanie wielokątów
- Prezentacja metod rysujących
- Dostosowywanie...
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-8322-157-1 |
Rozmiar pliku: | 8,6 MB |