Java 1.1 Autorzy: Laura Lemay, Charles L. Perkins Tłumaczenie: Piotr Rajca Ta książka jest jednym z najlepszych i najpopularniejszych podręczników Javy. W szczegółowy sposób przedstawia podstawowe zagadnienia programowania w Javie, jak również zasady teorzenia apletów oraz umieszczania ich na stronach WWW. Po przeczytaniu tej książki będziesz dysponował głęboką wiedzą dotyczącą programowania w Javie, pozwalającą na projektowanie, tworzenie oraz używanie apletów i tworzene bardziej złożonych, samodzielnych aplikacji. Uaktualniona i rozszerzona książka prezentuje wszystkie nowe możliwości Javy 1.1. Poznaj podstawy programowania obiektowego oraz tworzenia programów w Javie. Zacznij pisać samodzielne, niezależne od systemu aplikacje. Wzbogać swoją stronę WWW dodając do niej pełną interaktywność za pomocą apletów. Poznaj JavaBeans oraz sposoby tworzenia w Javie aplikacji zbudowanych z komponentów. Łatwe do zrozumienia przykłady umieszczone w tekście książki w znacznym stopniu przyspieszą proces programowania w Javie. Książka zawiera szczegółowe diagramy hierarchii klas Javy. CD-ROM zawiera: Java Development Kit 1.1 firmy Sun w wersjach dla następujących systemów operacyjnych: Windows 95, Windows NT oraz Solaris. Java Development Kit 1.1 firmy Sun dla komputerów Macintosh. JavaBeans Development Kit w wersjach dla następujących systemów operacyjnych: Windows 95, Windows NT oraz Solaris. Kody źródłowe wszystkich programów przedstawionych w książce. Java 1.1 - spis treści O autorach (17) Wprowadzenie (21) Część I (27) Rozdział 1. Wprowadzenie do programowania w języku Java (29) Czym jest Java? (29) Przeszłość, teraźniejszość i przyszłość Javy (31) Dlaczego warto uczyć się Javy? (33) Java jest niezależna od systemu operacyjnego (33) Java jest językiem zorientowanym obiektowo (36) Java jest łatwa do nauczenia (36) Rozpoczynanie programowania w Javie (37) Jak zdobyć środowisko do programowania w Javie? (37) Instalacja JDK i plików przykładowych (38) Konfigurowanie JDK (39) Tworzenie aplikacji w Javie (41) Tworzenie apletów Javy (46) Rozwiązywanie problemów (50) Podsumowanie (51) Pytania i odpowiedzi (51) Rozdział 2. Programowanie obiektowe i Java (55) Myślenie na sposób obiektowy - analogia (56) Obiekty oraz klasy (56) Atrybuty oraz zachowania (58) Atrybuty (59) Zachowania (59) Tworzenie klasy (60) Dziedziczenie, interfejsy oraz pakiety (66) Dziedziczenie (66) Tworzenie hierarchii klas (67) W jaki sposób działa dziedziczenie (69) Pojedyncze i wielokrotne dziedziczenie (71) Interfejsy, pakiety oraz klasy wewnętrzne (71) Tworzenie klas potomnych (73) Podsumowanie (77) Pytania i odpowiedzi (78) Rozdział 3. Podstawy Javy (79) Instrukcje oraz wyrażenia (79) Zmienne oraz typy danych (80) Deklarowanie zmiennych (81) Kilka słów o nazwach zmiennych (82) Typy zmiennych (82) Przypisywanie wartości zmiennym (84) Komentarze (84) Literały (85) Literały liczbowe (85) Literały logiczne (86) Literały znakowe (86) Literały łańcuchowe (86) Wyrażenia i operatory (88) Operatory arytmetyczne (88) Kilka informacji o przypisaniach (90) Inkrementacja i dekrementacja (91) Porównania (93) Operatory logiczne (93) Operatory binarne (94) Priorytety operatorów (94) "Arytmetyka łańcuchowa" (97) Podsumowanie (98) Pytania i odpowiedzi (99) Rozdział 4. Praca z obiektami (101) Tworzenie nowych obiektów (101) Sposób użycia operatora new (102) Co robi operator new (104) Kilka słów o zarządzaniu pamięcią (104) Dostęp oraz modyfikowanie zmiennych instancyjnych (105) Pobieranie wartości (105) Zmienianie wartości zmiennych (105) Zmienne statyczne (106) Wywoływanie metod (107) Metody statyczne (109) Odwołania do obiektów (110) Rzutowanie i konwersja typów (112) Rzutowanie podstawowych typów danych (112) Rzutowanie obiektów (113) Konwertowanie typów podstawowych do obiektów i odwrotnie (114) Inne przydane informacje (115) Porównywanie obiektów (115) Określanie klasy obiektu (117) Badanie klas oraz metod za pomocą odzwierciedlania (117) Biblioteki klas standardowo dostępne w Javie (120) Podsumowanie (121) Pytania i odpowiedzi (121) Rozdział 5. Tablice, instrukcje warunkowe oraz pętle (123) Tablice (123) Deklarowanie zmiennych tablicowych (124) Tworzenie obiektu tablicy (124) Dostęp do komórek tablic (125) Modyfikacja wartości komórek tablicy (126) Tablice wielowymiarowe (129) Instrukcje blokowe (129) Instrukcja warunkowa if (130) Operator warunkowy (132) Instrukcja warunkowa switch (133) Pętle for (137) Pętle while oraz do (140) Pętle while (140) Pętle do (142) Przerywanie działania pętli (143) Pętle z etykietami (144) Podsumowanie (145) Pytania i odpowiedzi (146) Rozdział 6. Tworzenie klas i aplikacji (149) Definiowanie klas (149) Tworzenie zmiennych instancyjnych i statycznych (150) Definiowanie zmiennych statycznych (150) Zmienne ustalone (finalne) (151) Zmienne statyczne (152) Tworzenie metod (152) Definiowanie metod (152) Słowo kluczowe this (154) Zakres zmiennych oraz definicje metod (155) Przekazywanie argumentów do metod (157) Metody statyczne (158) Tworzenie aplikacji w Javie (159) Klasy pomocnicze (160) Aplikacje oraz argumenty ich wywołania (161) Przekazywanie argumentów do aplikacji (161) Obsługa argumentów w aplikacjach (162) Podsumowanie (164) Pytania i odpowiedzi (165) Rozdział 7. Więcej informacji o metodach (167) Tworzenie metod o takiej samej nazwie lecz innych argumentach (168) Konstruktory (171) Proste konstruktory (172) Wywoływanie innego konstruktora (173) Przeciążanie konstruktorów (173) Przesłanianie metod (175) Tworzenie metod przesłaniających metody już istniejące (175) Wywoływanie oryginalnej metody (177) Przesłanianie konstruktorów (179) Metoda finalizująca (180) Podsumowanie (181) Pytania i odpowiedzi (182) Część II (183) Rozdział 8. Podstawy tworzenia apletów (185) Czym aplety różnią się od aplikacji (186) Tworzenie apletów w Javie 1.02 oraz Javie 1.1 (188) Tworzenie apletów (189) Główne czynności apletów (190) Prosty aplet (192) Umieszczanie apletów na stronach WWW (193) Etykieta (194) Sprawdzanie wyników (195) Udostępnianie apletów dla użytkowników WWW (196) Więcej informacji na temat etykiety (196) ALIGN (196) HSPACE oraz VSPACE (199) CODE i CODEBASE (199) Archiwa Javy (200) Inne formaty plików archiwalnych (201) Używanie podpisów cyfrowych do identyfikowania apletów (203) Przekazywanie parametrów do apletów (205) Podsumowanie (211) Pytania i odpowiedzi (212) Rozdział 9. Klasa Graphics, czcionki i kolory (215) Klasa Graphics (216) System współrzędnych graficznych (216) Rysowanie i wypełnianie (217) Linie (217) Prostokąty (218) Wieloboki (220) Owale (224) Łuki (225) Prosty przykład rysowania (229) Kopiowanie i czyszczenie (230) Tekst oraz czcionki (231) Tworzenie obiektu klasy Font (231) Wyświetlanie znaków i łańcuchów znaków (232) Dostęp do informacji o czcionkach (233) Kolory (236) Użycie obiektów klasy Color (237) Sprawdzanie i ustawianie aktualnych kolorów (238) Prosty przykład użycia kolorów (239) Używanie standardowych kolorów systemowych (tylko Java 1.1) (240) Podsumowanie (242) Pytania i odpowiedzi (242) Rozdział 10. Animacje, obrazy, dźwięki oraz wątki (245) Tworzenie animacji w Javie (246) Rysowanie i przerysowywanie (246) Rozpoczynanie i zatrzymywanie wykonywania apletu (247) Brakujące ogniwo - wątki (247) Tworzenie apletów zawierających wątki (248) Połączenie wszystkich elementów (250) Redukcja migotania animacji (253) Migotanie oraz sposoby zapobiegania temu zjawisku (253) Modyfikowanie metody update() (254) Sposób pierwszy: nie czyść ekranu (255) Pobieranie i używanie obrazów (257) Pobieranie obrazów (257) Rysowanie obrazów (259) Kilka słów o obserwatorach obrazków (262) Modyfikowanie obrazów (262) Tworzenie animacji za pomocą obrazków (262) Przykład: Neko (263) Ładowanie i używanie dźwięków (271) Zapobieganie migotaniu - podwójne buforowanie (275) Tworzenie apletu stosującego podwójne buforowanie (275) Kilka słów o zwalnianiu obiektów klasy Graphics (277) Przykład: Checkers (277) Podsumowanie (281) Pytania i odpowiedzi (281) Rozdział 11. Interaktywność i obsługa prostych zdarzeń (285) Ujednolicona teoria zdarzeń (286) Czym są zdarzenia (286) Dwa modele zdarzeń (287) Którego modelu powinieneś używać? (288) Obsługa kliknięć myszki w modelu zdarzeń Javy 1.02 (289) Zdarzenia generowane przy wciskaniu i zwalnianiu przycisków myszki (289) Przykład: Spots (291) Obsługa podwójnego kliknięcia (294) Obsługa ruchów wskaźnika myszki w modelu zdarzeń stosowanym w Javie 1.02 (295) Zdarzenia generowane podczas przeciągania i przesuwania wskaźnika myszki (295) Zdarzenia wejścia i wyjścia wskaźnika myszki z obszaru apletu (296) Przykład: rysowanie linii (296) Obsługa zdarzeń generowanych przez klawiaturę w modelu zdarzeń Javy 1.02 (301) Metody keyDown() oraz keyUp() (301) Domyślne klawisze (302) Przykład: Wprowadzanie, wyświetlanie i przesuwanie znaków (303) Sprawdzanie naciśnięcia klawiszy modyfikatorów oraz przycisków myszki (306) Ogólna metoda obsługi zdarzeń: handleEvent() (308) System obsługi zdarzeń wprowadzony w Javie 1.1 (311) Co jest złego w poprzednim modelu obsługi zdarzeń? (311) Jak działa nowy model obsługi zdarzeń (312) Korzystanie z nowego modelu obsługi zdarzeń (313) Krok 1: Wybranie zdarzeń, które będą obsługiwane (314) Krok 2: Implementacja interfejsów (316) Krok 3: Rejestracja odbiorcy zdarzeń (319) Konwersja kodu obsługi zdarzeń do modelu 1.1 (320) Przykład: Modyfikacja apletu Lines (321) Zdarzenia generowane przez myszkę i klawiaturę w modelu zdarzeń Javy 1.1 (325) Zdarzenia generowane przez myszkę (325) Zdarzenia generowane przez klawiaturę (326) Podsumowanie (328) Pytania i odpowiedzi (328) Rozdział 12. Tworzenie graficznego interfejsu użytkownika za pomocą AWT (331) Przegląd AWT (332) Podstawowe komponenty interfejsu użytkownika (334) Jak dodawać komponenty do apletów (335) Etykiety (335) Przyciski (337) Pola wyboru (338) Pola opcji (340) Listy rozwijane (342) Pola tekstowe (344) Panele oraz menedżery ułożenia komponentów (346) Menedżery ułożenia: przegląd (347) Menedżer FlowLayout (348) Menedżer GridLayout (350) Menedżer BorderLayout (351) Menedżer CardLayout (352) Menedżer GridBagLayout (353) Marginesy (367) Ognisko wprowadzania oraz operacje bez użycia myszki (Java 1.1) (367) Obsługa zdarzeń generowanych przez elementy interfejsu użytkownika w Javie 1.02 (369) Obsługa zdarzeń "akcyjnych" (370) Obsługa innych zdarzeń (372) Obsługa zdarzeń generowanych przez komponenty interfejsu użytkownika w modelu obsługi zdarzeń Javy 1.1 (373) Odbiorcy zdarzeń generowanych przez komponenty interfejsu użytkownika (373) Rejestrowane odbiorców zdarzeń (375) Różnice sposobów obsługi zdarzeń w Javie 1.02 oraz 1.1 (376) Przykład: Modyfikowanie koloru tła (377) Dodawanie kodu obsługi zdarzeń (Java 1.02) (378) Dodanie kodu obsługi zdarzeń (Java 1.1) (381) Podsumowanie (386) Pytania i odpowiedzi (387) Rozdział 13. Tworzenie zaawansowanego interfejsu użytkownika za pomocą AWT (389) Zagnieżdżanie komponentów (390) Zagnieżdżanie paneli (390) Zagnieżdżone panele i model obsługi zdarzeń Javy 1.02 (391) Kolejne komponenty interfejsu użytkownika (392) Obszary tekstowe (392) Listy (395) Paski przewijania (398) Przewijalne panele (402) Płótna (404) Kursory (405) Zabawa z komponentami (406) Przykład: Konwerter RGB-HSB (409) Zaprojektowanie i stworzenie interfejsu graficznego (411) Definiowanie paneli (413) Obsługa zdarzeń (415) Uaktualnianie wyników (417) Pełny kod apletu ColorTest (420) Okna, ramki oraz okna dialogowe (423) Klasa Window oraz jej klasy potomne (423) Ramki (424) Okna dialogowe (428) Kursory (Java 1.02) (434) Zdarzenia generowane przez okna (434) Menu (436) Menu i paski menu (437) Opcje menu (438) Zdarzenia generowane przez menu (440) Menu podręczne (Java 1.1) (440) Przykład: Okno z menu (442) Tworzenie aplikacji AWT (444) Podsumowanie (446) Pytania i odpowiedzi (446) Rozdział 14. Zagadnienia sieciowe, API oraz inne pożyteczne informacje (449) Sztuczki przydatne w apletach (450) Metoda showStatus() (450) Informacje o apletach (450) Tworzenie hiperłączy w apletach (451) Wymiana informacji pomiędzy apletami (454) Zagadnienia sieciowe w Javie (456) Tworzenie połączeń sieciowych (456) openStream() (457) Gniazda (461) Obsługa gniazd w Javie 1.1 (462) Trivia: przykład programu klient-serwer (463) Projektowanie aplikacji (463) Program serwera (465) Program klienta (470) Uruchamianie programu Trivia (472) Drukowanie (Java 1.1) (473) Kopiowanie, wycinanie i wklejanie (Java 1.1) (475) Tworzenie obiektów, które można przekazywać (476) Użycie Schowka (477) Umiędzynarodowienie (Java 1.1) (481) Używanie informacji lokalnych (482) Lokalne formatowanie danych (484) Aby zdobyć więcej informacji (487) Zaawansowane tematy dotyczące Javy 1.1 (487) JavaBeans (488) System bezpieczeństwa (495) RMI (496) JDBC (Java Database Connectivity) (500) Podsumowanie (501) Pytania i odpowiedzi (502) Część III (505) Rozdział 15. Modyfikatory (507) Modyfikatory (508) Kontrolowanie dostępu do metod i zmiennych (509) Dlaczego kontrola dostępu jest istotna (509) Cztery poziomy kontroli dostępu (510) Ochrona metod i dziedziczenie (515) Ochrona zmiennych instancyjnych i metody dostępu (516) Zmienne i metody statyczne (519) Finalizowanie klas, metod i zmiennych (521) Finalizowanie klas (522) Finalizowanie zmiennych (523) Finalizowanie metod (523) Klasy i metody abstrakcyjne (524) Podsumowanie (526) Pytania i odpowiedzi (527) Rozdział 16. Pakiety, interfejsy oraz klasy wewnętrzne (529) Programowanie w dużej i małej skali (530) Czym są pakiety? (530) Stosowanie pakietów (532) Nazwy pełne oraz nazwy klas (532) Instrukcja import (532) Konflikty nazw (534) Kilka słów o zmiennej systemowej CLASSPATH oraz o miejscu przechowywania klas (534) Tworzenie pakietów (535) Określenie nazwy pakietu (535) Stworzenie struktury kartotek (536) Użycie instrukcji package w celu dołączenia klas do pakietu (536) Ochrona klas i pakietów (537) Co to są interfejsy? (539) Problem pojedynczego dziedziczenia (539) Abstrakcyjny projekt i konkretna implementacja (541) Interfejsy i klasy (542) Implementowanie i użycie interfejsów (543) Słowo kluczowe implements (543) Implementowanie wielu interfejsów (544) Inne zastosowania interfejsów (545) Tworzenie i rozszerzanie interfejsów (546) Nowe interfejsy (546) Metody wewnątrz interfejsów (547) Rozszerzanie interfejsów (548) Przykład: Obsługa listy (549) Klasy wewnętrzne (550) Podsumowanie (551) Pytania i odpowiedzi (552) Rozdział 17. Wyjątki (555) Wyjątki, stary i skomplikowany sposób (556) Wyjątki w Javie (557) Zarządzanie wyjątkami (559) Sprawdzanie spójności wyjątków (559) Zabezpieczanie kodu i przechwytywanie wyjątków (560) Blok finally (562) Deklarowanie metod mogących zgłaszać wyjątki (564) Słowo kluczowe throws (564) Jakie wyjątki powinieneś zgłaszać? (565) Przekazywanie wyjątków dalej (566) throws i dziedziczenie (567) Tworzenie i zgłaszanie własnych wyjątków (567) Zgłaszanie wyjątków (568) Tworzenie Twoich własnych wyjątków (568) Połączenie wszystkich elementów (569) Kiedy używać, a kiedy nie używać wyjątków (570) Kiedy używać wyjątków (570) Kiedy nie używać wyjątków (571) Niewłaściwe sposoby używania wyjątków (571) Podsumowanie (572) Pytania i odpowiedzi (573) Rozdział 18. Wielowątkowość (575) Podstawowe informacje o wielowątkowości (576) Problemy ze współbieżnością (577) Myślenie w sposób wielowątkowy (578) Kilka uwag odnośnie punktów (580) Ochrona zmiennych statycznych (583) Tworzenie i użycie wątków (584) Interfejs Runnable (585) ThreadTester (586) NamedThreadTester (588) Jak dowiedzieć się, kiedy wątek został zatrzymany (589) Planowanie działania wątków (590) Z podziałem czasu czy bez podziału (590) Sprawdzanie działania zarządcy zadań (592) Podsumowanie (595) Pytania i odpowiedzi (596) Rozdział 19. Obsługa strumieni i procedur wejścia/wyjścia (599) Strumienie wejściowe (601) Abstrakcyjne klasy InputStream i Reader (601) ByteArrayInputStream i CharArrayReader (607) FileInputStream i FileReader (608) FilterInputStream i FilterReader (610) PipedInputStream i PipedReader (618) SequenceInputStream (619) StringBufferInputStream i StringReader (620) Strumienie wyjściowe (620) Abstrakcyjne klasy OutputStream oraz Writer (620) ByteArrayOutputStream oraz CharArrayWriter (622) FileOutputStream i FileWriter (624) FilterOutputStream i FilterWriter (625) PipedOutputStream i PipedWriter (631) Klasy pokrewne (632) Podsumowanie (632) Pytania i odpowiedzi (633) Rozdział 20. Używanie rodzimych metod i bibliotek (635) Wady metod rodzimych (636) Złudzenie uzyskanej efektywności (637) Wbudowana optymalizacja (639) Proste metody optymalizacji (640) Tworzenie metod rodzimych (642) Klasa przykładowa (642) Generacja pliku nagłówkowego (644) Tworzenie pliku SimpleFile.c (647) Biblioteka rodzima (649) Łączenie wszystkich elementów (649) Użycie Twojej biblioteki (650) JNI - Rodzimy Interfejs Javy (650) Co robi JNI (651) Po co stworzono JNI (651) Sposób działania JNI (652) Szczegółowe informacje o funkcjach JNI (659) Wywoławczy interfejs programistyczny (669) Podsumowanie (672) Pytania i odpowiedzi (673) Rozdział 21. Tajniki Javy (675) Plany na przyszłość (675) Dlaczego plany rozwoju Javy są tak atrakcyjne (676) Wirtualna maszyna Javy (678) Wirtualna maszyna Javy w zarysie (679) Główne składniki wirtualnej maszyny Javy (680) Pula stałych (685) Bardziej szczegółowe informacje o kodach bajtowych (686) Interpreter kodów bajtowych (686) Kompilatory bieżące (687) Translator java2c (688) Prezentacja kodów bajtowych (689) Kody bajtowe quick (710) Format pliku wynikowego (712) Ograniczenia (714) Deskryptory metod (715) Zarządzanie i oczyszczanie pamięci (716) Problem (716) Rozwiązanie (717) Współbieżny program zarządzający pamięcią (720) Kilka słów o bezpieczeństwie (721) Dlaczego powinieneś się obawiać (721) Dlaczego nie musisz się bać (721) Model zabezpieczeń Javy (722) Podsumowanie (731) Pytania i odpowiedzi (731) Dodatek A. Podsumowanie języka (735) Słowa kluczowe (736) Komentarze (736) Literały (736) Deklaracje zmiennych (737) Przypisywanie zmiennych (737) Operatory (738) Obiekty (739) Tablice (739) Pętle i instrukcje warunkowe (740) Definicje klas (740) Definicje metod i konstruktorów (741) Importowanie (742) Zabezpieczenia (742) Dodatek B. Hierarchie klas - diagramy (743) Dodatek C. Biblioteka klas Javy (769) java.lang (770) java.lang.reflect (Java 1.1) (771) java.math (Java 1.1) (772) java.util (772) java.util.zip (Java 1.1) (773) java.io (774) java.net (777) java.awt (778) java.awt.datatransfer (Java 1.1) (781) java.awt.event (Java 1.1) (781) java.awt.image (783) java.awt.peer (784) java.applet (784) java.beans (784) java.rmi (786) java.rmi.gdc (787) java.rmi.registery (787) java.rmi.server (787) java.security (789) java.security.acl (790) java.security.interfaces (790) java.sql (791) java.text (792) Dodatek D. Czym Java różni się od języków C i C++ (795) Wskaźniki (795) Tablice (795) Łańcuchy znaków (796) Zarządzanie pamięcią (796) Typy danych (797) Operatory (797) Sterowanie wykonywaniem (798) Argumenty (798) Pozostałe różnice (798) Dodatek E. Zawartość CD-ROMu (799) Oprogramowanie (799) Java (799) Narzędzia HTML (800) Aplikacje graficzne, wideo i obróbki dźwięków (800) Dodatkowe narzędzia (800) O oprogramowaniu shareware (800) Skorowidz (801) Wydawnictwo Helion, czerwiec 1998 ISBN: 83-86718-56-0 Format: B5, 832 strony Zawiera CD-ROM Więcej informacji: www.helion.com.pl/ksiazki/java11.htm