okladka

Zobacz, co ma do zaoferowania najnowsza wersja Javy

  • Zdefiniuj własne klasy generyczne
  • Zastosuj w programach nowe typy danych
  • Poznaj nowe mechanizmy obsługi współbieżności

Najnowsza wersja języka i środowiska Java, nosząca nazwę Tiger, to nie aktualizacja, ale prawie nowy język programowania. Wprowadzono do niej ponad sto poprawek, zmian i udoskonaleń oraz nowe biblioteki i interfejsy programistyczne. Java 1.5 Tiger oferuje programistom dziesiątki nowych możliwości. Nowa specyfikacja języka jest ogromnym tomiskiem, którego lektura znuży nawet największego fanatyka Javy. Kontakt z najnowszym wcieleniem tego popularnego języka programowania najlepiej zacząć od poznania tego, co faktycznie jest w nim nowe.

"Java 1.5 Tiger. Notatnik programisty" to książka, zawierająca notatki prawdziwych fachowców, którzy analizowali nową wersję Javy jeszcze przed jej publiczną prezentacją. Przedstawia wszystkie nowości Javy 1.5 zilustrowane ponad pięćdziesięcioma przykładami kodu źródłowego. Czytając ją, poznasz zasady stosowania generyczności, zrozumiesz działanie mechanizmów automatycznego opakowywania i rozpakowywania, nauczysz się korzystać z nowych sposobów formatowania tekstów i opanujesz posługiwanie się typami wyliczeniowymi i adnotacjami.

  • Generyczność i typy parametryczne
  • Tworzenie i stosowanie typów wyliczeniowych
  • Automatyczne opakowywanie i rozpakowywanie
  • Wykorzystywanie list argumentów o zmiennej długości
  • Instrukcja for/in
  • Obsługa i synchronizacja wątków

Poznaj i ujarzmij siłę "tygrysa".


Seria "Zapiski programisty" (7)
Wstęp (13)
Rozdział 1. Co nowego? (21)
  • Tablice (22)
  • Kolejki (25)
  • Kolejki uporządkowane i komparatory (28)
  • Przesłanianie typów zwracanych (30)
  • Wykorzystanie zalet Unicode (32)
  • Klasa StringBuilder (34)
Rozdział 2. Generyczność (37)
  • Stosowanie list bezpiecznych typologicznie (38)
  • Stosowanie map bezpiecznych typologicznie (41)
  • Przeglądanie typów parametrycznych (42)
  • Akceptowanie typów parametrycznych jako argumentów (45)
  • Zwracanie typów parametrycznych (46)
  • Stosowanie typów parametrycznych jako parametrów typu (47)
  • Ostrzeżenia lint (48)
  • Generyczność i konwersje typów (49)
  • Stosowanie wzorców typów (53)
  • Tworzenie typów generycznych (55)
  • Ograniczanie parametrów typu (56)
Rozdział 3. Typy wyliczeniowe (59)
  • Tworzenie typu wyliczeniowego (60)
  • Typy wyliczeniowe rozwijane w miejscu deklaracji (66)
  • Przeglądanie typów wyliczeniowych (67)
  • Typy wyliczeniowe w instrukcjach wyboru (68)
  • Mapy typów wyliczeniowych (73)
  • Zbiory typów wyliczeniowych (75)
  • Dodawanie metod do typów wyliczeniowych (78)
  • Implementacja interfejsów i typy wyliczeniowe (82)
  • Ciała klas specyficzne dla poszczególnych wartości (83)
  • Samodzielne definiowanie typów wyliczeniowych (86)
  • Rozszerzanie typu wyliczeniowego (87)
Rozdział 4. Automatyczne opakowywanie i rozpakowywanie (89)
  • Przekształcanie wartości typów podstawowych w obiekty typów opakowujących (90)
  • Przekształcanie obiektów typów opakowujących w wartości typów podstawowych (92)
  • Operacje zwiększania i zmniejszania dla typów opakowujących (93)
  • Boolean i boolean (94)
  • Wyrażenia warunkowe i rozpakowywanie (95)
  • Instrukcje sterujące i rozpakowywanie (97)
  • Wybór metody przeciążonej (98)
Rozdział 5. Listy argumentów o zmiennej długości (101)
  • Tworzenie list argumentów o zmiennej długości (103)
  • Przeglądanie list argumentów o zmiennej długości (106)
  • Listy argumentów o zerowej długości (108)
  • Obiekty jako argumenty zamiast typów podstawowych (110)
  • Zapobieganie automatycznej konwersji tablic (112)
Rozdział 6. Adnotacje (115)
  • Stosowanie standardowych typów adnotacji (116)
  • Adnotowanie przesłaniania metody (119)
  • Adnotowanie przestarzałej metody (121)
  • Wyłączanie ostrzeżeń (123)
  • Tworzenie własnych typów adnotacji (125)
  • Adnotowanie adnotacji (128)
  • Definiowanie elementu docelowego dla typu adnotacji (129)
  • Zachowywanie typu adnotacji (130)
  • Dokumentowanie typów adnotacji (131)
  • Konfigurowanie dziedziczenia adnotacji (134)
  • Refleksje i adnotacje (137)
Rozdział 7. Instrukcja for/in (143)
  • Pozbywanie się iteratorów (144)
  • Przeglądanie tablic (147)
  • Przeglądanie kolekcji (148)
  • Zapobieganie niepotrzebnemu rzutowaniu (150)
  • Adaptacja klas do pracy z pętlą for/in (152)
  • Określanie pozycji na liście i wartości zmiennej (157)
  • Usuwanie elementów listy w pętli for/in (158)
Rozdział 8. Import składowych statycznych (161)
  • Importowanie składowych statycznych (162)
  • Stosowanie wzorców podczas importowania (164)
  • Importowanie wartości typów wyliczeniowych (165)
  • Importowanie wielu składowych o tej samej nazwie (167)
  • Przesłanianie importu składowych statycznych (169)
Rozdział 9. Formatowanie (171)
  • Tworzenie instancji klasy Formatter (171)
  • Formatowanie danych wyjściowych (172)
  • Stosowanie metody format() (178)
  • Stosowanie metody printf() (180)
Rozdział 10. Wątki (181)
  • Obsługa wyjątków (182)
  • Kolekcje i wątki (186)
  • Stosowanie kolejek blokujących (189)
  • Określanie limitów czasu dla blokowania (193)
  • Separacja logiki wątku od logiki wykonania (195)
  • Stosowanie interfejsu ExecutorService (197)
  • Stosowanie obiektów Callable (199)
  • Wykonywanie zadań bez użycia interfejsu ExecutorService (201)
  • Planowanie zadań (202)
  • Zaawansowana synchronizacja (205)
  • Typy atomowe (207)
  • Blokowanie a synchronizacja (209)
Skorowidz (215)