java. potrzaski full version.pdf

(8332 KB) Pobierz
707831896 UNPDF
IDZ DO
PRZYK£ADOW Y ROZDZIA£
Java. Potrzaski
SPIS TRECI
KATALOG KSI¥¯EK
Autorzy: Michael C. Daconta, Eric Monk,
J Paul Keller, Keith Bohnenberger
T³umaczenie: Jaromir Senczyk
ISBN: 83-7361-121-5
Tytu³ orygina³ u: Java Pitfalls
Format: B5, stron: 310
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
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ê wydajnoci 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
• Wejcie i wyjcie, w tym subtelnoci 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
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
707831896.003.png 707831896.004.png 707831896.005.png 707831896.006.png 707831896.001.png 707831896.002.png
Spis treci
Wstp ............................................................................................... 9
Rozdział 1. Składnia jzyka................................................................................ 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 mog6 by7 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 wyprzedzaj6ce.................................................................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 jzyk Java ......................................... 47
Zagadnienie 11. Odzyskiwanie pami)ci za pomoc6 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) synchronizowan6 .............................................................................57
W6tki, 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 mieszaj6cego ...73
Zagadnienie 15. Unikajmy konstruktorów w implementacji metody clone().................74
6
Java. Potrzaski
Zagadnienie 16. Rozdział metod a mechanizm refleksji, interfejsy
i klasy anonimowe................................................................................................79
Zagadnienie 17. Obsługa wyj6tków i bł6d OutOfMemoryError...................................88
Składnia wyj6tków............................................................................................89
Hierarchia wyj6tków .........................................................................................89
Obsługa wyj6tków ............................................................................................90
Bł6d braku pami)ci ...........................................................................................90
Rozdział 3. U%yteczne klasy i kolekcje ............................................................... 93
Zagadnienie 18. Uporz6dkowane klucze wła'ciwo'ci? ...............................................94
Zagadnienie 19. Obsługa kolekcji o znacznych rozmiarach
za pomoc6 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. Wejcie i wyjcie ........................................................................... 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 pomoc6 gniazd sieciowych..............................................................................131
Zagadnienie 26. Try, catch
finally? ....................................................................135
Zagadnienie 27. Opró/nianie zasobów zwi6zanych 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. Uporz6dkowanie nakładaj6cych 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 zdarzeJ...................................................................................192
Kontrola po wprowadzeniu danych...................................................................194
Problemy projektowania..................................................................................194
Spis treci
7
Asynchroniczna kontrola poprawno'ci..............................................................195
Adapter kontroli danych ..................................................................................196
Techniki kontroli poprawno'ci danych..............................................................198
Kontrola poprawno'ci danych z wykorzystaniem wyj6tków................................198
ŁaJcuchy kontroli poprawno'ci danych ............................................................200
Uwagi koJcowe..............................................................................................201
Zagadnienie 37. Uaktywnianie komponentów interfejsu u/ytkownika
w zale/no'ci od stanu aplikacji ............................................................................201
Pierwsze rozwi6zanie ......................................................................................202
Rozwi6zanie siłowe.........................................................................................202
Rozwi6zanie przez abstrakcj) — klasa StateMonitor..........................................203
ListViewer .....................................................................................................205
Adaptacyjna deaktywacja komponentów...........................................................208
Zagadnienie 38. Wielow6tkowa obsługa zdarzeJ .....................................................208
Skuteczna implementacja obsługi przycisku Cancel
z wykorzystaniem w6tków.............................................................................210
Skuteczna implementacja obsługi przycisku Cancel
wykorzystuj6ca 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) wirtualn6.................................................224
Zagadnienie 41. KeyListener, który nie słucha?.......................................................238
Zagadnienie 42. Drukowanie tekstu, dokumentów HTML i obrazów
za pomoc6 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'7 tablic i klasy Vector...................................................260
Dlaczego klasa Vector jest wolniejsza od zwykłych tablic?.................................262
Kiedy u/ywa7 klasy Vector? ............................................................................263
Klasa ArrayList...............................................................................................264
Zagadnienie 46. Zagadnienie dynamicznego wzrostu tablic ......................................265
Zagadnienie 47. Konkatenacja łaJcuchów znakowych w p)tli
— porównanie klas String i StringBuffer..............................................................270
Rozdział 8. Rozmaitoci................................................................................... 273
Zagadnienie 48. Czy istnieje lepszy sposób uruchamiania? .......................................273
Zagadnienie 49. Hermetyzacja wywołaJ JNI za pomoc6 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
8
Java. Potrzaski
Zagadnienie 50. Asercje ........................................................................................289
Asercje w j)zyku Java.....................................................................................290
Stosowanie asercji...........................................................................................290
Jak nie nale/y stosowa7 asercji.........................................................................290
Przykładowa implementacja.............................................................................291
Skorowidz .......................................................................................... 295
Zgłoś jeśli naruszono regulamin