Opis książki: Kompletne i niezastąpione źródło wiedzy dla doświadczonych programistów
- Kolejne wydanie doskonałego przewodnika po zaawansowanych możliwościach Javy
- Wszystkie kody źródłowe w książce zaktualizowane do J2SE 5.0
- Szczegółowe omówienie wielowątkowości, kolekcji, programowania aplikacji sieciowych i bazodanowych, bezpieczeństwa i internacjonalizacji aplikacji, obiektów rozproszonych i języka XML
Kolejne już wydanie przewodnika opisującego zaawansowane i nieznane właściwości języka Java, tym razem w wersji 5.0, to kompendium wiedzy dla wszystkich programistów zamierzających tworzyć rozbudowane aplikacje. Nowa wersja języka Java to nie tylko nowy numer -- to przede wszystkim ogromna ilość nowych funkcji i możliwości, klas i obiektów. W JDK 5.0 wprowadzono nowe mechanizmy obsługi wątków i kolekcji, rozszerzono możliwości biblioteki Swing i klas wykorzystywanych do tworzenia aplikacji bazodanowych i sieciowych. "Java 2. Techniki zaawansowane. Wydanie II" przedstawia i opisuje wszystkie te nowości. Wszystkie przykładowe programy zostały zaktualizowane do najnowszej wersji Javy i przedstawiają praktyczne rozwiązania rzeczywistych problemów, z jakimi może spotkać się twórca aplikacji w języku Java.Książka zawiera wiele nowych podrozdziałów poświęconych nowościom wprowadzonym w J2SE 5.0. Dokładnie i na przykładach opisuje zagadnienia związane z wielowątkowością, kolekcjami, metadanymi, stosowaniem języka XML, komunikacją z bazami danych i wieloma innymi elementami zaawansowanego programowania w Javie. - Aplikacje wielowątkowe
- Kolekcje i operacje na nich
- Połączenia sieciowe
- Interfejs JDBC i LDAP
- Aplikacje rozproszone
- Technologia CORBA
- Zaawansowane możliwości bibliotek Swing i AWT
- Technologia JavaBeans
- Bezpieczeństwo aplikacji
- Internacjonalizacja
- Korzystanie z języka XML
Jeśli zamierzasz wykorzystać Javę w złożonym projekcie informatycznym, ta książka będzie dla Ciebie niezastąpiona.
Podziękowania (11)
Przedmowa (13)
- Do Czytelnika (13)
- O książce (13)
Rozdział 1. Wielowątkowość (17)
- Czym są wątki? (18)
- Przerywanie wątków (29)
- Stany wątków (32)
- Nowe wątki (32)
- Wątki wykonywalne (33)
- Wątki zablokowane (33)
- Wątki martwe (35)
- Właściwości wątków (36)
- Priorytety wątków (36)
- Wątki-demony (37)
- Grupy wątków (37)
- Procedury obsługi wyjątków (39)
- Synchronizacja (40)
- Przykład wyścigu (41)
- Wytłumaczenie wyścigu (45)
- Blokady (46)
- Warunki (49)
- Słowo kluczowe synchronized (54)
- Bloki synchronizowane (60)
- Pola volatile (61)
- Zakleszczenia (63)
- Równorzędne traktowanie wątków (65)
- Testowanie blokad i limity czasu (65)
- Blokady odczytu i zapisu (67)
- Dlaczego metody stop i suspend nie są zalecane? (68)
- Kolejki blokujące (70)
- Kolekcje (76)
- Efektywne implementacje kolejki i tablicy mieszającej (76)
- Kolekcje CopyOnWriteArrayList i CopyOnWriteArraySet (78)
- Starsze kolekcje i wielowątkowość (78)
- Interfejsy Callable i Future (78)
- Egzekutory (83)
- Pule wątków (83)
- Wykonywanie zadań według planu (87)
- Sterowanie grupami wątków (88)
- Synchronizatory (89)
- Bariery (90)
- Rejestry odliczające (91)
- Przekaźniki (91)
- Kolejki synchroniczne (91)
- Semafory (92)
- Wątki i Swing (98)
- Zasada pojedynczego wątku (99)
- Wątek roboczy i Swing (104)
Rozdział 2. Kolekcje (111)
- Interfejsy kolekcji (111)
- Rozdzielenie interfejsów kolekcji od ich implementacji (112)
- Interfejsy Collection i Iterator w bibliotekach języka Java (114)
- Kolekcje konkretne (119)
- Listy powiązane (120)
- Klasa ArrayList (128)
- Zbiory z kodowaniem mieszającym (129)
- Zbiory drzewiaste (132)
- Kolejki z priorytetami (138)
- Mapy (139)
- Specjalizowane klasy zbiorów i map (144)
- Szkielet kolekcji (149)
- Widoki i opakowania (152)
- Operacje masowe (158)
- Wykorzystanie biblioteki kolekcji z tradycyjnymi bibliotekami (159)
- Rozbudowywanie szkieletu (160)
- Algorytmy (163)
- Sortowanie i tasowanie (164)
- Wyszukiwanie binarne (167)
- Proste algorytmy (168)
- Programowanie własnych algorytmów (169)
- Tradycyjne kolekcje (171)
- Klasa Hashtable (171)
- Wyliczenia (171)
- Zbiory właściwości (172)
- Stosy (173)
- Zbiory bitów (173)
Rozdział 3. Programowanie aplikacji sieciowych (179)
- Połączenia z serwerem (179)
- Implementacja serwerów (183)
- Obsługa wielu klientów (186)
- Wysyłanie poczty elektronicznej (189)
- Połączenia wykorzystujące URL (193)
- URL i URI (194)
- Zastosowanie klasy URLConnection do pobierania informacji (196)
- Wysyłanie danych do formularzy (205)
- Zaawansowane programowanie przy użyciu gniazdek sieciowych (214)
- Limity czasu gniazdek (214)
- Przerywanie operacji gniazdek (215)
- Połączenia częściowo zamknięte (219)
- Adresy internetowe (220)
Rozdział 4. Połączenia do baz danych: JDBC (225)
- Architektura JDBC (226)
- Typy sterowników JDBC (227)
- Typowe zastosowania JDBC (228)
- Język SQL (230)
- Instalacja JDBC (235)
- Podstawowe koncepcje programowania przy użyciu JDBC (235)
- Adresy URL baz danych (236)
- Nawiązywanie połączenia (236)
- Wykonywanie poleceń języka SQL (241)
- Zaawansowane typy języka SQL (242)
- Zarządzanie połączeniami, poleceniami i zbiorami wyników (245)
- Wypełnianie bazy danych (246)
- Wykonywanie zapytań (249)
- Polecenia przygotowane (250)
- Przewijalne i aktualizowalne zbiory wyników zapytań (258)
- Przewijalne zbiory rekordów (259)
- Aktualizowalne zbiory rekordów (262)
- Metadane (266)
- Zbiory rekordów (275)
- Buforowane zbiory rekordów (276)
- Transakcje (285)
- Punkty kontrolne (286)
- Aktualizacje wsadowe (JDBC 2) (286)
- Zaawansowane zarządzanie połączeniami (289)
- Wprowadzenie do LDAP (290)
- Konfiguracja serwera LDAP (291)
- Dostęp do informacji katalogu LDAP (294)
Rozdział 5. Obiekty rozproszone (305)
- Role klienta i serwera (306)
- Wywołania zdalnych metod (308)
- Namiastka i szeregowanie parametrów (309)
- Dynamiczne ładowanie klas (311)
- Konfiguracja wywołania zdalnych metod (312)
- Interfejsy i implementacje (312)
- Generowanie klasy namiastki (315)
- Odnajdywanie obiektów serwera (315)
- Po stronie klienta (319)
- Przygotowanie wdrożenia (324)
- Wdrożenie programu (326)
- Przekazywanie parametrów zdalnym metodom (329)
- Przekazywanie lokalnych obiektów (329)
- Przekazywanie zdalnych obiektów (341)
- Zdalne obiekty i metody equals oraz hashCode (343)
- Klonowanie zdalnych obiektów (344)
- Aktywacja obiektów serwera (344)
- Java IDL i CORBA (350)
- Język IDL (351)
- Przykład aplikacji CORBA (356)
- Implementacja serwerów CORBA (365)
- Wywołania zdalnych metod i SOAP (370)
Rozdział 6. Zaawansowane możliwości pakietu Swing (377)
- Listy (377)
- Komponent JList (378)
- Modele list (384)
- Wstawianie i usuwanie (388)
- Odrysowywanie zawartości listy (390)
- Drzewa (395)
- Najprostsze drzewa (396)
- Przeglądanie węzłów (411)
- Rysowanie węzłów (412)
- Nasłuchiwanie zdarzeń w drzewach (419)
- Własne modele drzew (425)
- Tabele (433)
- Najprostsze tabele (433)
- Modele tabel (436)
- Filtry sortujące (445)
- Rysowanie i edytowanie zawartości komórek (451)
- Operacje na wierszach i kolumnach (464)
- Wybór wierszy, kolumn i komórek (465)
- Komponenty formatujące tekst (473)
- Wskaźniki postępu (479)
- Paski postępu (480)
- Monitory postępu (484)
- Monitorowanie postępu strumieni wejścia (489)
- Organizatory komponentów (494)
- Panele dzielone (495)
- Panele z zakładkami (499)
- Panele pulpitu i ramki wewnętrzne (504)
- Rozmieszczenie kaskadowe i sąsiadujące (507)
- Zgłaszanie weta do zmiany właściwości (510)
Rozdział 7. Zaawansowane możliwości biblioteki AWT (521)
- Potokowe tworzenie grafiki (522)
- Figury (524)
- Wykorzystanie klas obiektów graficznych (526)
- Pola (539)
- Ślad pędzla (543)
- Wypełnienia (550)
- Przekształcenia układu współrzędnych (556)
- Przycinanie (565)
- Przezroczystość i składanie obrazów (569)
- Wskazówki operacji graficznych (577)
- Czytanie i zapisywanie plików graficznych (583)
- Wykorzystanie obiektów zapisu i odczytu plików graficznych (583)
- Odczyt i zapis plików zawierających sekwencje obrazów (585)
- Operacje na obrazach (595)
- Dostęp do danych obrazu (595)
- Filtrowanie obrazów (602)
- Drukowanie (610)
- Drukowanie grafiki (611)
- Drukowanie wielu stron (621)
- Podgląd wydruku (623)
- Usługi drukowania (631)
- Usługi drukowania za pośrednictwem strumieni (637)
- Atrybuty drukowania (642)
- Schowek (649)
- Klasy i interfejsy umożliwiające przekazywanie danych (650)
- Przekazywanie tekstu (651)
- Interfejs Transferable i formaty danych (655)
- Przekazywanie obrazów za pomocą schowka (657)
- Wykorzystanie lokalnego schowka do przekazywania referencji obiektów (662)
- Wykorzystanie schowka systemowego do przekazywania obiektów Java (668)
- Mechanizm "przeciągnij i upuść" (672)
- Cele mechanizmu "przeciągnij i upuść" (674)
- Źródła mechanizmu "przeciągnij i upuść" (683)
- Przekazywanie danych pomiędzy komponentami Swing (688)
Rozdział 8. JavaBeans (693)
- Dlaczego ziarnka? (694)
- Proces tworzenia ziarnek JavaBeans (695)
- Wykorzystanie ziarnek do tworzenia aplikacji (698)
- Umieszczanie ziarnek w plikach JAR (699)
- Korzystanie z ziarnek (700)
- Wzorce nazw właściwości ziarnek i zdarzeń (705)
- Typy właściwości ziarnek (708)
- Właściwości proste (708)
- Właściwości indeksowane (709)
- Właściwości powiązane (710)
- Właściwości ograniczone (712)
- Klasa informacyjna ziarnka (718)
- Edytory właściwości (723)
- Implementacja edytora właściwości (730)
- Indywidualizacja ziarnka (744)
- Implementacja klasy indywidualizacji (746)
- Trwałość ziarnek JavaBeans (753)
- Zastosowanie mechanizmu trwałości JavaBeans dla dowolnych danych (758)
- Kompletny przykład zastosowania trwałości JavaBeans (764)
Rozdział 9. Bezpieczeństwo (775)
- Ładowanie klas (776)
- Implementacja własnej procedury ładującej (779)
- Weryfikacja kodu maszyny wirtualnej (784)
- Menedżery bezpieczeństwa i pozwolenia (789)
- Bezpieczeństwo na platformie Java 2 (791)
- Pliki polityki bezpieczeństwa (794)
- Tworzenie własnych klas pozwoleń (801)
- Implementacja klasy pozwoleń (802)
- Tworzenie własnych menedżerów bezpieczeństwa (808)
- Uwierzytelnianie użytkowników (815)
- Moduły JAAS (820)
- Podpis cyfrowy (829)
- Skróty wiadomości (830)
- Podpisywanie wiadomości (835)
- Uwierzytelnianie wiadomości (843)
- Certyfikaty X.509 (845)
- Tworzenie certyfikatów (847)
- Podpisywanie certyfikatów (849)
- Podpisywanie kodu (857)
- Podpisywanie plików JAR (857)
- Certyfikaty twórców oprogramowania (861)
- Szyfrowanie (863)
- Szyfrowanie symetryczne (863)
- Strumienie szyfrujące (870)
- Szyfrowanie kluczem publicznym (871)
Rozdział 10. Internacjonalizacja (877)
- Lokalizatory (878)
- Formaty liczby (883)
- Data i czas (890)
- Porządek alfabetyczny (897)
- Formatowanie komunikatów (905)
- Formatowanie z wariantami (907)
- Pliki tekstowe i zbiory znaków (909)
- Internacjonalizacja a pliki źródłowe programów (909)
- Komplety zasobów (910)
- Lokalizacja zasobów (911)
- Pliki właściwości (912)
- Klasy kompletów zasobów (913)
- Kompletny przykład (915)
Rozdział 11. Metody macierzyste (929)
- Wywołania funkcji języka C z programów w języku Java (931)
- Wykorzystanie funkcji printf (932)
- Numeryczne parametry metod i wartości zwracane (937)
- Wykorzystanie funkcji printf do formatowania liczb (937)
- Łańcuchy znaków jako parametry (938)
- Wywołanie funkcji sprintf przez metodę macierzystą (942)
- Dostęp do składowych obiektu (944)
- Dostęp do pól instancji (944)
- Dostęp do pól statycznych (949)
- Sygnatury (949)
- Wywoływanie metod języka Java (951)
- Wywoływanie metod obiektów (951)
- Wywoływanie metod statycznych (952)
- Konstruktory (953)
- Alternatywne sposoby wywoływania metod (954)
- Tablice (958)
- Obsługa błędów (963)
- Interfejs programowy wywołań języka Java (967)
- Kompletny przykład: dostęp do rejestru systemu Windows (971)
- Rejestr systemu Windows (971)
- Interfejs dostępu do rejestru na platformie Java (972)
- Implementacja dostępu do rejestru za pomocą metod macierzystych (973)
Rozdział 12. Język XML (987)
- Wprowadzenie do języka XML (988)
- Struktura dokumentu XML (990)
- Parsowanie dokumentów XML (993)
- Kontrola poprawności dokumentów XML (1003)
- Definicje typów dokumentów (1005)
- XML Schema (1012)
- Praktyczny przykład (1014)
- Wyszukiwanie infomacji i XPath (1028)
- Przestrzenie nazw (1033)
- Wykorzystanie parsera SAX (1036)
- Tworzenie dokumentów XML (1041)
- Przekształcenia XSL (1049)
Rozdział 13. Adnotacje (1059)
- Umieszczanie metadanych w programach (1060)
- Przykład - adnotacje obsługi zdarzeń (1061)
- Składnia adnotacji (1066)
- Adnotacje standardowe (1070)
- Adnotacje regularne (1070)
- Metaadnotacje (1071)
- Narzędzie apt do przetwarzania adnotacji w kodzie źródłowym (1074)
- Inżynieria kodu bajtowego (1080)
- Modyfikacja kodu bajtowego podczas ładowania (1089)
Skorowidz (1093)
|