Java. Potrzaski - Helion
Tytuł oryginału: Java Pitfalls
Tłumaczenie: Jaromir Senczyk
ISBN: 83-7361-121-5
stron: 312, Format: B5, okładka: miękka
Data wydania: 2003-07-03
Księgarnia: Helion
Cena książki: 39,00 zł
Choć Java to język gwarantujący efektywną pracę, to jednak kryje w sobie wiele pułapek, które mogą zniweczyć jej efekty. Książka ta ma za zadanie oszczędzić Twój czas i zapobiec frustracji przeprowadzając Cię bezpiecznie przez skomplikowane zagadnienia. Zespół ekspertów od języka Java pod wodzą guru programowania w osobie Michaela Daconta proponuje Ci zestaw sprawdzonych rozwiązań 50 trudnych problemów pojawiających się w praktyce każdego programisty. Rozwiązania te pozwolą Ci uniknąć problemów wynikających z niedostatków języka Java oraz jego interfejsów programowych, w tym pakietów java.util, java.io, java.awt i javax.swing. Autorzy dzielą się także z Czytelnikiem swoimi sposobami na poprawę wydajności aplikacji pisanych w Javie.
Oto niektóre z omawianych zagadnień:
- Składnia języka: zastosowanie metody equals() zamiast operatora == do porównywania obiektów klasy String
- Funkcjonalność wbudowana w język: rozdział metod a mechanizm refleksji, interfejsy i klasy anonimowe
- Użyteczne klasy i kolekcje: wybór klasy PropertyFile i ResourceBundle
- Wejście i wyjście, w tym subtelności związane z przesyłaniem serializowanych obiektów za pomocą gniazd sieciowych
- Graficzny interfejs użytkownika: sposoby uniknięcia typowej pułapki polegającej na zastosowaniu metody repaint() zamiast metody validate() w celu uzyskania nowego układu komponentów
- Graficzny interfejs użytkownika -- sterowanie: m.in. bardziej funkcjonalna kontrola danych wprowadzanych przez użytkownika
- Wydajność: m.in. zastosowanie odroczonego ładowania, tak by zwiększyć szybkość uruchamiania programów
Osoby które kupowały "Java. Potrzaski", 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. Potrzaski -- spis treści
Wstęp (9)
Rozdział 1. Składnia języka (13)
- Zagadnienie 1. Przesłanianie metod statycznych (14)
- Zagadnienie 2. Zastosowanie metody equals() i operatora == dla obiektów klasy String (16)
- Zagadnienie 3. Kontrola zgodności typów w języku Java (19)
- Konwersja typów (20)
- Rozszerzanie (21)
- Zawężanie (22)
- Niejawne konwersje typów (22)
- Zagadnienie 4. Czy to jest konstruktor? (23)
- Zagadnienie 5. Brak dostępu do przesłoniętej metody (25)
- Zagadnienie 6. Pułapka ukrytego pola (27)
- Rodzaje zmiennych w języku Java (29)
- Zakres deklaracji zmiennej (29)
- Które zmienne mogą być ukrywane? (30)
- Ukrywanie zmiennych instancji i zmiennych klas (30)
- Dostęp do ukrytych pól (32)
- Różnice pomiędzy ukrywaniem pól i przesłanianiem metod (33)
- Zagadnienie 7. Referencje wyprzedzające (34)
- Zagadnienie 8. Konstruktory i projektowanie klas (35)
- Zagadnienie 9. Przekazywanie typów prostych przez referencję (42)
- Zagadnienie 10. Wyrażenia i operatory logiczne (45)
Rozdział 2. Funkcjonalność wbudowana w język Java (47)
- Zagadnienie 11. Odzyskiwanie pamięci za pomocą obiektów SoftReference (48)
- Odzyskiwanie pamięci (48)
- Klasa SoftReference (50)
- Kolejki referencji (55)
- Zagadnienie 12. Zakleszczenie na skutek wywołania metody synchronizowanej przez metodę synchronizowaną (57)
- Wątki, monitory i słowo kluczowe synchronized (57)
- Przykładowy scenariusz zakleszczenia (61)
- Zagadnienie 13. Klonowanie obiektów (65)
- Zagadnienie 14. Przesłanianie metody equals (71)
- Zastosowanie obiektów klasy StringBuffer jako kluczy kodowania mieszającego (73)
- Zagadnienie 15. Unikajmy konstruktorów w implementacji metody clone() (74)
- Zagadnienie 16. Rozdział metod a mechanizm refleksji, interfejsy i klasy anonimowe (79)
- Zagadnienie 17. Obsługa wyjątków i błąd OutOfMemoryError (88)
- Składnia wyjątków (89)
- Hierarchia wyjątków (89)
- Obsługa wyjątków (90)
- Błąd braku pamięci (90)
Rozdział 3. Użyteczne klasy i kolekcje (93)
- Zagadnienie 18. Uporządkowane klucze właściwości? (94)
- Zagadnienie 19. Obsługa kolekcji o znacznych rozmiarach za pomocą mechanizmów buforowania i trwałości (97)
- Zagadnienie 20. Plik właściwości czy zestaw zasobów? (109)
- Zagadnienie 21. Pułapki klasy Properties (112)
- Zagadnienie 22. Klasa Vector i nowe kolekcje (117)
Rozdział 4. Wejście i wyjście (121)
- Zagadnienie 23. Serializacja (122)
- Jak działa serializacja? (123)
- Interfejs Externalizable (124)
- Zagadnienie 24. Unicode, UTF i strumienie (125)
- Unicode (126)
- UTF (126)
- Strumienie (128)
- Konfigurowanie kodowania (131)
- Zagadnienie 25. Przesyłanie serializowanych obiektów za pomocą gniazd sieciowych (131)
- Zagadnienie 26. Try, catch 1 finally? (135)
- Zagadnienie 27. Opróżnianie zasobów związanych z obrazami (138)
Rozdział 5. Graficzny interfejs użytkownika - prezentacja (143)
- Zagadnienie 28. Informowanie o postępach (144)
- Kursor zajętości (145)
- Monitor postępu (147)
- Zagadnienie 29. Zastosowanie metody repaint() zamiast metody validate() do aktualizacji układu komponentów (149)
- Zagadnienie 30. Uporządkowanie nakładających się komponentów (153)
- Menedżery układu (154)
- JLayeredPane (158)
- Zagadnienie 31. Zagadka metod validate(), revalidate() i invalidate() (160)
- Zagadnienie 32. Pionowy układ komponentów (164)
- Zagadnienie 33. Właściwe sposoby użycia menedżera GridBagLayout (172)
- Zagadnienie 34. Zapobieganie migotaniu obrazu (179)
- Rysowanie w AWT (180)
- Rysowanie i Swing (183)
- Zagadnienie 35. Komponenty z zagnieżdżonymi etykietami HTML (184)
Rozdział 6. Graficzny interfejs użytkownika - sterowanie (189)
- Zagadnienie 36. Kontrola danych wprowadzanych przez użytkownika (190)
- Komponenty tworzone na miarę (191)
- Filtrowanie (191)
- Konsumowanie zdarzeń (192)
- Kontrola po wprowadzeniu danych (194)
- Problemy projektowania (194)
- Asynchroniczna kontrola poprawności (195)
- Adapter kontroli danych (196)
- Techniki kontroli poprawności danych (198)
- Kontrola poprawności danych z wykorzystaniem wyjątków (198)
- Łańcuchy kontroli poprawności danych (200)
- Uwagi końcowe (201)
- Zagadnienie 37. Uaktywnianie komponentów interfejsu użytkownika w zależności od stanu aplikacji (201)
- Pierwsze rozwiązanie (202)
- Rozwiązanie siłowe (202)
- Rozwiązanie przez abstrakcję - klasa StateMonitor (203)
- ListViewer (205)
- Adaptacyjna deaktywacja komponentów (208)
- Zagadnienie 38. Wielowątkowa obsługa zdarzeń (208)
- Skuteczna implementacja obsługi przycisku Cancel z wykorzystaniem wątków (210)
- Skuteczna implementacja obsługi przycisku Cancel wykorzystująca klasę SwingWorker (212)
- Zagadnienie 39. Wzorzec "model widok kontroler" i komponent JTree (214)
- Zagadnienie 40. Przekazywanie danych innych niż tekst (217)
- Pakiet java.awt.datatransfer (218)
- Trzy scenariusze przekazywania danych (219)
- Przykład przekazywania danych w obrębie jednej maszyny wirtualnej (219)
- Określanie sposobu przekazywania danych (223)
- Przekazywanie danych poza maszynę wirtualną (224)
- Zagadnienie 41. KeyListener, który nie słucha? (238)
- Zagadnienie 42. Drukowanie tekstu, dokumentów HTML i obrazów za pomocą komponentu JEditorPane (241)
Rozdział 7. Efektywność (251)
- Zagadnienie 43. Odroczone ładowanie sposobem na poprawę efektywności (252)
- Zagadnienie 44. Zastosowania puli obiektów (254)
- Odzyskiwanie obiektów (255)
- Porównanie puli obiektów i buforowania (255)
- Implementacja (256)
- Zalety (257)
- Wady (258)
- Kłopoty (258)
- Zagadnienie 45. Efektywność tablic i klasy Vector (260)
- Dlaczego klasa Vector jest wolniejsza od zwykłych tablic? (262)
- Kiedy używać klasy Vector? (263)
- Klasa ArrayList (264)
- Zagadnienie 46. Zagadnienie dynamicznego wzrostu tablic (265)
- Zagadnienie 47. Konkatenacja łańcuchów znakowych w pętli - porównanie klas String i StringBuffer (270)
Rozdział 8. Rozmaitości (273)
- Zagadnienie 48. Czy istnieje lepszy sposób uruchamiania? (273)
- Zagadnienie 49. Hermetyzacja wywołań JNI za pomocą interfejsów (275)
- Koncepcja (276)
- Przykład interfejsu (277)
- Implementacja w języku Java (279)
- Implementacja w kodzie macierzystym (281)
- Kod specyficzny dla platformy Windows (285)
- Zagadnienie 50. Asercje (289)
- Asercje w języku Java (290)
- Stosowanie asercji (290)
- Jak nie należy stosować asercji (290)
- Przykładowa implementacja (291)
Skorowidz (295)