Java. Podstawy. Wydanie IX - Helion
Tytuł oryginału: Core Java Volume I--Fundamentals (9th Edition) (Core Series)
Tłumaczenie: Łukasz Piwko
ISBN: 978-83-246-7758-0
stron: 864, Format: 164x239, okładka: twarda
Data wydania: 2013-12-09
Księgarnia: Helion
Cena książki: 99,00 zł
Wykorzystaj potencjał lidera na rynku języków programowania!
Pomimo zaawansowanego wieku Java wciąż jest na topie. Ten język programowania oraz narzędzia z nim powiązane są najczęściej wybierane do tworzenia rozbudowanych systemów informatycznych. Skąd ta popularność? Przejrzysta składnia, obsługa nowoczesnych technik przesyłania informacji, automatyczne czyszczenie pamięci to tylko niektóre z atutów Javy. Jeżeli dołożymy do tego ogromną rzeszę użytkowników chętnych do pomocy, wszystko staje się jasne. Java jeszcze długo będzie na świeczniku!
Kolejne wydanie tej cenionej książki zostało zaktualizowane o wszystkie nowości, które pojawiły się w wersji 7 platformy Java Standard Edition. W trakcie lektury poznasz składnię języka oraz wszystkie istotne kwestie związane z programowaniem w Javie. Zrozumiesz założenia programowania obiektowego, nauczysz się korzystać z interfejsów oraz obsługiwać wyjątki. Przekonasz się również, jakie ułatwienia w tym zakresie oferuje Java 7 - obsługa wielu wyjątków w ramach jednego bloku catch to tylko czubek góry lodowej. Książka ta jest idealną pozycją dla wszystkich osób chcących poznać język Java. Sprawdzi się ona również w rękach doświadczonych programistów - jako źródło informacji na temat nowości w Java Standard Edition 7.
Poznaj:
- podstawy języka Java
- zasady programowania obiektowego
- zastosowanie interfejsów
- nowości wprowadzone w ostatniej wersji Javy
Wykorzystaj siłę obiektów. Zacznij programować obiektowo w języku Java!
Osoby które kupowały "Java. Podstawy. Wydanie IX", wybierały także:
- Wprowadzenie do Javy. Programowanie i struktury danych. Wydanie XII 193,23 zł, (59,90 zł -69%)
- Spring i Spring Boot. Kurs video. Testowanie aplikacji i bezpiecze 129,00 zł, (51,60 zł -60%)
- Metoda dziel i zwyci 89,00 zł, (35,60 zł -60%)
- 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%)
Spis treści
Java. Podstawy. Wydanie IX -- spis treści
- Wstęp
- Do Czytelnika
- O książce
- Konwencje typograficzne
- Przykłady kodu
- Podziękowania
- Rozdział 1 Wstęp do Javy
- W tym rozdziale:
- 1.1. Java jako platforma programistyczna
- 1.2. Słowa klucze białej księgi Javy
- 1.2.1. Prosty
- 1.2.2. Obiektowy
- 1.2.3. Sieciowy
- 1.2.4. Niezawodny
- 1.2.5. Bezpieczny
- 1.2.6. Niezależny od architektury
- 1.2.7. Przenośny
- 1.2.8. Interpretowany
- 1.2.9. Wysokowydajny
- 1.2.10. Wielowątkowy
- 1.2.11. Dynamiczny
- 1.3. Aplety Javy i internet
- 1.4. Krótka historia Javy
- 1.5. Główne nieporozumienia dotyczące Javy
- Rozdział 2 Środowisko programistyczne Javy
- W tym rozdziale:
- 2.1. Instalacja oprogramowania Java Development Kit
- 2.1.1. Pobieranie pakietu JDK
- 2.1.2. Ustawianie ścieżki dostępu
- 2.1.3. Instalacja bibliotek i dokumentacji
- 2.1.4. Instalacja przykładowych programów
- 2.1.5. Drzewo katalogów Javy
- 2.2. Wybór środowiska programistycznego
- 2.3. Używanie narzędzi wiersza poleceń
- 2.3.1. Rozwiązywanie problemów
- 2.4. Praca w zintegrowanym środowisku programistycznym
- 2.4.1. Znajdowanie błędów kompilacji
- 2.5. Uruchamianie aplikacji graficznej
- 2.6. Tworzenie i uruchamianie apletów
- Rozdział 3 Podstawowe elementy języka Java
- W tym rozdziale:
- 3.1. Prosty program w Javie
- 3.2. Komentarze
- 3.3. Typy danych
- 3.3.1. Typy całkowite
- 3.3.2. Typy zmiennoprzecinkowe
- 3.3.3. Typ char
- 3.3.4. Typ boolean
- 3.4. Zmienne
- 3.4.1. Inicjacja zmiennych
- 3.4.2. Stałe
- 3.5. Operatory
- 3.5.1. Operatory inkrementacji i dekrementacji
- 3.5.2. Operatory relacyjne i logiczne
- 3.5.3. Operatory bitowe
- 3.5.4. Funkcje i stałe matematyczne
- 3.5.5. Konwersja typów numerycznych
- 3.5.6. Rzutowanie
- 3.5.7. Nawiasy i priorytety operatorów
- 3.5.8. Typ wyliczeniowy
- 3.6. Łańcuchy
- 3.6.1. Podłańcuchy
- 3.6.2. Konkatenacja
- 3.6.3. Łańcuchów nie można modyfikować
- 3.6.4. Porównywanie łańcuchów
- 3.6.5. Łańcuchy puste i łańcuchy null
- 3.6.6. Współrzędne kodowe znaków i jednostki kodowe
- 3.6.7. API String
- 3.6.8. Dokumentacja API w internecie
- 3.6.9. Składanie łańcuchów
- 3.7. Wejście i wyjście
- 3.7.1. Odbieranie danych wejściowych
- 3.7.2. Formatowanie danych wyjściowych
- 3.7.3. Zapis i odczyt plików
- 3.8. Przepływ sterowania
- 3.8.1. Zasięg blokowy
- 3.8.2. Instrukcje warunkowe
- 3.8.3. Pętle
- 3.8.4. Pętle o określonej liczbie powtórzeń
- 3.8.5. Wybór wielokierunkowy instrukcja switch
- 3.8.6. Instrukcje przerywające przepływ sterowania
- 3.9. Wielkie liczby
- 3.10. Tablice
- 3.10.1. Pętla typu for each
- 3.10.2. Inicjowanie tablic i tworzenie tablic anonimowych
- 3.10.3. Kopiowanie tablicy
- 3.10.4. Parametry wiersza poleceń
- 3.10.5. Sortowanie tablicy
- 3.10.6. Tablice wielowymiarowe
- 3.10.7. Tablice postrzępione
- Rozdział 4 Obiekty i klasy
- W tym rozdziale:
- 4.1. Wstęp do programowania obiektowego
- 4.1.1. Klasy
- 4.1.2. Obiekty
- 4.1.3. Identyfikacja klas
- 4.1.4. Relacje między klasami
- 4.2. Używanie klas predefiniowanych
- 4.2.1. Obiekty i zmienne obiektów
- 4.2.2. Klasa GregorianCalendar
- 4.2.3. Metody udostępniające i zmieniające wartość elementu
- 4.3. Definiowanie własnych klas
- 4.3.1. Klasa Employee
- 4.3.2. Używanie wielu plików źródłowych
- 4.3.3. Analiza klasy Employee
- 4.3.4. Pierwsze kroki w tworzeniu konstruktorów
- 4.3.5. Parametry jawne i niejawne
- 4.3.6. Korzyści z hermetyzacji
- 4.3.7. Przywileje klasowe
- 4.3.8. Metody prywatne
- 4.3.9. Stałe jako pola klasy
- 4.4. Pola i metody statyczne
- 4.4.1. Pola statyczne
- 4.4.2. Stałe statyczne
- 4.4.3. Metody statyczne
- 4.4.4. Metody fabryczne
- 4.4.5. Metoda main
- 4.5. Parametry metod
- 4.6. Konstruowanie obiektów
- 4.6.1. Przeciążanie
- 4.6.2. Inicjacja pól wartościami domyślnymi
- 4.6.3. Konstruktor bezargumentowy
- 4.6.4. Jawna inicjacja pól
- 4.6.5. Nazywanie parametrów
- 4.6.6. Wywoływanie innego konstruktora
- 4.6.7. Bloki inicjujące
- 4.6.8. Niszczenie obiektów i metoda finalize
- 4.7. Pakiety
- 4.7.1. Importowanie klas
- 4.7.2. Importy statyczne
- 4.7.3. Dodawanie klasy do pakietu
- 4.7.4. Zasięg pakietów
- 4.8. Ścieżka klas
- 4.8.1. Ustawianie ścieżki klas
- 4.9. Komentarze dokumentacyjne
- 4.9.1. Wstawianie komentarzy
- 4.9.2. Komentarze do klas
- 4.9.3. Komentarze do metod
- 4.9.4. Komentarze do pól
- 4.9.5. Komentarze ogólne
- 4.9.6. Komentarze do pakietów i ogólne
- 4.9.7. Generowanie dokumentacji
- 4.10. Porady dotyczące projektowania klas
- Rozdział 5 Dziedziczenie
- W tym rozdziale:
- 5.1. Klasy, nadklasy i podklasy
- 5.1.1. Hierarchia dziedziczenia
- 5.1.2. Polimorfizm
- 5.1.3. Wiązanie dynamiczne
- 5.1.4. Wyłączanie dziedziczenia klasy i metody finalne
- 5.1.5. Rzutowanie
- 5.1.6. Klasy abstrakcyjne
- 5.1.7. Ochrona dostępu
- 5.2. Klasa bazowa Object
- 5.2.1. Metoda equals
- 5.2.2. Porównywanie a dziedziczenie
- 5.2.3. Metoda hashCode
- 5.2.4. Metoda toString
- 5.3. Generyczne listy tablicowe
- 5.3.1. Dostęp do elementów listy tablicowej
- 5.3.2. Zgodność pomiędzy typowanymi a surowymi listami tablicowymi
- 5.4. Osłony obiektów i autoboxing
- 5.5. Metody ze zmienną liczbą parametrów
- 5.6. Klasy wyliczeniowe
- 5.7. Refleksja
- 5.7.1. Klasa Class
- 5.7.2. Podstawy przechwytywania wyjątków
- 5.7.3. Zastosowanie refleksji w analizie funkcjonalności klasy
- 5.7.4. Refleksja w analizie obiektów w czasie działania programu
- 5.7.5. Zastosowanie refleksji w generycznym kodzie tablicowym
- 5.7.6. Wywoływanie dowolnych metod
- 5.8. Porady projektowe dotyczące dziedziczenia
- Rozdział 6 Interfejsy i klasy wewnętrzne
- W tym rozdziale:
- 6.1. Interfejsy
- 6.1.1. Własności interfejsów
- 6.1.2. Interfejsy a klasy abstrakcyjne
- 6.2. Klonowanie obiektów
- 6.3. Interfejsy a sprzężenie zwrotne
- 6.4. Klasy wewnętrzne
- 6.4.1. Dostęp do stanu obiektu w klasie wewnętrznej
- 6.4.2. Specjalne reguły składniowe dotyczące klas wewnętrznych
- 6.4.3. Czy klasy wewnętrzne są potrzebne i bezpieczne?
- 6.4.4. Lokalne klasy wewnętrzne
- 6.4.5. Dostęp do zmiennych finalnych z metod zewnętrznych
- 6.4.6. Anonimowe klasy wewnętrzne
- 6.4.7. Statyczne klasy wewnętrzne
- 6.5. Klasy proxy
- 6.5.1. Własności klas proxy
- Rozdział 7 Grafika
- W tym rozdziale:
- 7.1. Wprowadzenie do pakietu Swing
- 7.2. Tworzenie ramki
- 7.3. Pozycjonowanie ramki
- 7.3.1. Własności ramek
- 7.3.2. Określanie rozmiaru ramki
- 7.4. Wyświetlanie informacji w komponencie
- 7.5. Figury 2D
- 7.6. Kolory
- 7.7. Czcionki
- 7.8. Wyświetlanie obrazów
- Rozdział 8 Obsługa zdarzeń
- W tym rozdziale:
- 8.1. Podstawy obsługi zdarzeń
- 8.1.1. Przykład obsługa kliknięcia przycisku
- 8.1.2. Nabywanie biegłości w posługiwaniu się klasami wewnętrznymi
- 8.1.3. Tworzenie słuchaczy zawierających jedno wywołanie metody
- 8.1.4. Przykład zmiana stylu
- 8.1.5. Klasy adaptacyjne
- 8.2. Akcje
- 8.3. Zdarzenia generowane przez mysz
- 8.4. Hierarchia zdarzeń w bibliotece AWT
- 8.4.1. Zdarzenia semantyczne i niskiego poziomu
- Rozdział 9 Komponenty Swing interfejsu użytkownika
- W tym rozdziale:
- 9.1. Swing a wzorzec projektowy Model-View-Controller
- 9.1.1. Wzorce projektowe
- 9.1.2. Wzorzec Model-View-Controller
- 9.1.3. Analiza MVC przycisków Swing
- 9.2. Wprowadzenie do zarządzania rozkładem
- 9.2.1. Rozkład brzegowy
- 9.2.2. Rozkład siatkowy
- 9.3. Wprowadzanie tekstu
- 9.3.1. Pola tekstowe
- 9.3.2. Etykiety komponentów
- 9.3.3. Pola haseł
- 9.3.4. Obszary tekstowe
- 9.3.5. Panele przewijane
- 9.4. Komponenty umożliwiające wybór opcji
- 9.4.1. Pola wyboru
- 9.4.2. Przełączniki
- 9.4.3. Obramowanie
- 9.4.4. Listy rozwijalne
- 9.4.5. Suwaki
- 9.5. Menu
- 9.5.1. Tworzenie menu
- 9.5.2. Ikony w elementach menu
- 9.5.3. Pola wyboru i przełączniki jako elementy menu
- 9.5.4. Menu podręczne
- 9.5.5. Mnemoniki i akceleratory
- 9.5.6. Aktywowanie i dezaktywowanie elementów menu
- 9.5.7. Paski narzędzi
- 9.5.8. Dymki
- 9.6. Zaawansowane techniki zarządzania rozkładem
- 9.6.1. Rozkład GridBagLayout
- 9.6.1.1. Parametry gridx, gridy, gridwidth i gridheight
- 9.6.1.2. Pola weight
- 9.6.1.3. Parametry fill i anchor
- 9.6.1.4. Dopełnienie
- 9.6.1.5. Inny sposób ustawiania wartości parametrów gridx, gridy, gridwidth i gridheight
- 9.6.1.6. Klasa pomocnicza ułatwiająca pracę z ograniczeniami GridBagLayout
- 9.6.2. Rozkład grupowy
- 9.6.3. Nieużywanie żadnego zarządcy rozkładu
- 9.6.4. Niestandardowi zarządcy rozkładu
- 9.6.5. Kolejka dostępu
- 9.6.1. Rozkład GridBagLayout
- 9.7. Okna dialogowe
- 9.7.1. Okna dialogowe opcji
- 9.7.2. Tworzenie okien dialogowych
- 9.7.3. Wymiana danych
- 9.7.4. Okna dialogowe wyboru plików
- 9.7.5. Okna dialogowe wyboru kolorów
- Rozdział 10 Przygotowywanie apletów i aplikacji do użytku
- W tym rozdziale:
- 10.1. Pliki JAR
- 10.1.1. Manifest
- 10.1.2. Wykonywalne pliki JAR
- 10.1.3. Zasoby
- 10.1.4. Pieczętowanie pakietów
- 10.2. Java Web Start
- 10.2.1. Piaskownica
- 10.2.2. Podpisywanie kodu
- 10.2.3. API JNLP
- 10.3. Aplety
- 10.3.1. Prosty aplet
- 10.3.1.1. Konwersja programów na aplety
- 10.3.2. Znacznik applet i jego atrybuty
- 10.3.3. Znacznik object
- 10.3.4. Parametry przekazujące informacje do apletów
- 10.3.5. Dostęp do obrazów i plików audio
- 10.3.6. Środowisko działania apletu
- 10.3.6.1. Komunikacja pomiędzy apletami
- 10.3.6.2. Wyświetlanie elementów w przeglądarce
- 10.3.1. Prosty aplet
- 10.4. Zapisywanie preferencji użytkownika
- 10.4.1. Mapy własności
- 10.4.2. API Preferences
- Rozdział 11 Wyjątki, dzienniki, asercje i debugowanie
- W tym rozdziale:
- 11.1. Obsługa błędów
- 11.1.1. Klasyfikacja wyjątków
- 11.1.2. Deklarowanie wyjątków kontrolowanych
- 11.1.3. Zgłaszanie wyjątków
- 11.1.4. Tworzenie klas wyjątków
- 11.2. Przechwytywanie wyjątków
- 11.2.1. Przechwytywanie wielu typów wyjątków
- 11.2.2. Powtórne generowanie wyjątków i budowanie łańcuchów wyjątków
- 11.2.3. Klauzula finally
- 11.2.4. Instrukcja try z zasobami
- 11.2.5. Analiza danych ze śledzenia stosu
- 11.3. Wskazówki dotyczące stosowania wyjątków
- 11.4. Asercje
- 11.4.1. Włączanie i wyłączanie asercji
- 11.4.2. Zastosowanie asercji do sprawdzania parametrów
- 11.4.3. Zastosowanie asercji do dokumentowania założeń
- 11.5. Dzienniki
- 11.5.1. Podstawy zapisu do dziennika
- 11.5.2. Zaawansowane techniki zapisu do dziennika
- 11.5.3. Zmiana konfiguracji menedżera dzienników
- 11.5.4. Lokalizacja
- 11.5.5. Obiekty typu Handler
- 11.5.6. Filtry
- 11.5.7. Formatery
- 11.5.8. Przepis na dziennik
- 11.6. Wskazówki dotyczące debugowania
- 11.7. Wskazówki dotyczące debugowania aplikacji z GUI
- 11.7.1. Zaprzęganie robota AWT do pracy
- 11.8. Praca z debugerem
- Rozdział 12 Programowanie ogólne
- W tym rozdziale:
- 12.1. Dlaczego programowanie ogólne
- 12.1.1. Dla kogo programowanie ogólne
- 12.2. Definicja prostej klasy ogólnej
- 12.3. Metody ogólne
- 12.4. Ograniczenia zmiennych typowych
- 12.5. Kod ogólny a maszyna wirtualna
- 12.5.1. Translacja wyrażeń generycznych
- 12.5.2. Translacja metod ogólnych
- 12.5.3. Używanie starego kodu
- 12.6. Ograniczenia i braki
- 12.6.1. Nie można podawać typów prostych jako parametrów typowych
- 12.6.2. Sprawdzanie typów w czasie działania programu jest możliwe tylko dla typów surowych
- 12.6.3. Nie można tworzyć tablic typów ogólnych
- 12.6.4. Ostrzeżenia dotyczące zmiennej liczby argumentów
- 12.6.5. Nie wolno tworzyć egzemplarzy zmiennych typowych
- 12.6.6. Zmiennych typowych nie można używać w statycznych kontekstach klas ogólnych
- 12.6.7. Obiektów klasy ogólnej nie można generować ani przechwytywać
- 12.6.7.1. Można wyłączyć sprawdzanie wyjątków kontrolowanych
- 12.6.8. Uważaj na konflikty, które mogą powstać po wymazaniu typów
- 12.7. Zasady dziedziczenia dla typów ogólnych
- 12.8. Typy wieloznaczne
- 12.8.1. Ograniczenia nadtypów typów wieloznacznych
- 12.8.2. Typy wieloznaczne bez ograniczeń
- 12.8.3. Chwytanie typu wieloznacznego
- 12.9. Refleksja a typy ogólne
- 12.9.1. Zastosowanie parametrów Class<T> do dopasowywania typów
- 12.9.2. Informacje o typach generycznych w maszynie wirtualnej
- Rozdział 13 Kolekcje
- W tym rozdziale:
- 13.1. Interfejsy kolekcyjne
- 13.1.1. Oddzielenie warstwy interfejsów od warstwy klas konkretnych
- 13.1.2. Interfejsy Collection i Iterator
- 13.1.2.1. Iteratory
- 13.1.2.2. Usuwanie elementów
- 13.1.2.3. Uogólnione metody użytkowe
- 13.2. Konkretne klasy kolekcyjne
- 13.2.1. Listy powiązane
- 13.2.2. Listy tablicowe
- 13.2.3. Zbiór HashSet
- 13.2.4. Zbiór TreeSet
- 13.2.5. Porównywanie obiektów
- 13.2.6. Kolejki Queue i Deque
- 13.2.7. Kolejki priorytetowe
- 13.2.8. Mapy
- 13.2.9. Specjalne klasy Set i Map
- 13.2.9.1. Klasa WeakHashMap
- 13.2.9.2. Klasy LinkedHashSet i LinkedHashMap
- 13.2.9.3. Klasy EnumSet i EnumMap
- 13.2.9.4. Klasa IdentityHashMap
- 13.3. Architektura kolekcji
- 13.3.1. Widoki i obiekty opakowujące
- 13.3.1.1. Lekkie obiekty opakowujące kolekcje
- 13.3.1.2. Widoki przedziałowe
- 13.3.1.3. Widoki niemodyfikowalne
- 13.3.1.4. Widoki synchronizowane
- 13.3.1.5. Widoki kontrolowane
- 13.3.1.6. Uwagi dotyczące operacji opcjonalnych
- 13.3.2. Operacje zbiorcze
- 13.3.3. Konwersja pomiędzy kolekcjami a tablicami
- 13.3.1. Widoki i obiekty opakowujące
- 13.4. Algorytmy
- 13.4.1. Sortowanie i tasowanie
- 13.4.2. Wyszukiwanie binarne
- 13.4.3. Proste algorytmy
- 13.4.4. Pisanie własnych algorytmów
- 13.5. Stare kolekcje
- 13.5.1. Klasa Hashtable
- 13.5.2. Wyliczenia
- 13.5.3. Mapy własności
- 13.5.4. Stosy
- 13.5.5. Zbiory bitów
- 13.5.5.1. Test wydajności za pomocą sita Eratostenesa
- Rozdział 14 Wielowątkowość
- W tym rozdziale:
- 14.1. Czym są wątki
- 14.1.1. Wykonywanie zadań w osobnych wątkach
- 14.2. Przerywanie wątków
- 14.3. Stany wątków
- 14.3.1. Wątki NEW
- 14.3.2. Wątki RUNNABLE
- 14.3.3. Wątki BLOCKED i WAITING
- 14.3.4. Zamykanie wątków
- 14.4. Własności wątków
- 14.4.1. Priorytety wątków
- 14.4.2. Wątki demony
- 14.4.3. Procedury obsługi nieprzechwyconych wyjątków
- 14.5. Synchronizacja
- 14.5.1. Przykład sytuacji powodującej wyścig
- 14.5.2. Wyścigi
- 14.5.3. Obiekty klasy Lock
- 14.5.4. Warunki
- 14.5.5. Słowo kluczowe synchronized
- 14.5.6. Bloki synchronizowane
- 14.5.7. Monitor
- 14.5.8. Pola ulotne
- 14.5.9. Zmienne finalne
- 14.5.10. Zmienne atomowe
- 14.5.11. Zakleszczenia
- 14.5.12. Zmienne lokalne wątków
- 14.5.13. Testowanie blokad i odmierzanie czasu
- 14.5.14. Blokady odczytu-zapisu
- 14.5.15. Dlaczego metody stop i suspend są wycofywane
- 14.6. Kolejki blokujące
- 14.7. Kolekcje bezpieczne wątkowo
- 14.7.1. Szybkie mapy, zbiory i kolejki
- 14.7.2. Tablice kopiowane przy zapisie
- 14.7.3. Starsze kolekcje bezpieczne wątkowo
- 14.8. Interfejsy Callable i Future
- 14.9. Klasa Executors
- 14.9.1. Pule wątków
- 14.9.2. Planowanie wykonywania
- 14.9.3. Kontrolowanie grup zadań
- 14.9.4. Szkielet rozgałęzienie-złączenie
- 14.10. Synchronizatory
- 14.10.1. Semafory
- 14.10.2. Klasa CountDownLatch
- 14.10.3. Bariery
- 14.10.4. Klasa Exchanger
- 14.10.5. Kolejki synchroniczne
- 14.11. Wątki a biblioteka Swing
- 14.11.1. Uruchamianie czasochłonnych zadań
- 14.11.2. Klasa SwingWorker
- 14.11.3. Zasada jednego wątku
- Dodatek A Słowa kluczowe Javy