O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Java w pigułce. Wydanie VI

Book Description

Najnowsze wydanie tej cenionej książki zostało uzupełnione o informacje na temat tych właśnie wersji. Dzięki niej błyskawicznie poznasz i wykorzystasz nowe techniki w codziennej pracy. Sięgnij po ten podręcznik i poznaj najlepsze techniki programowania współbieżnego, zasady podejścia obiektowego oraz możliwości asynchronicznego wykonywania operacji wejścia-wyjścia. Ta książka jest obowiązkową lekturą dla wszystkich programistów języka Java!

Table of Contents

  1. okładka
  2. Prawa autorskie strony
  3. tytuł strony
  4. Spis treści
  5. Przedmowa
  6. Wstęp
    1. Zmiany wprowadzone w szóstym wydaniu
    2. Zawartość książki
    3. Pliki z kodem źródłowym
    4. Konwencje typograficzne
    5. Podziękowania
  7. Część I Wprowadzenie do języka Java
    1. Rozdział 1. Wprowadzenie do środowiska Java
      1. Język, maszyna wirtualna i środowisko
        1. Czym jest język Java
        2. Czym jest maszyna wirtualna Javy
        3. Czym jest ekosystem Javy
      2. Historia Javy i maszyny wirtualnej Javy w zarysie
      3. Cykl istnienia programu Java
        1. Często zadawane pytania
          1. Czym jest kod bajtowy?
          2. Czy javac to kompilator?
          3. Skąd się wzięła nazwa kod bajtowy?
          4. Czy kod bajtowy jest optymalny?
          5. Czy kod bajtowy naprawdę jest niezależny od platformy sprzętowej? A co z takimi kwestiami jak kolejność bajtów?
          6. Czy Java to język interpretowany?
          7. Czy w maszynie wirtualnej Javy można uruchamiać także programy w innych językach?
      4. Bezpieczeństwo Javy
      5. Porównanie Javy z innymi językami programowania
        1. Java a język C
        2. Java a język C++
        3. Java a język PHP
        4. Java a JavaScript
      6. Krytyka Javy
        1. Rozwlekłość
        2. Zbyt małe tempo zmian
        3. Problemy z wydajnością
        4. Niski poziom bezpieczeństwa
        5. Zbyt korporacyjna
    2. Rozdział 2. Składnia Javy od podstaw
      1. Budowa programu w Javie
      2. Struktura leksykalna
        1. Zestaw znaków Unicode
        2. Rozpoznawanie wielkości znaków i białe znaki
        3. Komentarze
          1. Słowa zarezerwowane
          2. Identyfikatory
          3. Literały
          4. Interpunkcja
      3. Podstawowe typy danych
        1. Typ boolean
        2. Typ char
          1. Literały łańcuchowe
        3. Typy całkowitoliczbowe
        4. Typy zmiennoprzecinkowe
        5. Konwertowanie typów prostych
      4. Wyrażenia i operatory
        1. Podstawowe wiadomości o operatorach
        2. Kolejność wykonywania działań
        3. Łączność
        4. Zestawienie operatorów
        5. Liczba i typy argumentów
        6. Typ zwrotny
        7. Skutki uboczne
        8. Kolejność wykonywania działań
        9. Operatory arytmetyczne
        10. Operator łączenia łańcuchów
        11. Operatory inkrementacji i dekrementacji
        12. Operatory porównywania
        13. Operatory logiczne
        14. Operatory bitowe i przesunięcia
        15. Operatory przypisania
        16. Operator warunkowy
        17. Operator instanceof
        18. Operatory specjalne
      5. Instrukcje
        1. Instrukcje wyrażeniowe
        2. Instrukcje złożone
        3. Instrukcja pusta
        4. Instrukcje z etykietą
        5. Deklaracje zmiennych lokalnych
        6. Instrukcja if-else
          1. Klauzula else if
        7. Instrukcja switch
        8. Instrukcja while
        9. Instrukcja do
        10. Instrukcja for
        11. Instrukcja foreach
          1. Czego się nie robi za pomocą pętli foreach
        12. Instrukcja break
        13. Instrukcja continue
        14. Instrukcja return
        15. Instrukcja synchronized
        16. Instrukcja throw
        17. Instrukcja try-catch-finally
          1. Klauzula try
          2. Klauzula catch
          3. Klauzula finally
        18. Instrukcja try z zasobami
        19. Instrukcja assert
          1. Włączanie asercji
      6. Metody
        1. Definiowanie metod
        2. Modyfikatory metod
        3. Wyjątki kontrolowane i niekontrolowane
          1. Praca z wyjątkami kontrolowanymi
        4. Listy argumentów o zmiennej długości
      7. Podstawowe wiadomości o klasach i obiektach
        1. Definiowanie klasy
        2. Tworzenie obiektu
        3. Sposoby użycia obiektu
        4. Literały obiektowe
          1. Literały łańcuchowe
          2. Literały typowe
          3. Referencja null
        5. Wyrażenia lambda
      8. Tablice
        1. Typy tablic
          1. Konwersje rozszerzające typów tablicowych
          2. Składnia zgodna z językiem C
        2. Tworzenie i inicjowanie tablic
          1. Inicjatory tablic
        3. Używanie tablic
        4. Sposoby dostępu do elementów tablicy
          1. Granice tablicy
          2. Iterowanie tablic
          3. Kopiowanie tablic
          4. Narzędzia tablicowe
        5. Tablice wielowymiarowe
      9. Typy referencyjne
        1. Porównanie typów referencyjnych i prostych
        2. Używanie obiektów i kopii referencji
        3. Porównywanie obiektów
        4. Opakowywanie i rozpakowywanie
      10. Pakiety i przestrzenie nazw
        1. Deklarowanie pakietu
        2. Globalnie niepowtarzalne nazwy pakietów
        3. Importowanie typów
          1. Konflikty nazw i zastępowanie
        4. Importowanie składowych statycznych
          1. Importowanie składowych statycznych a metody przeciążone
      11. Struktura plików Javy
      12. Definiowanie i uruchamianie programów Java
      13. Podsumowanie
    3. Rozdział 3. Programowanie obiektowe w Javie
      1. Podstawowe wiadomości o klasach
        1. Podstawowe pojęcia obiektowości
        2. Inne typy referencyjne
        3. Składnia definicji klasy
      2. Pola i metody
        1. Składnia deklaracji pól
        2. Pola klas
        3. Metody klasy
        4. Pola egzemplarzy
        5. Metody egzemplarzy
        6. Jak działa referencja this
      3. Tworzenie i inicjowanie obiektów
        1. Definiowanie konstruktora
        2. Definiowanie większej liczby konstruktorów
        3. Wywoływanie jednego konstruktora z innego
        4. Domyślne wartości i inicjatory pól
          1. Bloki inicjacyjne
      4. Podklasy i dziedziczenie
        1. Rozszerzanie klasy
          1. Klasy finalne
        2. Nadklasy, klasa Object i hierarchia klas
        3. Konstruktory podklas
        4. Tworzenie łańcuchów konstruktorów i konstruktor domyślny
          1. Konstruktor domyślny
        5. Ukrywanie pól nadklasy
        6. Przesłanianie metod nadklasy
          1. Przesłanianie to nie ukrywanie
          2. Wirtualne wyszukiwanie metod
          3. Wywoływanie przesłoniętej metody
      5. Ukrywanie danych i hermetyzacja
        1. Kontrola dostępu
          1. Dostęp do pakietów
          2. Dostęp do klas
          3. Dostęp do składowych
          4. Kontrola dostępu i dziedziczenie
          5. Podsumowanie wiadomości o dostępie do składowych
        2. Metody dostępu do danych
      6. Klasy i metody abstrakcyjne
        1. Konwersje typów referencyjnych
      7. Podsumowanie wiadomości o modyfikatorach
    4. Rozdział 4. System typów Javy
      1. Interfejsy
        1. Definiowanie interfejsu
        2. Rozszerzanie interfejsów
        3. Implementowanie interfejsu
        4. Implementowanie kilku interfejsów
        5. Metody domyślne
          1. Zgodność wsteczna
          2. Implementacja metod domyślnych
        6. Interfejsy znacznikowe
      2. Typy ogólne
        1. Wprowadzenie do typów ogólnych
        2. Typy ogólne i parametry typów
        3. Składnia diamentowa
        4. Wymazywanie typów
        5. Symbole wieloznaczne
          1. Symbole wieloznaczne z ograniczeniami
        6. Kowariancja tablic
        7. Metody ogólne
        8. Używanie i projektowanie typów ogólnych
        9. Typy czasu kompilacji i wykonywania programu
      3. Wyliczenia i adnotacje
        1. Wyliczenia
        2. Adnotacje
        3. Definiowanie własnych adnotacji
        4. Adnotacje typów
      4. Typy zagnieżdżone
        1. Statyczne typy składowe
          1. Właściwości statycznych typów składowych
        2. Niestatyczne klasy składowe
          1. Właściwości klas składowych
          2. Ograniczenia dotyczące klas składowych
          3. Składnia klas składowych
          4. Zakres dostępności a dziedziczenie
        3. Klasy lokalne
          1. Właściwości klas lokalnych
          2. Ograniczenia dotyczące klas lokalnych
          3. Zakres dostępności klasy lokalnej
        4. Zakres leksykalny a zmienne lokalne
        5. Klasy anonimowe
          1. Ograniczenia dotyczące klas anonimowych
        6. Jak działają typy zagnieżdżone
          1. Implementacja niestatycznej klasy składowej
          2. Implementacja klasy lokalnej i anonimowej
      5. Wyrażenia lambda
        1. Konwersja wyrażeń lambda
        2. Referencje do metod
        3. Programowanie funkcyjne
      6. Podsumowanie
    5. Rozdział 5. Podstawy projektowania obiektowego w Javie
      1. Wartości w języku Java
      2. Ważne metody klasy java.lang.Object
        1. Metoda toString()
        2. Metoda equals()
        3. Metoda hashCode()
        4. Metoda Comparable::compareTo()
        5. Metoda clone()
      3. Aspekty projektowania obiektowego
        1. Stałe
        2. Interfejsy a klasy abstrakcyjne
        3. Metody egzemplarzowe czy klasowe
          1. Kilka słów o metodzie System.out.println()
        4. Kompozycja a dziedziczenie
        5. Dziedziczenie pól i metody dostępowe
        6. Singleton
      4. Wyjątki i ich obsługa
      5. Bezpieczne programowanie w Javie
    6. Rozdział 6. Zarządzanie pamięcią i współbieżność w Javie
      1. Podstawowe pojęcia zarządzania pamięcią w Javie
        1. Wycieki pamięci w Javie
        2. Podstawy algorytmu oznaczania i usuwania
      2. Optymalizacja procesu usuwania nieużywanych obiektów w maszynie wirtualnej
        1. Ewakuacja
      3. Sterta maszyny wirtualnej HotSpot
        1. Kasowanie nieużywanych obiektów ze starego pokolenia
        2. Inne systemy usuwania nieużywanych obiektów
          1. Współbieżny system oznaczania i usuwania
          2. G1
      4. Finalizacja
        1. Szczegóły finalizacji
      5. Mechanizmy współbieżności w Javie
        1. Cykl życia wątku
        2. Widoczność i zmienność
          1. Bezpieczeństwo współbieżności
        3. Wykluczanie i chronienie stanu
          1. Słowo kluczowe volatile
        4. Przydatne metody klasy Thread
          1. Metoda getId()
          2. Metody getPriority() i setPriority()
          3. Metody setName() i getName()
          4. Metoda getState()
          5. Metoda isAlive()
          6. Metoda start()
          7. Metoda interrupt()
          8. Metoda join()
          9. Metoda setDaemon()
          10. Metoda setUncaughtExceptionHandler()
        5. Niezalecane metody z klasy Thread
          1. Metoda stop()
          2. Metody suspend(), resume() i countStackFrames()
          3. Metoda destroy()
      6. Praca z wątkami
      7. Podsumowanie
  8. Część II Praca na platformie Java
    1. Rozdział 7. Zwyczaje programistyczne i tworzenie dokumentacji
      1. Konwencje nazewnicze i dotyczące stosowania wielkich liter
      2. Nadawanie nazw w praktyce
      3. Komentarze dokumentacyjne
        1. Struktura komentarza dokumentacyjnego
        2. Znaczniki komentarzy dokumentacyjnych
        3. Śródliniowe znaczniki dokumentacyjne
        4. Odniesienia w komentarzach dokumentacyjnych
        5. Komentarze dokumentacyjne pakietów
      4. Porady na temat pisania programów przenośnych
    2. Rozdział 8. Praca z kolekcjami i tablicami w Javie
      1. Wprowadzenie do API Collections
        1. Interfejs Collection
        2. Interfejs Set
        3. Interfejs List
          1. Pętle foreach i iteracja
          2. Dostęp swobodny do elementów listy
        4. Interfejs Map
        5. Interfejsy Queue i BlockingQueue
        6. Dodawanie elementów do kolejki
        7. Zdejmowanie elementów z kolejki
          1. Odpytywanie
        8. Metody pomocnicze
          1. Kolekcje specjalne
        9. Tablice i metody pomocnicze
      2. Wyrażenia lambda w kolekcjach Javy
        1. Techniki funkcyjne
          1. Filtr
          2. Słownik
          3. forEach
          4. Redukcja
        2. API strumieni
          1. Wartościowanie leniwe
          2. Domyślne metody pomocnicze interfejsu Streams
      3. Podsumowanie
    3. Rozdział 9. Obsługa najczęściej używanych formatów danych
      1. Tekst
        1. Specjalna składnia łańcuchów
          1. Literały łańcuchowe
          2. Metoda toString()
          3. Konkatenacja łańcuchów
        2. Niezmienność łańcuchów
          1. Kody skrótu i niezmienność efektywna
        3. Wyrażenia regularne
      2. Liczby i matematyka
        1. Reprezentacja typów całkowitoliczbowych w Javie
        2. Liczby zmiennoprzecinkowe w Javie
          1. Klasa BigDecimal
        3. Biblioteka standardowa funkcji matematycznych
      3. Data i godzina w Javie 8
        1. Wprowadzenie do nowego API daty i czasu
          1. Części znacznika czasu
          2. Przykład
        2. Zapytania
        3. Regulatory
        4. Stare narzędzia do pracy z datą i godziną
      4. Podsumowanie
    4. Rozdział 10. Obsługa plików oraz wejścia i wyjścia
      1. Klasyczny system wejścia i wyjścia Javy
        1. Pliki
        2. Strumienie
        3. Klasy do odczytu i zapisu
        4. Instrukcja try z zasobami jeszcze raz
        5. Wady klasycznego systemu wejścia i wyjścia
      2. Nowy system wejścia i wyjścia
        1. Klasa Files
        2. Interfejs Path
      3. Kanały i bufory NIO
        1. ByteBuffer
        2. Mapowane bufory bajtów
      4. Asynchroniczny system wejścia i wyjścia
        1. Styl z użyciem interfejsu Future
        2. Styl oparty na wywołaniach zwrotnych
        3. Usługi obserwowania i przeszukiwania katalogów
      5. Sieć
        1. HTTP
        2. TCP
        3. IP
    5. Rozdział 11. Ładowanie klas, refleksja oraz uchwyty do metod
      1. Pliki klas, obiekty klas i metadane
        1. Przykłady obiektów klas
        2. Obiekty klas i metadane
      2. Fazy ładowania klasy
        1. Ładowanie
        2. Weryfikacja
        3. Przygotowywanie i znajdowanie klas
        4. Inicjacja
      3. Bezpieczne programowanie i ładowanie klas
      4. Ładowanie klas w praktyce
        1. Hierarchia programów do ładowania klas
          1. Podstawowy program do ładowania klas
          2. Program ładowania klas rozszerzeń
          3. Program do ładowania klas aplikacji
          4. Tworzenie własnego programu do ładowania klas
      5. Refleksja
        1. Kiedy używać refleksji
        2. Jak używać refleksji
          1. Obiekty metod
          2. Problemy z refleksją
      6. Dynamiczne klasy pośredniczące
      7. Uchwyty do metod
        1. Klasa MethodType
        2. Wyszukiwanie metody
        3. Wywoływanie uchwytów do metod
    6. Rozdział 12. Nashorn
      1. Wprowadzenie do Nashorna
        1. Inne języki niż Java działające w maszynie wirtualnej Javy
        2. Motywy
      2. Wykonywanie kodu JavaScript w Nashornie
        1. Uruchamianie skryptów w wierszu poleceń
        2. Sposób użycia powłoki Nashorna
        3. Wykonywanie skryptów przy użyciu powłoki jjs
          1. Komentarze skryptowe
          2. Śródliniowe wykonywanie poleceń
          3. Interpolacja łańcuchów
          4. Zmienne specjalne
          5. Dokumenty śródliniowe
          6. Funkcje pomocnicze Nashorna
          7. Składnia shebang
      3. Nashorn i pakiet javax.script
        1. Pakiet javax.script i Nashorn
          1. API javax.script
      4. Nashorn dla zaawansowanych
        1. Wywoływanie Javy w Nashornie
          1. JavaClass i JavaPackage
          2. Funkcje JavaScript i wyrażenia lambda Javy
        2. Rozszerzenia językowe JavaScriptu Nashorna
          1. Pętle foreach
          2. Funkcje zawierające tylko jedno wyrażenie
          3. Wiele klauzul catch
        3. Pod maską
      5. Podsumowanie
        1. Projekt Avatar
    7. Rozdział 13. Narzędzia platformy i profile
      1. Narzędzia wiersza poleceń
        1. javac
          1. Prosty przykład użycia
          2. Opis
          3. Najczęściej używane przełączniki
          4. Uwagi
        2. java
          1. Prosty przykład użycia
          2. Opis
          3. Najczęściej używane przełączniki
          4. Uwagi
        3. jar
          1. Podstawowy przykład użycia
          2. Opis
          3. Opcje
          4. Modyfikatory
          5. Uwagi
        4. javadoc
          1. Podstawowy przykład użycia
          2. Opis
          3. Najczęściej używane przełączniki
          4. Uwagi
        5. jdeps
          1. Podstawowy przykład użycia
          2. Opis
          3. Najczęściej używane przełączniki
          4. Uwagi
        6. jps
          1. Podstawowy przykład użycia
          2. Opis
          3. Najczęściej używane przełączniki
          4. Uwagi
        7. jstat
          1. Podstawowy przykład użycia
          2. Opis
          3. Najczęściej używane przełączniki
          4. Uwaga
        8. jstatd
          1. Podstawowy przykład użycia
          2. Opis
          3. Najczęściej używane przełączniki
          4. Uwagi
        9. jinfo
          1. Podstawowy przykład użycia
          2. Opis
          3. Najczęściej używane przełączniki
          4. Uwagi
        10. jstack
          1. Podstawowy przykład użycia
          2. Opis
          3. Najczęściej używane przełączniki
          4. Uwagi
        11. jmap
          1. Podstawowy przykład użycia
          2. Opis
          3. Najczęściej używane przełączniki
          4. Uwagi
        12. javap
          1. Podstawowy przykład użycia
          2. Opis
          3. Najczęściej używane przełączniki
          4. Uwagi
      2. Narzędzie VisualVM
      3. Profile Java 8
        1. Motywy
        2. Profile kompaktowe
      4. Podsumowanie
  9. O autorach
  10. Kolofon
  11. Skorowidz
  12. Przypisy
    1. Rozdział 2. Składnia Javy od podstaw
    2. Rozdział 3. Programowanie obiektowe w Javie
    3. Rozdział 4. System typów Javy
    4. Rozdział 6. Zarządzanie pamięcią i współbieżność w Javie
    5. Rozdział 9. Obsługa najczęściej używanych formatów danych
    6. Rozdział 11. Ładowanie klas, refleksja oraz uchwyty do metod
    7. Rozdział 12. Nashorn
    8. Rozdział 13. Narzędzia platformy i profile