Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
Java 2. Podstawy
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Java 2. Podstawy jest najlepsz ksik dla programistw. Nie ma sobie rwnych pod
wzgldem iloci przekazanych informacji, a mimo to pozostaje bardzo czytelna.
K. N. King, Computer Reviews
Programici znajd tu wszystko, czego potrzeba, aby wykorzysta potg jzyka Java
PC Week
Java 2. Podstawy dostarcza wszystkiego, czego potrzebujesz, aby ukoczy nawet
najbardziej skomplikowane projekty. Dlatego wanie ta ksika przez pi lat bya
midzynarodowym bestsellerem. Java 2. Podstawy omawia podstawy platformy Java
2 Standard Edition w wersji 1.3, zawiera peny opis zorientowanego obiektowo
rodowiska programistycznego Javy, komponentw interfejsu uytkownika Swing
i wiele, wiele wicej.
Pita wydanie prezentuje wiele nowych, gotowych do zastosowania programw,
z ktrych zasyny poprzednie edycje tej ksiki: pojawiy si rwnie nowe programy
dotyczce mechanizmu odbicia oraz optymalizacji kodu. Szczegowo wyjaniono
koncepcj klas wewntrznych, funkcjonowanie proxy, obsug wyjtkw, techniki
usuwania bdw, model zdarze Javy, interfejs wejcia/wyjcia oraz zarzdzania
plikami.
Kompendium dla programistw Javy, a w nim:
Omwienie jzyka Java i tworzenia aplikacji w rodowisku Forte(tm)
Tworzenie aplikacji GUI przy pomocy nowych klas Swing
Sposoby pisania klas proxy i klas wewntrznych
Korzystanie z modelu zdarze Javy
Omwienie klas strumieni oraz mechanizmu zarzdzania plikami
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
Podzikowania............................................................................................................................... 11
Przedmowa ...................................................................................................................................13
Do Czytelnika ........................................................................................................................ 13
O ksice............................................................................................................................... 15
Java 2. Podstawy
Rozdzia 3. Podstawy programowania w Javie..............................................................................57
Prosty program napisany w Javie........................................................................................... 58
Komentarze ........................................................................................................................... 60
Typy danych........................................................................................................................... 61
Liczby cakowite ............................................................................................................... 62
Typy zmiennoprzecinkowe ................................................................................................ 62
Typ znakowy..................................................................................................................... 63
Typ boolean ..................................................................................................................... 64
Zmienne ................................................................................................................................ 65
Przypisanie i inicjalizacja ....................................................................................................... 66
Stae ................................................................................................................................ 66
Operatory .............................................................................................................................. 67
Operatory inkrementacji i dekrementacji.......................................................................... 69
Operatory relacji i typu boolean ....................................................................................... 69
Operatory bitowe.............................................................................................................. 70
Funkcje i stae matematyczne.......................................................................................... 71
Konwersje pomidzy typami numerycznymi...................................................................... 72
Rzutowanie ...................................................................................................................... 73
Hierarchia nawiasw i operatorw ................................................................................... 73
acuchy ............................................................................................................................... 74
Konkatenacja................................................................................................................... 74
Wycinanie acuchw....................................................................................................... 75
Edycja acuchw............................................................................................................. 75
Porwnywanie acuchw................................................................................................. 77
Czytanie dokumentacji API online .................................................................................... 79
Czytanie danych............................................................................................................... 81
Formatowanie wyjcia ...................................................................................................... 83
Instrukcje sterujce............................................................................................................... 86
Blok instrukcji .................................................................................................................. 86
Instrukcje warunkowe ...................................................................................................... 87
Ptle nieokrelone........................................................................................................... 89
Ptle okrelone................................................................................................................ 93
Wielokrotny wybr polecenie switch ............................................................................ 96
Przerywanie instrukcji sterowania .................................................................................... 98
Wielkie liczby ....................................................................................................................... 100
Tablice................................................................................................................................. 102
Inicjalizacja tablic i tablice anonimowe .......................................................................... 103
Kopiowanie tablic........................................................................................................... 104
Parametry linii polece .................................................................................................. 105
Sortowanie tablicy ......................................................................................................... 106
Tablice wielowymiarowe................................................................................................. 109
Tablice nierwnej dugoci ............................................................................................. 112
Spis treci
Java 2. Podstawy
Mechanizm odbicia.............................................................................................................. 224
Wykorzystanie mechanizmu odbicia do analizy moliwoci klas ..................................... 225
Wykorzystanie mechanizmu odbicia do analizy obiektw w czasie dziaania programu .. 229
Wykorzystanie mechanizmu odbicia w pisaniu kodu uniwersalnej tablicy ...................... 235
Wskaniki do metod ...................................................................................................... 238
Zastosowanie dziedziczenia w projektowaniu ...................................................................... 242
Spis treci
Java 2. Podstawy
Ogldanie apletu w przegldarce ................................................................................... 535
Przeksztacanie aplikacji w aplety .................................................................................. 539
Cykl ycia apletu ............................................................................................................ 540
Podstawy systemu ochrony............................................................................................ 542
Okna dialogowe w apletach ........................................................................................... 543
Znaczniki HTML oraz atrybuty apletw................................................................................. 545
Atrybuty okrelajce pooenie apletu............................................................................ 546
Atrybuty dotyczce kodu apletu...................................................................................... 547
Atrybuty dotyczce przegldarek nie poczonych z Jav................................................ 550
Znacznik OBJECT ........................................................................................................... 550
Znaczniki Java Plug-In .................................................................................................... 551
Przekazywanie informacji apletom ................................................................................. 552
Multimedia .......................................................................................................................... 557
Adresy URL .................................................................................................................... 558
Tworzenie plikw multimedialnych ................................................................................. 559
Kontekst apletu................................................................................................................... 560
Komunikacja pomidzy apletami.................................................................................... 560
Wywietlanie elementw w przegldarce ....................................................................... 561
Aplet Spis adresw..................................................................................................... 563
To aplet. Nie, to aplikacja. To jedno i to samo!.............................................................. 565
Pliki JAR............................................................................................................................... 570
Manifest ........................................................................................................................ 572
Przechowywanie plikw JAR ........................................................................................... 573
Autonomiczne pliki JAR .................................................................................................. 574
Zasoby........................................................................................................................... 574
Pakiety opcjonalne......................................................................................................... 578
Piecztowanie................................................................................................................ 579
Spis treci
10
Aplety
W tym rozdziale:
podstawy apletw,
multimedia,
kontekst apletu,
pliki JAR.
W poprzednich rozdziaach poznae ju wikszo narzdzi Javy, znasz te podstawy programowania graficznego w tym jzyku. Mamy nadziej, e podobnie jak my uwaasz, i
Java jest dobrym (jeli nie doskonaym) zorientowanym obiektowo jzykiem oglnego przeznaczenia, a biblioteki interfejsu uytkownika Swing s elastyczne i uyteczne. To wane zalety,
ale to nie one s powodem caego tego zamieszania wok Javy. Niesamowity zamt, jaki
powsta w czasie pierwszych kilku lat istnienia Javy (wspominalimy o tym w rozdziale 1.)
wynika z faktu, i Java jest zdolna do oywienia Internetu. Moesz tworzy specjalne
programy Javy (nazywane apletami), ktre mog by pobierane z Internetu i uruchamiane
przez przegldarki internetowe poczone z Jav. W tym rozdziale nauczysz si pisa podstawowe aplety. Profesjonalizm apletw zaley od stopnia opanowania przez programist
mechanizmu wielowtkowoci oraz programowania sieciowego w Javie. S to bardziej skomplikowane tematy, ktre poruszymy w ksice Java 2. Techniki zaawansowane.
Nowoczesne przegldarki internetowe obsuguj Dynamic HTML oraz jzyki skryptowe,
co sprawia, e potrafi duo wicej ni w chwili, gdy na rynku pojawia si platforma Javy.
Wci jednak aplety napisane w prawdziwym jzyku programowania maj wiksze moliwoci ni jakakolwiek kombinacja jzykw HTML, XML i jzykw skryptowych.
Podstawy apletw
Do tej pory uywae jzyka HTML (ang. hypertext markup language hipertekstowy jzyk
znacznikw) do opisywania ukadu graficznego stron internetowych. HTML to proste narzdzie suce do oznaczania elementw hipertekstu. Dla przykadu, oznacza tytu
530
Java 2. Podstawy
strony, a wic kady tekst, ktry znajdzie si za tym znacznikiem, zostanie potraktowany
jak tytu danej strony. Koniec tytuu oznaczasz napisem (jest to jedna z podstawowych
zasad znacznikw znak , wraz z nastpujc po nim nazw, oznacza koniec elementu).
Podstawowa zasada umieszczania apletw na stronach internetowych jest prosta strona
HTML musi poinformowa przegldark, jakie aplety powinny zosta zaadowane, a nastpnie
gdzie na stronie powinny si one znale. Jak moge tego oczekiwa, znacznik, ktrego musisz
uy, powinien informowa przegldark o tym:
Nastpnie przegldarka ciga pliki klas z Internetu (lub z odpowiedniego katalogu na maszynie uytkownika) i uruchamia aplet przy uyciu wirtualnej maszyny Javy.
Oprcz apletu strona internetowa moe zawiera wiele innych elementw HTML, z ktrymi
na pewno ju si spotkae: czcionki, listy, grafik, linki i tak dalej. Aplety to tylko jedna z wielu
koncepcji hipertekstu. Warto zdawa sobie spraw z faktu, e jzyk programowania Java nie
jest narzdziem sucym do projektowania stron HTML jest narzdziem oywiajcym te
strony. Nie oznacza to, e elementy projektu GUI w aplecie Javy nie s wane, ale musz one
wsppracowa i w gruncie rzeczy podlega projektowi HTML, w ktrym s uruchamiane.
W niniejszej ksice nie omawiamy znacznikw; zakadamy, e znasz lub wsppracujesz z kim, kto zna podstawy jzyka HTML. Do uruchomienia apletw Javy wymagana jest znajomo zaledwie kilku z nich. Oczywicie, w dalszej czci tego rozdziau zapoznamy Ci z nimi. Z nauk jzyka HTML nie ma najmniejszego problemu
w najbliszej ksigarni znajdziesz dziesitki ksiek powiconych temu jzykowi. Jedn
z tych, ktre przekazuj wszelkie potrzebne informacje, nie obraajc przy tym Twojej
inteligencji, jest HTML i XHTML. Przewodnik encyklopedyczny, autorstwa Chucka Musciano i Billa Kennedy'ego, wydawnictwa Helion.
W czasie powstania apletw jedyn obsugujc je przegldark bya HotJava firmy Sun.
Oczywicie, niewielu uytkownikw miao ochot uywa osobnej przegldarki tylko po
to, by mc cieszy si nowymi zabawkami. Aplety Javy stay si naprawd popularne, gdy
Netscape doczy obsug Javy do swojej przegldarki. Wkrtce to samo stao si z Internet
Explorerem. Niestety, producenci przegldarek internetowych pozostali daleko w tyle za Jav.
Na szczcie i Netscape, i Internet Explorer obsuguj Jav 1.0, a ich nowsze wersje radz
sobie z wikszoci narzdzi Javy 1.1.
Mimo to musimy podkreli, e obsuga apletw wie si z denerwujcymi ograniczeniami
i niezgodnoci. Dla przykadu, Microsoft prawdopodobnie nigdy nie zaimplementuje tych
elementw Javy, ktre uwaa za konkurencyjne wzgldem jego wasnej technologii. Netscape
Rozdzia 10.
Aplety
531
w zasadzie straci ju zainteresowanie maszynami wirtualnymi. Netscape 6 pozwala uytkownikom podczy do przegldarki ich wasn maszyn wirtualn, ale np. Netscape 4 nie
posiada takiej moliwoci. Wszystko to utrudnia tworzenie apletw korzystajcych z nowych
waciwoci Javy, a przy tym dziaajcych na rnych przegldarkach.
Aby przezwyciy ten problem, Sun udostpni narzdzie o nazwie Java Plug-In (pocztkowo nosio ono nazw Activator). Korzystajc z mechanizmw rozszerzania aplikacji,
obsugiwanych przez przegldarki Internet Explorer i Netscape Navigator, Java Plug-In podcza si do obydwu przegldarek i umoliwia im uruchamianie apletw Javy przy uyciu zewntrznego Java Runtime Environment (rodowiska wykonawczego Javy), dostarczanego
przez firm Sun. Wszystko na to wskazuje, e JRE zawsze bdzie uywa najnowszej wersji
maszyny wirtualnej, dziki czemu zawsze bdziesz mg korzysta z najnowszych i najwspanialszych osigni jzyka Java.
Gdy ju zainstalujesz Java Plug-In, bdziesz mg wybra odpowiadajc Ci wersj maszyny
wirtualnej Javy. Aby uruchamia aplety zamieszczone w tej ksice, musisz zainstalowa Java
Plug-In i wybra maszyn Java 1.3 (patrz rysunek 10.1).
Rysunek 10.1.
Wybr maszyny
wirtualnej Javy
w oknie Java Plug-In
Oczywicie, jeeli projektujesz stron internetow dla szerokiego grona odbiorcw, wymaganie, aby kady uytkownik Twojej strony zainstalowa Java Plug-In, w ogle nie wchodzi
w gr, poniewa pobieranie go zajmuje troch czasu. W takim wypadku musisz zaprojektowa
aplety, ktre bd dziaa z maszyn wirtualn Javy wbudowan w Netscape Navigatora lub
w Internet Explorera. Najlepiej jest trzyma si narzdzi Java 1.0 i tak bardzo uproci aplet,
jak to tylko moliwe. Jednak, szczerze mwic, jeeli Twj aplet ma by tak prosty, to
prawdopodobnie moesz si w ogle oby bez niego w algorytmach moesz uywa JavaScriptu, przekazywa dane za pomoc formularzy, a w animacjach uywa animowanych
plikw GIF. Nastpnie cay program umieszczasz na serwerze, najlepiej na serwerze obsugujcym oparte na Javie strony internetowe oraz serwlety.
Z drugiej strony, jeeli piszesz bardzo skomplikowany program, zastanw si, czy wykorzystanie przegldarki internetowej do uruchamiania go niesie ze sob jakiekolwiek korzyci.
Jeeli nie, moesz po prostu udostpni aplikacj Javy, ktr uytkownik bdzie mg cign i uruchomi na swoim komputerze. Wci bdziesz korzysta ze wszystkich osigni
Javy, takich jak niezaleno od platformy, zarzdzanie ochron danych oraz prosty dostp do
532
Java 2. Podstawy
sieci i baz danych. Oczywicie, korzystanie z przegldarki take ma swoje zalety. Uytkownikowi
zazwyczaj atwiej jest zlokalizowa aplikacj na stronie internetowej ni w lokalnym systemie plikw (aplikacj atwo zgubi, jeeli nie korzystamy z niej na co dzie). Z kolei administratorowi atwiej jest aktualizowa aplikacj na stronie internetowej ni wysya poprawki i udoskonalenia wszystkim zainteresowanym.
Programami Javy, ktre odniosy najwikszy sukces, s aplikacje intranetowe penice
funkcj interfejsw dla systemw informacyjnych. Dla przykadu, wiele firm zainwestowao
w programy obliczajce zwrot kosztw, wynajdujce potencjalnie korzystne transakcje, planujce harmonogramy i dni wolne od pracy, obsugujce wydawanie zlece i tak dalej. Programy
te s relatywnie mae, potrzebuj kontaktu z bazami danych i elastycznoci, jak zapewniaj
formularze stron internetowych, oraz musz by dostosowane do wymaga danej korporacji.
Aplety s wic dla nich doskonaym narzdziem. A poniewa liczba uytkownikw jest ograniczona, nie ma problemu z dystrybucj Java Plug-In.
Zalecamy, aby dla swoich aplikacji sieciowych wybra jedno z nastpujcych rozwiza:
1. Jeeli pracujesz w intranecie, uywaj Java Plug-In do obsugi apletw Javy. Pozwoli
Prosty aplet
Aby zadouczyni tradycji, pierwszym apletem, jaki napiszemy, bdzie .
Zanim to zrobimy, musimy podkreli, e z punktu widzenia programisty aplety nie s niczym
nowym. Aplet to po prostu klasa Javy rozszerzajca (koniecznie) klas .
Zwr uwag, e pakiet nie jest czci pakietu AWT, mimo i aplet jest
komponentem AWT, co wida na rysunku 10.2 przedstawiajcym hierarchi dziedziczenia.
W naszej ksice do implementacji apletw bdziemy uywa zestawu Swing. Jak moesz
si przekona, spogldajc na rysunek 10.2, jest bezporedni podklas klasy .
Jeeli Twj aplet zawiera komponenty Swing, musisz rozszerzy klas . Komponenty Swing znajdujce si wewntrz samej klasy nie zostan prawidowo
przerysowane.
Hierarchia dziedziczenia (rysunek 10.2) niesie ze sob pewne oczywiste, lecz mimo to
uyteczne konsekwencje. Na przykad, poniewa aplety s komponentami AWT, obsuga
zdarze w apletach dziaa dokadnie tak samo, jak omawiana w rozdziale 8. obsuga zdarze
aplikacji.
Listing 10.1 zawiera kod apletu Nie Witaj wiecie.
Rozdzia 10.
Aplety
533
Rysunek 10.2.
Hierarchia
dziedziczenia apletu
Zauwa, jak bardzo ten kod przypomina odpowiadajcy mu program z rozdziau 7. Jednake,
poniewa aplet znajduje si wewntrz strony internetowej, nie trzeba okrela, w jaki sposb
program koczy swoje dziaanie.
534
Java 2. Podstawy
Plikiem przetwarzanym przez przegldark apletw jest plik HTML, a nie plik klasy. Rysunek
10.3 przedstawia przegldark apletw wywietlajc powyszy aplet.
Rysunek 10.3.
Aplet uruchamiany
przez przegldark
apletw
Moesz rwnie uruchamia aplety za pomoc swojego edytora lub rodowiska programistycznego. W systemie Emacs wybierz z menu JDE/Run Applet. Uywajc programu
Textpad, wybierz Tools/Run Java Applet lub uyj skrtu klawiaturowego CTRL+3. Zostanie wywietlone okno dialogowe prezentujce wszystkie pliki HTML znajdujce si
w aktualnym katalogu. Jeeli naciniesz klawisz ESC, Textpad automatycznie utworzy
najmniejszy moliwy plik HTML. W systemie Forte po prostu zaaduj stron HTML zawierajc znacznik apletu. Forte obsuguje prost przegldark, prezentujc dziaanie
apletu wewntrz strony internetowej. Moesz rwnie klikn prawym klawiszem myszki
plik rdowy i w zakadce Execution zmieni warto Executor na Applet Execution.
Dziki poniszej sztuczce moesz unikn tworzenia dodatkowych plikw HTML. Docz
znacznik apletu do pliku rdowego jako komentarz:
A
:,,.72);<7+1C
1=<2>+66>7=?>2+66@
:A,,.72@
A
C
!
Rozdzia 10.
Aplety
535
Nastpnie uruchom przegldark apletw, jako parametr w linii polece podajc plik
rdowy:
C
Nie polecamy tej procedury, ale moe ona okaza si pomocna, jeli zaley Ci na zminimalizowaniu liczby plikw, o ktre musisz si martwi w czasie testowania programu.
Przegldarka apletw przydaje si podczas wstpnych testw, ale w pewnym momencie bdziesz
zmuszony uruchomi swoje aplety w przegldarce internetowej, aby zobaczy je w ten sam
sposb, w jaki bdzie je oglda uytkownik. Program przegldarki apletw pokazuje wycznie
aplet, pomijajc otaczajcy go tekst HTML. Jeeli plik HTML zawiera kilka apletw, przegldarka apletw wywietli po prostu kilka okienek.
Nastpnie zaznacz pole Show Java Console. Dziki temu za kadym razem, gdy uruchomisz Java Plug-In, pojawi si okno konsoli (patrz rysunek 10.5). Okno konsoli jest
bardzo pomocne przy wywietlaniu komunikatw o bdach.
Rysunek 10.4.
Panel sterowania
Java Plug-In
536
Java 2. Podstawy
Rysunek 10.5.
Konsola Javy
Niestety, znaczniki HTML, ktrych musisz uywa, wywoujc Java Plug-In, s do nieporczne. Zamiast pisa je wasnorcznie, atwiej bdzie Ci uruchomi konwerter HTML, dostarczany w tym celu przez firm Sun (patrz rysunek 10.6). Moesz go cign z http://java.sun.com/
products/plugin1.3/converter.html. Rozpakuj plik, np. do /usr/local/jdk/converter lub c:\jdk\
converter.
Rysunek 10.6.
Konwerter HTML
Java Plug-In
lub
Rozdzia 10.
Aplety
537
Domylnie konwerter wywietla graficzny interfejs uytkownika (patrz rysunek 10.6). Moesz
uywa tego programu do konwersji wszystkich plikw w danym katalogu. Jeeli wywoasz
program z katalogu plugin, wszystkie dane wejciowe zostan wpisane automatycznie i bdziesz
mg po prostu klikn przycisk Convert.
Moesz rwnie skorzysta z jzyka skryptowego lub pliku wsadowego, umieszczajc go
w katalogu jdk/converter/classes, ale w takim wypadku musisz wasnorcznie okreli katalog
plikw HTML.
Dla przykadu, w przypadku zaczynamy od nastpujcego prostego
kodu HTML:
:,,.72);<7+1C
1=<2>+66>7=?>2+66@
:A,,.72@
Wynik konwersji jest zawarty w listingu 10.2. Znaczniki tego kodu wyjanimy w dalszej
czci rozdziau.
Listing 10.2. NieWitajSwiecieApletPlugin.html
:HEE1);I7827<J,,.721EE@
:HEE);I78278I78=;EE@
:;K!7)2 +1 F(<-)(6E67E<EK7-E66(6"L--<-1
=<2>+66>7=?>2+66 +1B FAA
A AAA
EE
MI+446461@
":,8CC7+);<7I.N7+1
1@
$:,8CC7+1 /1I.N7+1 AE
E +1@
':,8CC7+1 1I.N7+1O1@
(:);CC72@
-:7CK7< /+1 AE
E +1
);<7+1
1=<2>+66>7=?>2+66 +O
+1B FAA
A AAA
E B 1@:;7CK7<@:A);CC72@
6:A;7CK7<@:A7CK7<@
:A;K!7)2@
:HEE
:,,.72);<7+1
1=<2>+66>7=?>2+66@
:A,,.72@
"EE@
$:HEE17<J);I7827<J,,.721EE@
Jeli wolisz korzysta z linii polece, moesz po prostu wpisa ciek dostpu do pliku lub
plikw, ktre powinny zosta skonwertowane, np.:
lub
Konwerter uywajcy linii polece skonwertuje i utworzy pliki zapasowe w ten sam sposb,
w jaki wywietla okno dialogowe.
Domylnie konwerter produkuje pliki HTML, ktre dziaaj zarwno w przegldarce Internet Explorer, jak i w Netscape Navigator. Istniej jednak inne sposoby konwersji jeli
chcesz dowiedzie si wicej, zajrzyj do dokumentacji konwertera.
538
Java 2. Podstawy
Konwerter zamienia zawarto wszystkich plikw w danym katalogu, a stare wersje kopiuje
do katalogu katzrodlowy_BAK. Dla przykadu, jeeli umiecie oryginalne pliki w katalogu
plugin, zostan one zastpione plikami skonwertowanymi, a oryginay zostan skopiowane
do plugin_BAK.
Nie podoba nam si ten rodzaj konwersji nawet jeeli konwerter zachowuje oryginalne
pliki. Zazwyczaj wygodnie jest mie pod rk zarwno oryginalny, jak i skonwertowany plik.
Zalecamy nastpujc procedur:
1. Skopiuj pliki do katalogu tymczasowego.
2. Uruchom konwerter.
3. Zmie nazwy skonwertowanych plikw na co w rodzaju MojApletPlugin.html.
4. Przenie pliki z powrotem do oryginalnego katalogu.
Testowanie apletw korzystajcych z Java Plug-In jest troch bolesne, poniewa musisz uruchamia swoje pliki HTML przy uyciu konwertera. Jeeli uywasz Netscape 4,
moesz zaoszczdzi sobie troch pracy, pod warunkiem jednak, e Twoje aplety nie
korzystaj z adnych narzdzi Java 2 oprcz zestawu Swing (wszystkie aplety w tym
rozdziale speniaj ten warunek). cignij z witryny http://java.sun.com/products/jfc/
#download-swing dodatek do zestawu Swing. Umie plik swing.jar w katalogu Netscape\
Communicator\Program\Java\Classes. Teraz Netscape 4 bdzie w stanie uruchamia
aplety korzystajce z zestawu Swing wystarczy, e zaadujesz prosty plik HTML zawierajcy znacznik . Konwersja na znaczniki nie bdzie ju potrzebna.
W przypadku Internet Explorera procedura jest podobna, lecz bardziej skomplikowana.
Szczegy znajdziesz pod adresem http://java.sun.com/products/jfc/tsc/articles/
applets/index.html.
Rozdzia 10.
Aplety
539
540
Java 2. Podstawy
Listing 10.3 zawiera stron HTML. Zwr uwag, e oprcz znacznikw apletu znajduje si
w nim take pewien tekst.
Listing 10.4 zawiera kod apletu. Zbudowalimy podklas klasy , umiecilimy kod
inicjalizacyjny w metodzie " oraz usunlimy wywoania #, #$, #' *
(#
)(" i #(. Klasa "+, () nie ulega adnym zmianom, wic jej kod
zosta pominity.
Listing 10.4. ApletKalkulatora.java
P0 !
"#
$ %&
'#
()
*
+ ) ,%&
-,P0 +
,P0 %&
6
*
%&
9
9
(-."/0.wywoywana,
(-.#$/".#$)(,(#1.".2#(,(#0.wymusza
Rozdzia 10.
Aplety
"
(-.#)/0.przeaduj
(-.#(/0.przeaduj
(-.-#)(2/0.przeaduj
541
542
Java 2. Podstawy
Rozdzia 10.
Aplety
543
Jeeli ufasz osobie, ktra podpisaa aplet, moesz poinformowa przegldark, aby nadaa
apletowi wiksze przywileje. Np. moesz da wikszy stopie swobody apletom pochodzcym
z intranetu Twojej firmy ni tym z www.hacker.com. Umoliwiajcy konfiguracj model
ochrony Javy pozwala na ustanowienie takiego poziomu bezpieczestwa, jakiego potrzebujesz. Apletom, ktrym ufasz cakowicie, moesz nada te same przywileje, co lokalnym
aplikacjom. Programom innych firm, o ktrych wiesz, e mog zawiera pewne niewielkie
bdy, moesz nada troch niszy stopie zaufania. Aplety nieznanego pochodzenia mog
zosta ograniczone do piaskownicy.
Podsumujmy powysze rozwaania. Java posiada trzy mechanizmy zarzdzajce bezpieczestwem systemu:
1. Kod programu jest interpretowany przez wirtualn maszyn Javy, a nie wykonywany
bezporednio.
2. Meneder ochrony sprawdza wszystkie podejrzane operacje nalece do biblioteki
wykonawczej Javy.
3. Aplety mog zosta podpisane, by uytkownicy wiedzieli, skd pochodz.
Model ochrony technologii ActiveX firmy Microsoft polega wycznie na trzecim mechanizmie. Jeeli chcesz uruchomi kontrol ActiveX, musisz jej cakowicie zaufa. Ten
model sprawdza si, jeeli programy pochodz od maej liczby zaufanych dostawcw,
ale cakowicie zawodz w przypadku sieci WWW. Jeeli uywasz Internet Explorera,
moesz sprawdzi, w jaki sposb dziaa ActiveX. Aby zainstalowa Java Plug-In w Internet
Explorerze, musisz zaakceptowa certyfikat firmy Sun. Certyfikat ten informuje tylko,
e kod programu pochodzi od firmy Sun. Nie mwi absolutnie nic o jakoci kodu. Gdy ju
zakoczysz instalacj, dziaanie programu Java Plug-In nie bdzie kontrolowane.
Gdy uytkownik klika przycisk, zmienia si stan ramki jeeli wczeniej bya wyczona,
teraz staje si widoczna, i odwrotnie. Gdy klikniesz przycisk kalkulatora, nad stron internetow pojawi si okno dialogowe. Gdy klikniesz ponownie, kalkulator zniknie.
544
Java 2. Podstawy
!K T/0P0+
!K %1P0 1&
T/0P0 . %
. %&
#
,O % 7 T &
#
O%0I%&&0 I%O&
0B
%&
9
9&
Jest jednak co, o czym musisz wiedzie, zanim umiecisz aplet na swojej stronie. Aby zobaczy, jak aplet wyglda na ekranie uytkownika, uruchom go w przegldarce internetowej,
a nie w przegldarce apletw. Do kalkulatora zostanie doczone ostrzeenie (rysunek 10.9).
Rysunek 10.9.
Okno dialogowe
wewntrz przegldarki
internetowej
We wczesnych wersjach przegldarek ostrzeenie brzmiao bardzo powanie: 7") #.."-( (8(-".$ '".(,"(. .2). Kada nastpna wersja SDK
tonowaa ostrzeenie 7" "-. . . "-( ( ()2$(". (,"(
.2) lub )""89.. . "-( (
#)$:"9.
,"(. . 2). Teraz
brzmi ono po prostu .."-( (
,"(. .2).
Wiadomo ta jest elementem systemu bezpieczestwa przegldarek. Przegldarka internetowa upewnia si w ten sposb, e aplet nie wywietli okna dialogowego, ktre uytkownik
mgby pomyli ze standardow aplikacj. Moe si zdarzy, e stron odwiedzi niedowiadczony uytkownik, automatycznie uruchamiajc aplet, a nastpnie przez przypadek wpisze
w wywietlone okno dialogowe haso lub numer karty kredytowej, ktre to dane aplet wyle
serwerowi.
Aby unikn niebezpieczestwa zaistnienia takich sytuacji, wszystkie okna dialogowe uruchamiane przez aplet zawieraj etykiet ostrzeenia. Jeeli Twoja przegldarka obsuguje podpisane aplety, moesz skonfigurowa j tak, aby w przypadku programw, ktrym ufasz,
ostrzeenie nie byo wywietlane.
Listing 10.5 zawiera kod klasy (8 +, (). Kod klasy "+, ()
z rozdziau 9. nie uleg zmianie, zosta wic pominity.
Rozdzia 10.
Aplety
545
546
Java 2. Podstawy
Wszystkie podane informacje zostan wywietlone na stronie HTML, ktrej kod moe wyglda np. tak:
:>2C.@
:>7<@
:2=2.7@
:A2=2.7@
:A>7<@
:K;<Q@
W
0 0
/5
TX!/F
:,,.72);<7+1
1=<2>+66>7=?>2+66@
? //2
TX 0S
S!W4
/
S/W
:A,,.72@
:AK;<Q@
:A>2C.@
Zgodnie ze specyfikacj HTML znaczniki i atrybuty HTML, takie jak , mog by
pisane zarwno wielkimi, jak i maymi literami. Wielko liter ma znaczenie tylko przy
identyfikacji nazwy klasy apletu. Wielko liter moe te mie znaczenie w przypadku
innych elementw, podawanych w cudzysowach, taki jak nazwy plikw JAR, ale pod
warunkiem, e serwer rozrnia wielkie i mae litery.
Ten atrybut okrela wyrwnanie apletu. Masz dwa wyjcia. Aplet moe znajdowa
si w okrelonym miejscu, a tekst bdzie go opywa, albo aplet moe zosta
umieszczony w linii tekstu, tak jakby by olbrzymi liter. Pierwsze dwie wartoci
(6 i 3&%) powoduj umieszczenie apletu w staym miejscu. Pozostae wartoci
sprawiaj, e aplet znajdzie si we wntrzu tekstu.
Wartoci, ktre moe przyjmowa atrybut, zostay wyszczeglnione w tabeli 10.1.
Rysunek 10.10 prezentuje wszystkie opcje wyrwnania apletu umieszczonego we wntrzu
tekstu. Pionowy pasek na pocztku kadej linii to obraz graficzny. Poniewa obraz jest wyszy
od tekstu, moesz zauway rnice pomidzy grnym i dolnym kocem linii a grnym i dolnym
kocem tekstu.
Rozdzia 10.
Aplety
547
Dziaanie
.7L2
Umieszcza aplet przy lewej krawdzi strony. Znajdujcy si w danym miejscu tekst
zostanie przesunity na prawo od apletu
8=?>2
Umieszcza aplet przy prawej krawdzi strony. Znajdujcy si w danym miejscu tekst
zostanie przesunity na lewo od apletu
K;22;C
Dolny koniec apletu zostanie zrwnany z dolnym kocem tekstu w aktualnej linii
2;,
27Y22;,
Grny koniec apletu zostanie zrwnany z grnym kocem tekstu w aktualnej linii
C=<<.7
KC=<<.7
K7.=7
Dolny koniec apletu zostanie zrwnany z lini bazow tekstu w aktualnej linii
KK;22;C
I,)74>,)7
Rysunek 10.10.
Wyrwnanie apletu
Ten atrybut podaje nazw pliku klasy apletu. Nazwa klasy jest wykorzystywana
z uwzgldnieniem atrybutu
(zob. poniej) albo z uwzgldnieniem
aktualnej strony.
548
Java 2. Podstawy
Jeeli uywasz relatywnej cieki dostpu, musi ona wskazywa na pakiet pliku
klasy. Dla przykadu, jeeli klasa apletu znajduje si w pakiecie (('),
atrybut
powinien wyglda nastpujco:
;<((')(##<.
Dozwolona jest rwnie skadnia
;<((')(##<. Jednak
w przypadku tego atrybutu nie moesz uywa absolutnej cieki dostpu. Jeeli
plik klasy znajduje si w innym katalogu, uyj atrybutu
.
Atrybut
okrela jedynie nazw pliku, ktry zawiera klas Twojego apletu.
Oczywicie, Twj aplet moe korzysta z innych klas. W momencie, gdy przegldarka
zaaduje gwn klas apletu, otrzyma informacje o innych wymaganych klasach
i wczyta je.
W znaczniku apletu musi znale si albo atrybut
, albo atrybut
(zob. poniej).
Ten opcjonalny atrybut zawiera plik lub list plikw archiwalnych zawierajcych
klasy oraz inne zasoby apletu (przejd do podrozdziau powiconego plikom JAR,
aby dowiedzie si wicej o plikach archiwalnych Javy). Pliki te s pobierane
z serwera, zanim aplet zostanie zaadowany. Ten mechanizm znaczco przyspiesza
proces adowania apletu, poniewa do cignicia pliku JAR, zawierajcego wiele
mniejszych plikw, wystarcza tylko jedno danie HTTP. Kolejne pliki JAR
rozdzielasz przy uyciu przecinka. Dla przykadu:
:,,.72);<7+1 P0 18)>=I7+
1P/P0
4
AP/)!
1
=<2>+66>7=?>2+"6@
Powyszy atrybut ma jedno bardzo wane zastosowanie. Jeeli Twj aplet uywa zestawu
Swing, ale w aden inny sposb nie korzysta z narzdzi Java 2, moesz go uruchomi
na przegldarkach zgodnych z Java 1.1 (takich jak Netscape 4 lub Internet Explorer),
dostarczajc plik JAR zawierajcy wszystkie klasy Swing. Moesz uzyska odpowiednie
archiwum, cigajc dodatek Swing dla Java 1.1 z http://java.sun.com/products/jfc/
#download-swing. Nastpnie musisz spakowa swj aplet w plik JAR i zaadowa go
wraz z plikiem JAR zestawu Swing. Aby tego dokona, dopisz do kodu strony parametr
3
%= (zob. poniej).
:,,.72);<7+1 P0 1
8)>=I7+1P/ P0
4
1
=<2>+66>7=?>2+"6@
Rozdzia 10.
Aplety
549
Innym sposobem okrelania pliku klasy apletu jest podanie nazwy pliku zawierajcego
serializowany obiekt apletu jednake niektre przegldarki nie obsuguj tej
opcji. Jeeli chcesz z niej skorzysta, na pewno bdziesz musia zainstalowa Java
Plug-In (obiekt jest serializowany, gdy zapisujesz do pliku wartoci wszystkich pl
skadowych tego obiektu; serializacj omwimy w rozdziale 12.). Aby powrci do
pierwotnego stanu, obiekt jest deserializowany z pliku. Jeeli uywasz tego atrybutu
zamiast metody ", wywoywana jest metoda #) apletu. Przed serializowaniem
obiektu apletu powiniene wywoa metod #(. Atrybut
jest uyteczny np.
w tworzeniu strony, ktra bdzie automatycznie przeadowywa aplety i wymusza na
nich powrt do tego samego stanu, w jakim znajdoway si, gdy przegldarka zostaa
zamknita. Jest to do wyspecjalizowane narzdzie, zazwyczaj niewykorzystywane
w projektach stron internetowych.
W znaczniku apletu musi znale si albo atrybut
, albo atrybut
.
:,,.72;K!7)2+1 P0 1=<2>+66>7=?>2+"6@
550
Java 2. Podstawy
Dziki magii integracji Javy i JavaScript, zaprogramowanej zarwno w Netscape, jak i w Internet
Explorerze, moesz wywoywa metody apletu:
P0%&
(Nasz aplet kalkulatora nie posiada metody ); chcielimy jedynie zaprezentowa skadni.)
Na stronie http://www.javaworld.com/javatips/jw-javatip80.html Francis Lu uywa
komunikacji JavaScript Java, aby rozwiza odwieczny problem: zmieni rozmiar
apletu tak, aby nie by ograniczony przez podane wartoci atrybutw % i %&%.
Jest to dobry przykad integracji jzykw Java i JavaScript, jak rwnie ilustruje, ile kodu
potrzeba, aby napisa skrypt dziaajcy pod rnymi przegldarkami.
Atrybut jest rwnie konieczny, gdy chcesz, aby dwa aplety na tej samej stronie komunikoway si ze sob bezporednio. Okrelasz nazw kadej instancji apletu, nastpnie
przekazujesz t nazw metodzie 8 klasy
("4. Mechanizm ten, nazywany
komunikacj pomidzy apletami (ang. inter-applet communication), omwimy w dalszej czci rozdziau.
Oczywicie, wikszo obecnych przegldarek obsuguje Jav, ale ta obsuga moe czasami
zosta wyczona by moe przez uytkownika, a by moe przez cierpicego na paranoj
administratora systemu. Aby wspomc te nieszczliwe duszyczki, moesz wywietli wiadomo, korzystajc z atrybutu .
:,,.72);<7+1 P0 1=<2>+66>7=?>2+"6
.2+1? //2
TX 0S
S!W4
/
S/W00 1@
Znacznik OBJECT
Znacznik
jest czci standardu HTML 4.0, a Konsorcjum W3 zaleca, aby programici
uywali go zamiast znacznika . Znacznik
posiada 35 rnych atrybutw, z ktrych
wikszo (jak np.
+>
) jest istotna wycznie dla ludzi programujcych w Dynamic
HTML. Atrybuty pozycjonowania, takie jak & i %&%, dziaaj dokadnie tak samo, jak
w przypadku znacznika . Kluczowym dla apletw Javy atrybutem znacznika
Rozdzia 10.
Aplety
551
jest atrybut
. Atrybut ten okrela lokacj obiektu. Oczywicie, znaczniki
mog adowa rne rodzaje obiektw, takie jak aplety Javy lub komponenty ActiveX, czyli
np. sam Java Plug-In. W atrybucie
> opisujesz charakter obiektu. Dla przykadu, typem
kodu apletw Javy jest (". Oto znacznik
wczytujcy aplet Javy:
:;K!7)2
);<72Q,7+1 A
1
).=<+1
F P0 1
=<2>+66>7=?>2+"6@
552
Java 2. Podstawy
Poniej znajduj si detale konwertowania znacznikw, jeeli koniecznie chcesz dokona
konwersji wasnorcznie.
Konwersja znacznika na znacznik jest prosta zmie na , a take
docz atrybuty > i 7& &.
Konwersja znacznika na znacznik
jest bardziej zoona. Musisz dopisa atrybuty
i
oraz doczy znacznik 3 o nazwie > (
ma zawsze t sam
warto; jest to globalny numer ID ActiveX, oznaczajcy Java Plug-In). Zachowaj wszystkie
atrybuty, oprcz tych znajdujcych si w tabeli 10.2, poniewa musz one zosta skonwertowane na znaczniki 3. Jeeli moe zaistnie konflikt pomidzy nimi a ju wpisanymi
znacznikami 3, w nazwach parametrw moesz uy prefiksu =? ; na przykad:
:,8CC7+1!IJ);<71I.N7+1 P0 1@
OBJECT
.2+
brak
8)>=I7+
:,8CC7+18)>=I71I.N7+@
);<7+
:,8CC7+1);<71I.N7+@
);<7K7+
:,8CC7+1);<7K71I.N7+@
;K!7)2+
:,8CC7+1;K!7)21I.N7+@
Rozdzia 10.
Aplety
553
Aplet pobiera warto parametru, korzystajc z metody 8 )) klasy , jak w poniszym przykadzie:
)T0 !
#
%&
#
T
)T0+ , %1T01&
9
9
Metod 8 )) moesz wywoa wycznie w metodzie ", nie w konstruktorze.
Gdy uruchamiany jest konstruktor, parametry nie s jeszcze okrelone. Poniewa ukad
graficzny wikszoci apletw jest okrelany przez parametry, zalecamy, aby nie pisa konstruktorw apletw. Cay kod inicjalizacyjny moesz po prostu umieci w metodzie ".
Parametry zawsze s acuchami. Jeeli parametr powinien by liczb, musisz go skonwertowa. Dokonujesz tego w standardowy sposb, uywajc odpowiedniej metody, np. )#"
klasy "8).
Dla przykadu, gdyby chcia doczy parametr rozmiaru czcionki, kod HTML mgby wyglda nastpujco:
:,,.72);<7+1 )T01=<2>+66>7=?>2+66@
:,8CC7+1T01I.N7+11@
:A,,.72@> 1@
:,8CC7+1T1I.N7+1
Poniszy kod rdowy ilustruje, w jaki sposb moesz wczyta parametr liczbowy.
)T0 !
#
%&
#
T
)T0+ , %1T01&
T)T0+= = % , %1T1&&
9
9
Aby dodatkowo upewni si, czy parametry w Twoim kodzie zgadzaj si ze sob, powiniene
sprawdza, czy nie zosta pominity parametr )($). Dokonujesz tego, sprawdzajc, czy jego
warto wynosi " . Na przykad:
T)T0
8T+ , %1T1&
O% 8T++&T)T0+
T)T0+= = % 8T&
554
Java 2. Podstawy
Poniej znajduje si uyteczny aplet korzystajcy z wielu parametrw. Aplet ten rysuje wykres kolumnowy przedstawiony na rysunku 10.11.
Rysunek 10.11.
Aplet Wykres
Aplet pobiera wysokoci kolumn, korzystajc ze znacznikw 3 w pliku HTML. Plik HTML
tworzcy rysunek 10.11 wyglda nastpujco:
:,,.72);<7+1/01=<2>+66>7=?>2+66@
:,8CC7+1 / 1I.N7+1Z 1@
:,8CC7+1
1I.N7+1-1@
:,8CC7+1T
J1I.N7+1C0/1@
:,8CC7+1T
J1I.N7+11@
:,8CC7+1T
J1I.N7+1*1@
:,8CC7+1T
J1I.N7+1C1@
:,8CC7+1T
J"1I.N7+1!
T1@
:,8CC7+1T
J$1I.N7+1 1@
:,8CC7+1T
J'1I.N7+1N1@
:,8CC7+1T
J(1I.N7+1 1@
:,8CC7+1T
J-1I.N7+1, 1@
:,8CC7+1
J1I.N7+1661@
:,8CC7+1
J1I.N7+1'"661@
:,8CC7+1
J1I.N7+1(6661@
:,8CC7+1
J1I.N7+1661@
:,8CC7+1
J"1I.N7+1((6661@
:,8CC7+1
J$1I.N7+1'6661@
:,8CC7+1
J'1I.N7+16661@
:,8CC7+1
J(1I.N7+16$661@
:,8CC7+1
J-1I.N7+161@
:A,,.72@
Oczywicie, moge umieci w aplecie tablic acuchw oraz tablic liczb, ale z uycia
mechanizmu 3 wynikaj dwie istotne korzyci. Na swojej stronie internetowej moesz
mie wiele kopii tego samego apletu, ukazujcego rne wykresy po prostu umieszczasz
na stronie dwa znaczniki , zawierajce rne zbiory parametrw. Co wicej, moesz
zmienia dane, ktre chcesz umieci na wykresie. Przyznajemy, e rednice planet nie zmieni
si w najbliszym czasie, ale zamy na przykad, e Twoja strona zawiera wykres wynikw
sprzeday w danym tygodniu. Aktualizacja strony internetowej jest prosta, poniewa HTML
to czysty tekst. Cotygodniowa edycja i rekompilacja pliku Javy jest ju bardziej skomplikowana.
Rozdzia 10.
Aplety
555
556
Java 2. Podstawy
- ) %&
"6?B<+%?B<&
"
"AAT
5VX0/X
"O%
++&
"
C+6
""
C0/+6
"$O% +6:
B]]&
"'#
"(O%
C@
[\&
C+
[\
"-O%
C0/:
[\&
C0/+
[\
$69
$O%
C0/++
C&
$
$ T,+ B%&
$
/,+ >B %&
$"
$$L T02/ +
L %1O14L K;.<46&
$'L T07 /0 /+
L %1O14L ,.=46&
$(
$-AAT
TBWT
XTT / S
'6L 8 ) 0 0 + L 8 ) %&
'8 <0
T2/
'+T02/ K % / 40 0 &
' T2/ +0
T2/ B%&
' +0
T2/ >B %&
'"
'$AA/
/ S
'' /+E0
T2/ Q%&AA
T
'( +%T,ET2/ &A
'- L %T02/ &
(6
% / 4%O &4%O &/&
(
(AAT
TBWT
XTT /0 /0R
(.C /07 /0 /
(+T07 /0 / .C %1140 0 &
(" + /07 /0 / >B %&
($
('/+
/,E /07 /0 / < %&
(( L %T07 /0 /&
(-
-6AAT
RST/00T
/05V0R
- 0+%
/,EE &
-A%
C0/E
C&
- TP/+T,A
B
-
-"AA/
0/
-$O% +6:
B]]&
-'#
-(AAT0 / / 0X T
X0W
-- +TP/]
66 /+
6
/0+
[\0
6O%
[\@+6&
6/]+%
C0/E
[\&0
6
6"#
6$/]+
C0/0
Rozdzia 10.
Aplety
557
!.)"8.8 ))/)"8."$0.pobiera
!.)"8.8"'(/0.jest
!.)"8@A@A.8 ))"'(/0.jest
Multimedia
Aplety mog obsugiwa zarwno pliki graficzne, jak i dwikowe. W chwili, gdy piszemy te
sowa, pliki graficzne musz mie format GIF lub JPEG, dwikowe AU, AIFF, WAV
lub MIDI. Animowane pliki GIF s akceptowane i uruchamiane. Zazwyczaj pliki zawierajce te
informacje s okrelane przez adres URL, ktry musimy wczeniej pobra.
558
Java 2. Podstawy
Adresy URL
URL jest opisem zasobu znajdujcego si w Internecie. Dla przykadu, <9# "(
"-4< informuje przegldark, aby uya protokou przesyania hipertekstu dla pliku
index.html znajdujcego si w witrynie java.sun.com.
Java posiada klas 73 opisujc adresy URL. Najprostszym sposobem utworzenia adresu URL
jest przekazanie acucha jako parametru konstruktora 73:
N8.+
N8.%1B FAA
A B 1&
Taki adres nazywamy absolutnym adresem URL, poniewa okrelamy kompletn ciek
dostpu do zasobu. Innym uytecznym konstruktorem 73 jest konstruktor adresu relatywnego.
N8. +
N8.%41 A / 1&
Skadni obsugi wyjtkw omwimy w rozdziale 12. Do tego czasu, jeeli napotkasz kod
podobny do tego z naszych przykadowych programw, po prostu przejd do porzdku dziennego nad sowami kluczowymi )2 i .
Typowym sposobem uzyskiwania adresu URL jest zapytanie apletu, skd pochodzi, czyli:
Aby uzyska pierwszy z nich, skorzystaj z metody 8( "# ; aby otrzyma drugi,
skorzystaj z 8
(-#. Tych metod nie musisz umieszcza w bloku )2.
Za porednictwem apletw oraz Java Plug-In moesz uzyska dostp do bezpiecznych
stron internetowych (https) przeczytaj http://java.sun.com/products/plugin/1.3/docs/
https.html. Aby tego dokona, programy korzystaj z mechanizmw SSL przegldarki.
Rozdzia 10.
Aplety
559
W powyszym przykadzie uywamy metody 8( "#/0, zwracajcej URL, z ktrego
aplet zosta cignity. Drugi argument konstruktora 73 okrela lokalizacj wzgldem dokumentu bazowego, pod ktr znajduje si obraz lub plik dwikowy (aplety nie musz posugiwa si obiektami typu ((,, aby otrzyma plik graficzny).
Pliki graficzne i dwikowe musz znajdowa si na tym samym serwerze, z ktrego pochodzi aplet. Ze wzgldw bezpieczestwa aplety nie maj dostpu do plikw na innych
serwerach (aplety mog dzwoni wycznie do domu).
Kiedy ju zaadujesz obrazy i pliki audio, to jakie operacje moesz na nich przeprowadza?
W rozdziale 7. dowiedziae si, w jaki sposb mona wywietla pojedynczy obraz. W Java 2.
Techniki zaawansowane, w rozdziale dotyczcym wielowtkowoci, znajdziesz informacje
odnonie wywietlania animacji zoonej z wielu obrazw. Aby uruchomi plik audio, wywoujesz po prostu metod 2.
Moesz rwnie wywoa metod 2 bez wczeniejszego zaadowania pliku audio.
/% < K%&41 A1&
73/)"8."$0.tworzy
73.8( "#/0.pobiera
73.8
(-#/0.pobiera
560
Java 2. Podstawy
(-.2/73. )0
(-.2/73. )1.)"8."$0.pierwsza
wersja metody
pobiera plik audio znajdujcy si pod podanym adresem. Druga wersja uywa
acucha okrelajcego relatywn ciek dostpu wzgldem adresu podanego
w pierwszym argumencie. Jeeli plik nie zostanie odnaleziony, metoda zwraca " .
8.88/73. )0
8.88/73. )1.)"8."$0.zwraca
Kontekst apletu
Aplet dziaa wewntrz przegldarki internetowej lub przegldarki apletw. Aplet moe zada
od przegldarki wykonania pewnych operacji, na przykad dostarczenia mu pliku audio, wywietlenia krtkiej wiadomoci w polu statusu lub wywietlenia innej strony internetowej.
Przegldarka moe wykona te polecenia lub zignorowa je. Dla przykadu, jeeli aplet uruchamiany wewntrz przegldarki apletw zada od przegldarki wywietlenia strony internetowej, nic si nie stanie.
Komunikujc si z przegldark, aplet wywouje metod 8
("4. Metoda ta zwraca
obiekt implementujcy interfejs typu
("4. O konkretnej implementacji interfejsu
("4 moesz myle jako o kablu czcym aplet z przegldark. Oprcz 8 -(*
i 88, interfejs
("4 zawiera kilka innych metod, ktre omwimy w poniszych podrozdziaach.
to wywoanie
/0+ ) %& %1/01&
Rozdzia 10.
Aplety
561
zwrci referencj tego apletu. Co moesz zrobi z t referencj? O ile w klasie 2,)# umiecie
metod pozwalajc na pobranie nowych danych i ponowne narysowanie wykresu, moesz j
wywoa, dokonujc odpowiedniego rzutowania.
%%/0&
/0&T<%41*14-666&
Moesz rwnie pobra list apletw na stronie, nawet jeeli nie posiadaj one atrybutu .
Metoda 8# zwraca tak zwany obiekt enumeracji (o enumeracji dowiesz si wicej
z Java 2. Techniki zaawansowane). Oto ptla wywietlajca nazwy klas wszystkich apletw
znajdujcych si na aktualnej stronie:
7 + ) %& %&
B%BC7 %&&
#
;
+ 7 %&
/ % )%& %&&
9
Z naszego dowiadczenia wynika, e metoda #( # nie jest zbyt uyteczna. Przegldarka rwnie uywa pola statusu i do czsto zdarza si, e nadpisuje Twoj drogocenn wiadomo czym w stylu <B-(". <. Korzystaj z pola statusu w przypadku mao znaczcych wiadomoci, jak np. <B-(".-"2.)(#$C.$,D<, ale
nie w sytuacji, gdy uytkownik mgby mie problemy z powodu przeoczenia wiadomoci.
Za pomoc metody #(( " moesz zada od przegldarki, aby wywietlia inn
stron internetow. Moesz tego dokona na kilka sposobw. Najprostszym jest wywoanie
#(( " z jednym argumentem adresem URL, pod ktry chcesz si dosta.
N8.+
N8.%1B FAA
A B 1&
) %&B
< %&
Problem polega na tym, e powysze wywoanie otwiera now stron w tym samym oknie,
w ktrym znajduje si strona aktualna, zatrzymujc tym samym aplet. Aby powrci do apletu,
uytkownik musi klikn przycisk Wstecz w swojej przegldarce.
Moesz poinformowa przegldark, aby wywietlia aplet w innym oknie, podajc w wywoaniu #(( " drugi parametr. Powinien to by acuch. Jeeli bdzie to specjalny
acuch, <?!",<, przegldarka, zamiast zmienia zawarto aktualnego okna, otworzy
nowe, zawierajce podany dokument. Co waniejsze, jeeli skorzystasz z ramek HTML,
bdziesz mg podzieli okno przegldarki na kilka ramek, z ktrych kada bdzie miaa
562
Java 2. Podstawy
wasn nazw. Bdziesz mg umieci aplet w jednej z ramek, a w drugiej wywietla przy
jego uyciu rne dokumenty. W nastpnym podrozdziale zaprezentujemy przykad takiego
rozwizania.
Tabela 10.3 zawiera wszystkie moliwe argumenty metody #(( ".
Pooenie
1J 1
1J 1
1J01
!.
("4.8
("4/0.zwraca
uchwyt rodowiska
przegldarki internetowej. W przypadku wikszoci przegldarek moesz uy tej
informacji do kontrolowania przegldarki, w ktrej uruchamiany jest aplet.
(-.#( #/)"8.-0.wywietla
przegldarki.
-(
.8 -(
/73. )0.zwraca
" )(".8#/0.zwraca
.8/)"8."$0.zwraca
Przegldarka apletw firmy Sun nie wywietla stron internetowych. Polecenia #((*
" s przez ni ignorowane.
Rozdzia 10.
Aplety
563
Nie bdziemy omawia skadni tego pliku. Istotne jest to, e kada z ramek posiada dwa
elementy: nazw (podan przez atrybut ) oraz adres URL (podany przez atrybut 3
).
Nie moglimy wymyli adnych dobrych nazw dla ramek, wic nazwalimy je po prostu
<< i <)<.
Ramka po lewej (patrz listing 10.8) wczytuje plik o nazwie Lewa.html, ktry aduje aplet.
Plik Lewa.html okrela po prostu dane apletu oraz list adresw. Moesz edytowa ten plik,
zmieniajc list adresw i dostosowujc j do swojej strony internetowej.
564
Java 2. Podstawy
Ramka po prawej (patrz listing 10.9) wczytuje prosty plik, ktry nazwalimy Prawy.html
(przegldarka Netscape nie pozwala na istnienie ramek nie posiadajcych plikw, musielimy
wic dostarczy plik wczytywany na samym pocztku).
Listing 10.9. Prawa.html
:>2C.@
:2=2.7@
2W X
/5
/
:A2=2.7@
":K;<Q@
$P0
TTSXT0R
'2
T
/5
(:AK;<Q@
-:A>2C.@
Kod apletu Spis adresw, zawarty w listingu 10.10, jest do prosty. Wczytuje wartoci
parametrw ",?E, ",?F itd., i zmienia kad z nich w przecznik. Gdy wybierzesz jeden
z przecznikw, metoda #(( " wywietli odpowiedni stroni internetow w ramce
po prawej.
Listing 10.10. SpisAdresow.java
"
$
'
(
!
-#
6 %&
#
K 0+K I K%&
K ?+
K ?%&
Rozdzia 10.
Aplety
565
" +
$ SbBN8.
'
(AA
T/
T/ 0 /0J
-
B%%SbBN8.+ , %10J1]&&H+&
6#
/
#
ON8.+
N8.%SbBN8.&
"
$AA 0a 0
RTTSXT0
'!8 K T/0+
!8 K %SbBN8.&
( 0 %T/0&
- %T/0&
6
AA
/RTSXT0
/5
N8.
AA
1
1
T/0 . %
. %&
"#
$ ,O % 7 T T&
'#
( ) 0 0 + ) %&
-0 0 B
< %41
1&
69
9&
9
B%CO N8.7
/
0&
#
"
/
0 02%&
$9
'
(]]
-9
"6
")
*
+ ) ,%&
"
*
% 0&
"9
"9
566
Java 2. Podstawy
Zrzuty ekranw przedstawione na rysunkach 10.13 i 10.14 przedstawiaj ten sam program,
wywoany z linii polece jako aplikacja oraz ogldany w przegldarce apletw jako aplet.
Rysunek 10.13.
Kalkulator
jako aplikacja
Rysunek 10.14.
Kalkulator
jako aplet
Zobaczmy, jak tego dokonano. Kady plik klasy posiada dokadnie jedn klas publiczn.
Aby przegldarka apletw moga j uruchomi jako aplet, klasa ta musi rozszerza klas
. Aby Java moga j uruchomi jako aplikacj, musi posiada statyczn metod ".
A zatem mamy co nastpuje:
C
0
!
#
%	
% [\	
9
Co moemy umieci w metodzie "? Zazwyczaj tworzymy obiekt jakiej klasy i wywoujemy dla niego metod #(. Jednak w tym wypadku nie jest to takie proste. Nie moesz
wywietli surowego apletu. Aplet musi znale si wewntrz ramki. A gdy ju znajdzie si
wewntrz ramki, musi zosta wywoana metoda ".
Aby zbudowa ramk, tworzymy klas 3, , jak poniej:
80 !L
#
80 % &
#
+
)
*
+ ) ,%&
*
% &
9
9
Rozdzia 10.
Aplety
567
Konstruktor ramki umieszcza aplet (pochodzcy od klasy
(("") wewntrz nowej ramki.
W metodzie " naszego apletu (aplikacji) tworzymy now ramk powyszego typu.
C
0
!
#
%	
% [\&
#
80 0
+
80 %
C
0
%&&
0 2 %1C
0
1&
0 T%*78;P;)4Q;P;)&
0 <O ); %!L7Y=2J;J).;7&
0B
%&
9
9
Istnieje jeden problem. Jeeli taki program zostanie uruchomiony przez interpreter Javy, a nie
przez przegldark apletw, i nastpi wywoanie 8
("4, metoda ta zwrci " ,
poniewa aplet nie znajduje si wewntrz przegldarki. To z kolei spowoduje bd wykonania
programu za kadym razem, gdy interpreter sprbuje wykona kod podobny do nastpujcego:
) %&B
%
&
O ile nie chcemy konstruowa caej przegldarki, musimy dostarczy przynajmniej podstawowe elementy umoliwiajce wykonanie takich wywoa. Powysze wywoanie nie wywietli adnej wiadomoci, ale przynajmniej nie spowoduje bdu programu. Okazuje si,
e wszystko, co musimy zrobi, to zaimplementowa dwa interfejsy: ! i *
("4.
Dziaanie kontekstw apletu ju widziae. S one odpowiedzialne za dostarczanie plikw
graficznych i dwikowych oraz za wywietlanie stron internetowych. Mog rwnie grzecznie odmwi wykonania polecenia i wanie tak bdzie postpowa nasz kontekst apletu.
Gwnym zadaniem interfejsu ! jest wanie odnalezienie kontekstu apletu. Kady
aplet posiada procedur poredniczc (ang. applet stub; jest ona okrelana przez metod
# ! klasy ).
W naszym przypadku klasa 3, bdzie implementowa zarwno !, jak
i
("4. Dostarczamy najmniejsz moliw ilo kodu, jaka pozwala zaimplementowa te dwa interfejsy.
80 !L
4 )
#
AA /
%&# 9
N8. < K%&# 9
N8. ) K%&# 9
, % T
&# 119
) ) %&# B9
8T% T04
/0	
568
Java 2. Podstawy
AA / )
) )%N8.&# 9
= =%N8.&# 9
% T
&# 9
7 %&# 9
B
< %N8.	
B
< %N8.4 	
B
% 	
9
Nastpnie konstruktor ramki wywouje dla apletu metod # !, aby samemu sta si procedur poredniczc apletu.
80 % &
#
+
)
*
+ ) ,%&
*
% &
!
9
Moliwa jest jeszcze jedna sztuczka. Zamy, e chcemy korzysta z kalkulatora rwnoczenie jako apletu i jako aplikacji. Zamiast przenosi metody klasy +, () do klasy
+, (),, skorzystamy z dziedziczenia. Oto kod klasy, ktra tego dokonuje:
P0 0
P0
#
% [\&
#
80 0
+
80 %
P0 %&&
9
9
Moesz zastosowa to rozwizanie w kadym aplecie, nie tylko w aplecie kalkulatora. Wszystko,
co musisz zrobi, to wywie klas (, z klasy apletu i w metodzie "
przekaza klasie 3, obiekt ".(/0. W wyniku tego powstanie klasa bdca
rwnoczenie apletem i aplikacj.
Dla zabawy skorzystalimy ze sztuczki, o ktrej wspomnielimy ju wczeniej polega
ona na doczeniu znacznika jako komentarza w pliku rdowym. Dziki temu moesz
wywoa przegldark apletw dla pliku rdowego (!), omijajc dodatkowy plik HTML.
Rozdzia 10.
Aplety
569
Listingi 10.11 i 10.12 zawieraj kod rdowy. Aby skompilowa program, musisz skopiowa plik ApletKalkulatora.java do tego samego katalogu. Sprbuj uruchomi zarwno
aplet, jak i aplikacj:
P0 0
570
Java 2. Podstawy
Pliki JAR
Aplet kalkulatora z tego rozdziau korzysta z czterech klas: +, (), "+, *
() oraz dwch klas wewntrznych. Wiesz, e znacznik apletu wskazuje na plik klasy,
zawierajcy klas pochodzc od :
:,,.72);<7+1 P0 1=<2>+66>7=?>2+"6@
Rozdzia 10.
Aplety
571
Java obsuguje ulepszon metod adowania plikw klas, ktra pozwala umieci wszystkie
wymagane pliki klas w jednym pliku. Plik ten moe zosta cignity za pomoc jednego
dania HTTP. Pliki archiwizujce pliki klas Javy s nazywane plikami archiwalnymi Javy
(ang. Java Archive files, JAR). Pliki JAR mog zawiera zarwno pliki klas, jak i inne typy
plikw, jak np. obrazy lub pliki dwikowe. Pliki JAR s kompresowane przy uyciu popularnego formatu kompresji ZIP, co dodatkowo redukuje czas adowania.
Aby zbudowa plik JAR, uywasz narzdzia o nazwie ) (jeli wybrae domyln instalacj,
znajdziesz je w katalogu jdk/bin). Najbardziej typowe polecenie tworzce plik JAR ma nastpujc skadni:
O
Dla przykadu:
Tabela 10.4 zawiera list opcji programu ). S one do podobne do opcji polecenia )
w systemie Unix.
Tabela 10.4. Opcje programu jar
Opcja
Opis
Tworzy nowe, puste archiwum i dodaje do niego pliki. Jeeli ktrakolwiek z podanych nazw
plikw oznacza katalog, program
rekursywnie przetwarza jego zawarto
Wydobywa pliki. Jeeli podae jeden lub wicej nazw plikw, tylko te pliki zostan wydobyte
z archiwum. W przeciwnym wypadku wydobywane s wszystkie pliki
Informuje program, e drugim parametrem jest nazwa pliku JAR. Jeeli ten parametr nie pojawi
si, program
wypisze wynik w standardowym wyjciu (tworzc plik JAR) lub wczyta dane
ze standardowego wejcia (wydobywajc pliki lub wywietlajc zawarto pliku JAR)
Dodaje do pliku JAR manifest. Manifest to opis zawartoci oraz pochodzenia archiwum. Kade
archiwum ma domylny manifest, ale moesz dostarczy wasny, jeeli chcesz powiadczy
autentyczno archiwum. Omwimy to zagadnienie w rozdziale powiconym bezpieczestwu,
w Java 2. Techniki zaawansowane
572
Java 2. Podstawy
Gdy ju masz plik JAR, musisz poinformowa o nim przegldark, uywajc znacznika ,
tak jak w poniszym przykadzie.
:,,.72);<7+1 P0 1
8)>=I7+1P/P0
1
=<2>+66>7=?>2+"6@
Manifest
Pliki JAR nie s wykorzystywane wycznie przez aplety. Moesz umieszcza w nich take
aplikacje komponenty programw (czasami nazywane JavaBeans przejd do rozdziau 8.
ksiki Java 2. Techniki zaawansowane) oraz biblioteki. Na przykad, biblioteka wykonawcza
SDK znajduje si w olbrzymim pliku rt.jar.
Plik JAR to po prostu plik ZIP zawierajcy klasy, inne pliki wymagane przez program (takie
jak ikony) oraz plik manifestu opisujcy waciwoci archiwum.
Plik manifestu nosi nazw MANIFEST.MF i znajduje si wewntrz pliku JAR, w specjalnym
podkatalogu META-INF. Minimalna dozwolona zawarto manifestu to po prostu napis:
CO EIF6
Zoone manifesty mog posiada o wiele wicej komrek. Komrki manifestu s pogrupowane
w sekcje. Pierwsz sekcj manifestu jest tzw. sekcja gwna. Odnosi si ona do caego pliku
JAR. Kolejne komrki mog opisywa waciwoci elementw, takich jak poszczeglne pliki,
pakiety lub adresy URL. Komrki w sekcji musz rozpoczyna si od komrki . Poszczeglne sekcje s rozdzielone pustymi liniami, np.:
CO EIF6
F)0
0
FOA0A
Aby edytowa manifest, umie linijki, ktre chcesz doda do manifestu, w pliku tekstowym.
Nastpnie uruchom co nastpuje:
O
Dla przykadu, aby utworzy nowy plik JAR zawierajcy manifest, uruchom:
OC
B
O OA
OA
0 A
Rozdzia 10.
Aplety
573
Aby do manifestu istniejcego pliku JAR doczy nowe elementy, umie je w pliku tekstowym i uyj polecenia:
OC
B
O E 0O
Aby dowiedzie si wicej o mechanizmie JAR oraz formacie manifestu, zajrzyj na stron
http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html.
Jeeli Twj aplet jest duy, istnieje szansa, e uytkownicy nie bd uywa wszystkich
jego elementw. Aby zredukowa czas adowania, moesz podzieli kod apletu na wiele
plikw JAR, a do gwnego pliku JAR doda indeks. Mechanizm adowania klas bdzie
dziki temu wiedzia, ktry z plikw JAR zawiera dany pakiet lub zasb. Aby wygenerowa
indeks, musisz w manifecie gwnego pliku JAR okreli atrybut
##* . Nastpnie
uruchom
EC
?
/
lub
:7CK7<
8)>=I7+11
))>7J;,2=;+11
))>7J8)>=I7+11
))>7JI78=;+11
@
574
Java 2. Podstawy
Sowo kluczowe
%?
moe przyjmowa trzy wartoci:
(
)(#)
8"
Plik JAR powinien znajdowa si na licie atrybutu 3
%= lub
%?3
%=, ale nie
na obydwu rwnoczenie.
Para
%?=3
/warto jest opcjonalna. Wartoci jest lista numerw wersji, odpowiadajcych plikom JAR na licie
%?3
%=, ktre reprezentuj wymagane wersje plikw
JAR. Jeeli na komputerze klienta znajduj si odpowiednie wersje, to znaczy, e nie trzeba
ich pobiera. Jeeli numery wersji nie zostay okrelone, w porwnaniu uywane s daty
plikw JAR. Numerw wersji musisz uywa, gdy przechowujesz pliki JAR otrzymane za
pomoc SSL, poniewa w takich sytuacjach data ostatniej modyfikacji jest niedostpna dla
Java Plug-In.
Aby dowiedzie si wicej o przechowywaniu apletw, zajrzyj na http://java.sun.com/products/
plugin/1.3/docs/appletcaching.html.
Nie dodawaj rozszerzenia ## do nazwy gwnej klasy. Nastpnie uruchom program ):
OC
,
0
O
E
C
,
Zasoby
Klasy, uywane zarwno w apletach, jak i w aplikacjach, czsto korzystaj z przyporzdkowanych sobie plikw danych, takich jak:
Rozdzia 10.
Aplety
575
Dla przykadu, spjrzmy na klas ""'() wywietlajc wiadomo, np. tak jak
na rysunku 10.15.
Rysunek 10.15.
Wywietlanie
zasobu pochodzcego
z pliku JAR
Oczywicie, tytu ksiki i rok uzyskania praw autorskich zmieni si wraz z nastpn edycj
ksiki. Aby mona byo atwo wyledzi t zmian, umiecimy tekst wewntrz pliku, zamiast
zapisa go w programie jako acuch.
Ale gdzie powiniene umieci plik informacja.txt? Oczywicie, najbardziej wygodnym rozwizaniem byoby umieszczenie go w tym samym miejscu, co inne pliki, czyli np. w pliku JAR.
Mechanizm adowania klas wie, jak odszuka pliki klas, o ile ich lokalizacja jest zapisana
w ciece dostpu, albo te znajduj si w archiwum lub na serwerze. Mechanizm zasobw daje
Ci t sam wygod w przypadku plikw, ktre nie s plikami klas. Oto, co musisz zrobi:
1. Pobierz obiekt typu
## klasy, ktra korzysta z danego zasobu, np.
""'()##.
2. Wywoaj 83#( )/"$, 0, aby otrzyma lokalizacj zasobu w formie
adresu URL.
3. Jeeli dany zasb jest obrazem lub plikiem dwikowym, wczytaj go bezporednio,
za pomoc metody 88 lub 8 -(
.
4. W przeciwnym wypadku wywoaj metod (") dla obiektu URL, aby zaadowa
576
Java 2. Podstawy
Sztuczka polega na tym, e mechanizm adowania klas pamita, gdzie znajduje si klasa, i moe
sprbowa odszuka zasb w tym samym katalogu.
Dla przykadu, aby zbudowa ikon zawierajc obraz z pliku informacja.gif, napisz nastpujce linijki:
N8.+,=O
8%1O
O1&
==0+
==%&
Oznacza to odszukaj plik informacja.gif w tym samym miejscu, w ktrym znalaze "*
"'()##.
Aby wczyta plik informacja.txt uywasz analogicznych instrukcji:
N8.+,=O
8%1O
1&
=
+ %&
Poniewa powysza kombinacja wywoa jest do popularna, napisano dla niej skrt metoda
83#( )#) zwraca " ), a nie URL.
=
+,=O
8 %1O
1&
Aby wczyta dane ze strumienia, musisz wiedzie, w jaki sposb obsugiwa proces wejcia
(w rozdziale 12. znajdziesz szczegy). W naszym przykadowym programie sczytujemy ze
strumienia po jednej linii naraz, uywajc poniszych instrukcji:
=
+,=O
8 %1O
1&
KOO 8 T/ +
KOO 8 %
= 8 %
&&
B%%+ T/ .%&&H+&
T20
/ %]1G1&
Na pycie CD znajdziesz plik JAR zawierajcy wszystkie pliki klas tego przykadu oraz pliki
zasobw informacja.gif i informacja.txt. Dziki temu moemy zademonstrowa, w jaki sposb
aplet lokalizuje plik zasobu w tym samym miejscu, co plik klasy, czyli wewntrz pliku JAR.
Jak przekonae si w poprzednim rozdziale, w pliku JAR moesz umieci obrazy oraz
pliki dwikowe i operowa na nich za pomoc metod 88 i 8 -(
metody
te automatycznie przeszukuj pliki JAR. Ale jeeli chcesz zaadowa z archiwum JAR inne
pliki, musisz skorzysta z metody 83#( )#).
Zamiast umieszcza plik zasobu w tym samym katalogu, co plik klasy, moesz umieci go
w podkatalogu. Moesz skorzysta z hierarchicznej nazwy zasobu, takiej jak
A 0 AO
Jest to relatywna nazwa pliku, interpretowana wzgldem pakietu klasy, ktra aduje zasb.
Zwr uwag, e zawsze musisz uywa separatora , niezalenie od tego, jakiego separatora
uywa do rozdzielania katalogw Twj system operacyjny. Na przykad w Windows mechanizm
adowania zasobw automatycznie zamieni separatory na 5.
Rozdzia 10.
Aplety
577
578
Java 2. Podstawy
'T20
/+
!2 %&
( %
!,%T20
/&4K ./ )7278&
-
6AA SXTT/0=O
N8.=O
+,=O
8%1O
O1&
!K T/0=O
+
!K %1=O
14
==%=O
&&
T/0=O
. %
,O
%&&
" %T/0=O
4K ./ ;N2>&
$9
'
( !2 T20
/
-
6 ,O
.
#
,O % 7 T T&
#
/
"#
$AA
T/
0 TT
T 0
/
'=
+,=O
( 8 %1O
1&
-KOO 8 T/ +
KOO 8 %
"6= 8 %
&&
"
"
B%%+ T/ .%&&H+&
"T20
/ %]1G1&
"9
"" B%=;7
/
0&
"$#
"'
/
0 02%&
"(9
"-9
$69
$9
73.83#( )/)"8."$0
" ).83#( )#)/)"8."$0.odszukuje
nazwa zasobu.
Pakiety opcjonalne
Jak widziae, pliki JAR przydaj si do archiwizowania zarwno apletw, jak i aplikacji.
Czsto s rwnie wykorzystywane do archiwizacji bibliotek kodu rdowego. Moesz
doczy do pliku JAR zbir klas i udostpni te klasy, dodajc ten plik do cieki dostpu.
Rozdzia 10.
Aplety
579
W przypadku czsto wykorzystywanych bibliotek kodu rdowego moesz omin ten drugi
krok, zamieniajc plik JAR w pakiet opcjonalny.
W pocztkowych wersjach J2SE pakiety opcjonalne byy nazywane rozszerzeniami.
Termin pakiet jest troch mylcy pakiet opcjonalny moe zawiera klasy pochodzce
z rnych pakietw jzyka programowania Java.
Sekcja gwna manifestu pakietu opcjonalnego opisuje zawarto archiwum. Oto przykad:
7 EF
O
TTT
O EI FC
L
O +IF6
= EI E= F
O
= EI FC
L
= EIF6
Nazwa rozszerzenia jest dowolna. Tak jak w przypadku pakietw jzyka Java, moesz zapewni unikalno rozszerzenia, uywajc odwrconej nazwy domeny.
Program wymagajcy rozszerze opisuje je w sekcji gwnej swojego manifestu:
7 E. F
TT
TE7 EF
O
TTT
TEO EIF6
TE= EIF6
TE= EI E= F
O
TE7 EFB
TEO EIF6
Piecztowanie
W rozdziale 4. wspomnielimy, e moesz zapiecztowa pakiet jzyka Java, aby upewni si,
e nie zostan do niego doczone adne nowe klasy. Piecztowanie zabezpiecza elementy
o widocznoci pakietu. Aby to osign, umieszczasz wszystkie klasy pakietu w pliku JAR.
580
Java 2. Podstawy
Jednak domylnie pakiety w plikach JAR nie s piecztowane. Moesz zmieni to domylne
zachowanie, umieszczajc linijk
F
w sekcji gwnej manifestu archiwum. Moesz rwnie okreli, czy poszczeglny pakiet ma
zosta zapiecztowany, dodajc do pliku JAR osobn sekcj, tak jak:
FA
OA
0 A
F
FABA A
FO
Aby zapiecztowa pakiet, utwrz plik tekstowy zawierajcy instrukcje manifestu. Nastpnie
uruchom program JAR:
OC
,0
TO
W ten sposb koczymy omawianie apletw. W nastpnym rozdziale dowiesz si, jak uywa
mechanizmu wyjtkw, aby informowa swoje programy, co maj robi, jeli w czasie wykonywania wystpi problemy. Damy Ci rwnie kilka wskazwek i omwimy techniki testowania
i debugowania programw pomagajce zmniejszy liczb sytuacji, w ktrych Twoje programy
nie bd dziaay prawidowo.