<meta name="author" content="Jakub & Jan Filipowscy">
<meta name="description" content="Serwis webmasterow. Znajdziesz tu kilka kursow popularnych internetowych jezykow programowania takich jak: HTML, CSS, WML, SGML, XML, PHP, Perl i Java. Zamiescilismy tu rowniez wiele skryptow JavaScript, PHP i CGI. Przeczytac mozna kilka artykulow i sciagnac kilka szablonow. Dla poczatkujacych jest dzial BeginnerZone. ">
<td width="460" valign="top"><span class="nag">Wprowadzenie do Javy</span>
<H2>WstΩp i spojrzenie od strony u┐ytkownika</H2>
<P ALIGN="justify">Aby prawid│owo zrozumieµ ten kurs, zalecane jest znanie podstaw programowania w kt≤rym╢ z jΩzyk≤w obiektowych.</P>
<P ALIGN="justify">Po wprowadzeniu jΩzyka Java (znanego r≤wnie┐ jako Java C) ╢wiat stron internetowych prze┐y│ istotn▒ zmianΩ jako╢ciow▒. Java zosta│a pocz▒tkowo zaprojektowana do programowania zintegrowancyh aplikacji dla komputer≤w pok│adowych (np. w samochodzie), ale szybko sta│a siΩ standardowym jΩzykiem u┐ywanym do aktywizacji stron WWW. DziΩki zastosowaniu Javy, statyczne strony HTML zosta│y przeobra┐one w interaktywne medium, z kt≤rymi u┐ytkownicy mog▒ pracowaµ w spos≤b dialogowy.</P>
<P ALIGN="justify">Java, opracowana przez Sun Microsystems i wprowadzona w po│owie lat 90., zmienia spos≤b funkcjonowania stron WWW. Java jest jΩzykiem obiektowym, podobnym do C i C++ (st▒d zwana r≤wnie┐ Jav▒ C). Zamiast u┐ywania przegl▒darek typu Web Browsers, kt≤re po wczytaniu skryptu przetwarzaj▒ dane do postaci graficznej i wyprowadzaj▒ na ekran, program Javy wykonuje siΩ sam. Przegl▒darka, odbieraj▒c skrypt strony, odbiera tak┐e kod programu w Javie, ale sama przegl▒darka nie dokonuje interpretacji tego kodu.</P>
<P ALIGN="justify">W jΩzyku Java mo┐emy pisaµ dwa rodzaje program≤w:</P>
<UL>
<LI>Applety - niewielkie programy przesy│ane │▒cznie ze skryptami HTML i wykonuj▒ce siΩ na komputerze u┐ytkownika
<LI>Aplikacje - pe│ne, niezale┐ne programy, kt≤re nie wymagaj▒ do swojego wykonania u┐ycia przegl▒darki ani otoczenia HTML
</UL>
<P ALIGN="justify">WiΩkszo╢µ program≤w w Javie pisze siΩ w formie applet≤w. Podstawowym zastosowaniem Javy jest umieszczenie kodu wykonywalnego w obrΩbie strony WWW w celu jej uaktywnienia i uatrakcyjnienia. Tutaj zajmiemy siΩ appletami, gdy┐ aplikacje nie s│u┐▒ celom internetowym, ale s▒ programami, kt≤re r≤wnie dobrze mo┐na napisaµ w C, Delphi itd.</P>
<P ALIGN="justify">Gdy u┐ytkownik wpisze adres URL przywo│uj▒cy stronΩ pokazan▒ schematycznie na rys.1, przegl▒darka u┐ytkownika wczytuje kod HTML, formatuje stronΩ zgodnie z etykietami formatuj▒cymi HTML, wy╢wietla sformatowany tekst, osadzon▒ grafikΩ, oraz │aduje do pamiΩci komputera u┐ytkownika wykonywaln▒ zawarto╢µ w postaci applet≤w, tak, ┐e zawarto╢µ ta mo┐e siΩ wykonaµ. Applet mo┐e wykonaµ siΩ natychmiast po wczytaniu, lub po wyst▒pieniu jakiego╢ przewidzianego zdarzenia.</P>
<CENTER><IMG SRC="artykuly/rys1.gif" BORDER=0 ALT="Strona HTML dostarcza wykonywalne kody Javy"><BR>rys.1</CENTER>
<P ALIGN="justify">Sekcja zawieraj▒ca kod appletu Javy w skrypcie HTML mie╢ci siΩ miΩdzy znacznikami <APPLET> </APPLET>. Applety Javy mog▒ byµ uruchomione tylko wtedy, gdy pozwala na to wersja przegl▒darki. Musimy dysponowaµ MS Internet Explorer 3.0, Netscape Navigator 2.0 lub nowszymi.</P>
<P ALIGN="justify">Ani metoda uruchamiania applet≤w, ani sam fakt ich dzia│ania nie zawsze musz▒ byµ dla u┐ytkownika oczywiste. Czasami mo┐e siΩ wydawaµ, ┐e strona jest "zajΩta", podczas gdy to applet wykonuje jak▒╢ animacjΩ. Og≤lnie, prΩdko╢µ animacji w wykonaniu applet≤w Javy powinna byµ znacznie wiΩksza, gdy┐ wykonuj▒ siΩ one bezpo╢rednio na komputerze u┐ytkownika i prΩdko╢µ ich dzia│ania nie jest zale┐na od wydajno╢ci │▒cza ani prΩdko╢ci transmisji.</P>
<H2>Programy niezale┐ne od platformy sprzΩtowo-programowej</H2>
<P ALIGN="justify">Zobaczmy teraz, jak wygl▒da strona HTML z osadzonymi appletami Javy od strony programisty. Gdy piszemy kod przeznaczony dla strony WWW w jΩzyku Java, chcieliby╢my, aby kod ten poprawnie zadzia│a│ na komputerze zdalnego u┐ytkownika, i to bez wzglΩdu na to, jaki to komputer i system operacyjny.</P>
<P ALIGN="justify">O ile wiΩkszo╢µ kompilator≤w, jak kompilatory C, tworz▒ na podstawie tekstu ╝r≤d│owego, zale┐ny od platformy sprzΩtowej i programowej, binarny kod wynikowy wykonywalny, o tyle Java dokonuje tylko czΩ╢ciowej translacji kodu. Wszelkie kompilatory Javy tworz▒ niezale┐ny sprzΩtowo kod wynikowy, w postaci specjalnego modu│u. To po╢rednie stadium jest nazywane ByteCode (kod wynikowy). Oprogramowanie po│▒czone z przegl▒dark▒ WWW, wykonuje na komputerze u┐ytkownika ko±cowe zinterpretowanie kodu, w wyniku czego powstaje wykonywalny applet.</P>
<P ALIGN="justify">»aden komputer nie potrafi bezpo╢rednio zinterpretowaµ i wykonaµ kodu ByteCode, przeznaczonego dla tzw. maszyny wirtualnej, ale odpowiednie przegl▒darki WWW potrafi▒ dokonaµ takiego "ko±cowego t│umaczenia". Innymi s│owy, zdalny serwer "posiada" kod Javy. ByteCode, przes│any na peceta z systemu operacyjnego, "dekoduje" ten kod przy pomocy dodatkowego oprogramowania, kt≤re zawiera np. Netscape Navigator, a stacja robocza z Unixem u┐ywa do tego samego celu przegl▒darki np. HotJava. Kod zostaje zamieniony na instrukcje w kodzie maszynowym, kt≤re dany komputer rozumie i potrafi wykonaµ (rys.2).</P>
<P ALIGN="justify">Kompilator Javy tworzy kod wynikowy (ByteCode) dla tzw. maszyny wirtualnej (czyli teoretycznego komputera, kt≤rego fizycznie nie ma). Jest to kod niezale┐ny sprzΩtowo. Kod ten zostaje przes│any do strony WWW, gdzie reprezentuje w formie zakodowanej reprezentacji appletu Javy. Gdy u┐ytkownik za┐▒da przes│ania strony WWW, przegl▒darka wczytuje kod ByteCode i automatycznie dokonuje jego interpretacji, zamieniaj▒c go na kody zrozumia│e dla komputera u┐ytkownika. Wszystko to odbywa siΩ automatycznie, bez udzia│u i poza ╢wiadomo╢ci▒ u┐ytkownika. Po wczytaniu strony, u┐ytkownik widzi j▒ na ekranie i ewentualnie ogl▒da tak┐e dzia│aj▒cy applet (je╢li ten uruchamia siΩ samoczynnie).</P>
<CENTER><IMG SRC="artykuly/rys2.gif" BORDER=0 ALT="Sesja z kompilatorem Javy ko±czy siΩ na napisaniu tekstu ╝r≤d│owego i jego kompilacji do postaci ByteCode'u, kt≤ry jest przesy│any i interpretowany na komputerze u┐ytkownika"><BR>rys.2</CENTER>
<P ALIGN="justify">Niekt≤re applety uruchamiaj▒ siΩ automatycznie, inne dopiero w reakcji na zdarzenie wywo│ane przez u┐ytkownika, np. klikniΩcie myszk▒. Dla programist≤w pisz▒cych applety Javy istotne jest, aby pamiΩtaµ, ┐e u┐ytkownik "nie widzi" appletu, wiΩc nie mo┐e ╢wiadomie kontrolowaµ jego uruchamiania ani dzia│ania bez woli i ╢wiadomych zabieg≤w ze strony webmastera. Po zako±czeniu sesji ze zdalnym serwerem danej strony, lub po zako±czeniu wykonywania appletu, jego kod zostaje usuniΩty z komputera u┐ytkownika.</P>
<P ALIGN="justify">Java zapewnia najkt≤tszy mo┐liwy czas reakcji strony WWW na dzia│ania u┐ytkownika. Choµ u┐ytkownik nadal musi czekaµ, a┐ strona wraz z ByteCode'm appletu zostanie wczytana do jego komputera, wykonanie appletu bΩdzie ju┐ nastΩpowaµ z maksymaln▒ prΩdko╢ci▒, j▒k▒ tylko w stanie jest zapewniµ komputer u┐ytkownika. U┐ytkownik nie musi ╢wiadomie kontrolowaµ i czekaµ na za│adowanie wykonywalnego kodu. Wszystkie inne formy dialogu z u┐ytkownikiem s▒ wolniejsze, poniewa┐ zale┐ne od czas≤w transmisjii i natΩ┐enia ruchu w sieci.</P>
<H2>Zagadnienia bezpiecze±stwa</H2>
<P ALIGN="justify">Zawsze, gdy piszemy internetowe aplikacje, powinni╢my przede wszystkim braµ pod uwagΩ zagadnienia bezpiecze±stwa. Je╢li webmaster nie zadba o w│a╢ciw▒ ochronΩ, applety bΩd▒ bardzo podatne na niebezpiecze±stwa. Gdy kto╢ odwiedza strony WWW, nie ma nigdy pewno╢ci, czy jaki╢ applet nie robi "po cihu" czego╢ brzydkiego z jego pamiΩci▒ albo dyskiem. Na szczΩ╢cie Sun zaprojektowa│ JavΩ wraz z zabezpieczeniami typowymi dla jΩzyk≤w przeznaczonych do programowania sieciowego. DziΩki temu, zabezpieczenia s▒ do jΩzyka wprowadzone "z definicji", przy czym s▒ to zabezpieczenia o charakterze obustronnym: i dla u┐ytkownika, i dla programisty. WymiΩniΩ tu tylko niekt≤re rodzaje zabezpiecze± wbudowane do Javy:</P>
<UL>
<LI>Applet Javy nie mo┐e ingerowaµ w obszary pamiΩci u┐ytkownika, kt≤re nie zosta│y mu udostΩpnione przez system operacyjny u┐ytkownika.
<LI>Applet Javy nie mo┐e tworzyµ, czytaµ, zmieniaµ nazwy, usuwaµ, kopiowaµ, zapisywaµ plik≤w w systemie dyskowym u┐ytkownika.
<LI>Applet Javy nie mo┐e │▒czyµ siΩ z innymi komputerami po│▒czonymi sieci▒ lokaln▒ z komputerem u┐ytkownika.
<LI>Applet Javy nie mo┐e wywo│ywaµ funkcji systemowych w systemie operacyjnym u┐ytkownika.
</UL>
<P ALIGN="justify">Mo┐na lokalnie uruchamiaµ applety za po╢rednictwem w│asnej przegl▒darki, poprzez za│adowanie z w│asnego lub sieciowego dysku. W takim przypadku applety maj▒ prawo ingerencji w lokalny system plik≤w dyskowych. Dodatkowo, niekt≤re przegl▒darki pozwalaj▒ na okre╢lenie przez u┐ytkownika listy plik≤w w systemie, do kt≤ych mo┐e mieµ dostΩp applet Javy.</P>
<P ALIGN="justify">Jak widaµ, projektanci Javy rozumieli konieczno╢µ uwzglΩdnienia najbardziej oczywistych zabezpiecze± przed niepowo│anym dostΩpem applet≤w do zasob≤w zdalnego u┐ytkownika. W miarΩ upowszechniania siΩ applet≤w pisanych w Javie, liczba stosowanych zabezpiecze± bΩdzie zapewne wzrastaµ.</P>
<H2>Rozbudowa i specyfikacja Javy</H2>
<P ALIGN="justify">Teraz, gdy ju┐ wiesz wiΩcej o Javie, mo┐esz odwiedziµ strony najwiΩkszych producent≤w oprogramowania, np. <A HREF="http://www.sun.com.pl">www.sun.com.pl</A>, <A HREF="http://www.inprise.com.pl">www.inprise.com.pl</A>, <A HREF="http://www.microsoft.com.pl">www.microsoft.com.pl</A>. Mo┐esz bezp│atnie tam ╢ci▒gn▒µ wiele program≤w narzΩdziowych (Java, J++, IntraBuilder) do tworzenia stron, applet≤w, oprogramowania sieciowego itp.</P>
<P ALIGN="justify">Je╢li dysponujesz przegl▒dark▒ MS Internet Explorer 3.0, Netscape Navigator 2.0 lub nowsz▒, to mo┐esz odwiedziµ stronΩ np. <A HREF="http://www.msnbc.com">NBC</A> (na serwerze ameryka±skim!). Strona ta najpierw sprawdza, czy ju┐ kiedy╢ j▒ odwiedza│e╢. Je╢li nie, to na Tw≤j komputer zostanie przes│any applet Javy, pozwalaj▒cy na rozszerzenie mo┐liwo╢ci prezentacji witryny. Po zako±czeniu kopiowania, zobaczysz kolorow▒ stronΩ, niczym z kolorowych pism kobiecych, a tam najwa┐niejsze nowo╢ci z ca│ego ╢wiata. Applet Javy zarz▒dza tym miΩdzynarodowym serwisem, a dok│adnie aktywnym polem "klawisza", po│yskuj▒cym poprzecznie na ekranie.</P>
<P ALIGN="justify">Java zawiera pewne wbudowane funkcje, u┐ywane do czΩsto obs│ugiwanych operacji, np. I/O (wej╢cia/wyj╢cia). Nie bΩdΩ siΩ teraz rozpisywa│ na dziesiΩµ rozdzia│≤w, aby wyt│umaczyµ, co to jest I/O, poniewa┐ zak│adam, ┐e czytelnik tego kursu zna podstawy programowania. W Javie pisze siΩ najczΩ╢ciej ma│e applety, kt≤re mog▒ byµ stosunkowo szybko za│adowane i uruchomione na komputerze u┐ytkownika. Java jest jΩzykiem zorientowanym obiektowo i pod wieloma wzglΩdami jest bardzo podobna do C i C++. Zasady tworzenia komentarzy, s│owa kluczowe, wiele funkcji bibliotecznych, Java ma takie same jak te dwa jΩzyki. Obiektowy charakter pozwala na samodzielne tworzenie i rozbudowΩ obiekt≤w oraz na wykorzystanie klas napisanych przez innych programist≤w, kt≤re nastΩpnie wykorzystywaµ mo┐na do szybkiego "sk│adania" aplikacji.</P>
<P ALIGN="justify">W por≤wnaniu z klasycznym C/C++, Java zawiera nieco modyfikacji i rozszerze±. Dla przyk│adu, Java obs│uguje standardowy typ danych, string. W przeciwie±stwie do C++, kt≤ry, obs│uguj▒c tablice, pos│uguje siΩ zawsze wska╝nikami, Java obs│uguje tablice za po╢rednictwem indeks≤w element≤w.</P>
<H2>Przyk│ad kodu Javy i jego analiza</H2>
<P ALIGN="justify">Poni┐szy listing przedstawia prosty przyk│ad kodu Javy, w kt≤ym │atwo rozpoznaµ elementy sk│adni zaczerpniΩte z C czy C++. Przyk│ad pozwala na kr≤tk▒ analizΩ typowej sk│adni jΩzyka Java.</P>
<P ALIGN="justify">Program powy┐szego listingu zawiera definicjΩ klasy "Klasa1", w oparciu o kt≤r▒ zostanie utworzony obiekt "Applet". Applet napisze w oknie o zadanych wymiarach czerwony tekst "Brzydal", zaczynaj▒c od punktu o wsp≤│rzΩdnych 75 pixeli od lewego brzegu i 100 px od g≤rnego. Jako granice s▒ tu potraktowane krawΩdzie okna, kt≤rych lewy g≤rny wierzcho│ek ma wsp≤│rzΩdne (0,0).</P>
<P ALIGN="justify">Zwr≤µmy uwagΩ na nastΩpuj▒ce punkty:</P>
<UL>
<LI>Wszystkie kody Javy rozr≤┐niaj▒ wielko╢µ liter. Skoro wiΩc nazwiemy zmienn▒, np. initSum, nie mo┐emy odwo│ywaµ siΩ do niej jako INITSUM, initsum, czy InitSum, gdy┐ kompilator uzna│by to za b│▒d.
<LI>Java pozwala na dowolne stosowanie spacji i pustych wierszy, aby kod ╝r≤d│owy by│ czytelniejszy.
<LI>Ka┐da instrukcja wykonywalna powinna byµ zako±czona ╢rednikiem (;). Jednak┐e po komentarzach i nawiasach klamrowych nie stosuje siΩ tego znaku (por≤wnaj to z CSS'em). Podobnie, pierwszy wiersz definicji klasy, b▒d╝ definicji funkcji, nie ko±czy siΩ ╢rednikiem, gdy┐ nie s▒ to instrukcje wykonywalne.
<LI>Wiersze ujΩte w nawiasy klamrowe Java traktuje jako blok insrukcji. Blok taki mo┐e wyst▒piµ w ka┐dym miejscu. Nawiasy klamrowe oznaczaj▒ tak┐e pocz▒tek i koniec cia│a funkcji.
</UL>
<P ALIGN="justify">Powy┐sze punkty ╢wiadcz▒ o podobie±stwie do jΩzyka C/C++. Stosowanie tych zasad u│atwi zar≤wno pisanie, jak i analizowanie kod≤w ╝r≤d│owych Javy. Zintegrowane ╢rodowiska uruchomieniowe umo┐liwiaj▒ rozbudowan▒ diagnostykΩ b│Ωd≤w, a niekt≤re (np. Visual J++) pozwalaj▒ na wykrywanie b│Ωd≤w formalnych (sk│adniowych) jeszcze w trakcie pisania kodu.</P>
<P ALIGN="justify">Komentarze musz▒ rozpoczynaµ siΩ znakami //. Je┐eli zostanie to pominiΩte, kompilator uzna to za tekst ╝r≤d│owy i potraktuje jako b│▒d. Komentarze nie s▒ wymagane, jednak pomagaj▒ webmasterowi w zorientowaniu siΩ w kodzie.</P>
<P ALIGN="justify">Instrukcja import dzia│a w spos≤b analogiczny do dyrektywy procesora #include, znanej z C. Instrukcja ta nakazuje, jeszcze przed rozpoczΩciem kompilacji, wstawienie w to miejsce definicji "fabrycznych" klas z plik≤w pomocniczych, dostarczanych │▒cznie z kompilatorem Javy. Bliblioteka klas Javy (class package) jest zbiorem logicznie uporz▒dkowanych standardowych klas. Dop≤ki importujemy definicje klas z biblioteki Javy, mo┐emy tak┐e korzystaµ z metod (funkcji) zdefiniowanych w obrΩbie tych klas. Instrukcja import wystΩpuje w dw≤ch formatach:</P>
<BLOCKQUOTE>
<P ALIGN="justify" STYLE="FONT-FAMILY: Courier New CE; FONT-SIZE: 9pt; FONT-WEIGHT: bold">
import Package.Class; // do│▒cz pakiet i klasΩ<BR>
import Package.*; // do│▒cz pakiet i wszystkie klasy z pakietu
</P>
</BLOCKQUOTE>
<P ALIGN="justify">Mo┐emy w ten spos≤b zaimportowaµ pojedyncz▒ klasΩ, lub ca│▒ bibliotekΩ klas z danego pakietu. Gwiazdka oznacza w│a╢nie wszystkie klasy, czyli ca│▒ bibliotekΩ. Pakiet klas java.applet.* do│▒czony w listingu, zawiera klasy niezbΩdne do zagnie┐d┐enia appletu w skrypcie HTML strony WWW. Dlatego ka┐dy applet bΩdzie siΩ rozpoczyna│ od importu tego pakietu. Pakiet klas java.awt.* zawiera wiele funkcji (metod) graficznych, kt≤re pozwalaj▒ na wysy│anie danych w formacie graficznym do okna przegl▒darki, w kt≤rym aktywna jest strona WWW z tym appletem. Zamiast wyprowadzaµ │a±cuchy znak≤w w trybie tekstowym, applet musi "rysowaµ" │a±cuch znak≤w w trybie graficznym. W listingu przyk│ad wykorzystuje do tego predefiniowan▒ metodΩ drawString(), zdefiniowan▒ w pakiecie klas java.awt.</P>
<P ALIGN="justify">Poni┐sze dwa wiersze rozpoczynaj▒ definicjΩ klasy:</P>
<P ALIGN="justify">Nawias klamrowy, jak ju┐ napisa│em, rozpoczyna definicjΩ klasy. S│owo extends (ang. - stanowi rozszerzenie), powoduje dziedziczenie w│asno╢ci i metod po klasie bazowej, predefiniowanej nazw▒ "Applet". Klasa bazowa (generic class) "Applet" jest zdefiniowana w pakiecie java.applet. Definicja nowej klasy rozpoczyna siΩ od s│≤w kluczowych class oraz public, przy czym to drugie okre╢la zasady dostΩpu. Po odziedziczeniu standardowych w│asno╢ci i metod od klasy bazowej, w klasie potomnej "Klasa1", rozbudowujemy funkcjonalne mo┐liwo╢ci klasy potomnej, dodaj▒c do niej definicjΩ publiczn▒ init() (zainicjuj obiekt) oraz, ewentualnie, inne metody. Bez takiej rozbudowy powsta│by applet, kt≤ry da siΩ skompilowaµ, ale nie potrafi zrobiµ nic.</P>
<P ALIGN="justify">WewnΩtrzne funkcje, zdefiniowane we wnΩtrzu klas, s▒ przeznaczone do obs│ugi obiekt≤w tych┐e klas i og≤lnie s▒ nazywane metodami. Metody obs│uguj▒ zazwyczaj komunikaty o zdarzeniach i wtedy s▒ uto┐samiane z handlerami zdarze±, jednak┐e metoda jest pojΩciem szerszym i, opr≤cz handler≤w, obejmuje tak┐e konstruktory i destruktory. Metoda nie musi byµ uruchamiana przez komunikat (od systemu operacyjnego, b▒d╝ od innego obiektu), lecz mo┐e byµ uruchamiana w wybranem przez programistΩ momencie i okoliczno╢ci, z wnΩtrza kodu aplikacji. W przeciwie±stwie do Object Pascala i Delphi, gdzie constructor i destructor s▒ s│owami kluczowymi, w Javie, zamiast stosowania takich s│≤w, funkcje wykonuj▒ce faktycznie pracΩ konstruktora (inicjowanie stanu pocz▒tkowego obiektu), s▒ nazywane init().</P>
<P ALIGN="justify">Podstawowa r≤┐nica miΩdzy zwyk│▒ funkcj▒ a metod▒ polega na tym, ┐e metody zawsze odnosz▒ siΩ do obiekt≤w konkretnych, okre╢lonych klas. Kolejne wiersze kodu przyk│adowego appletu, to definicja metody inicjuj▒cej applet:</P>
<P ALIGN="justify">Predefiniowana metoda resize() zmienia domy╢lne wymiary okna appletu na ekranie roboczym przegl▒darki. W istocie, definicja funkcji init(), stanowi nadpisanie (function overriding) dziedziczonej po klasie bazowej, typowej metody init(), kt≤ra ju┐ istnieje. Metoda ta nie robi nic innego, poza przygotowaniem obiektu "Applet" do uruchomienia. Ka┐dy programista musi nadpisaµ metodΩ init(), a prawie ka┐dy applet Javy zawiera wywo│anie metody resize() w obrΩbie cia│a predefiniowanej funkcji init().</P>
<P ALIGN="justify">Wszystkie inne instrukcje, kt≤re zostan▒ umieszczone w obrΩbie cia│a metody init(), zostan▒ wykonane zawsze natychmiast po pocz▒tkowym za│adowaniu appletu (initial loading). Metoda resize() pobiera dwa argumenty - wsp≤│rzΩdne x i y. S▒ one czytane przez kompilator jaki wielko╢ci w pixelach (px). W listingu, applet bΩdzie mia│ udostΩpnione okno w obrΩbie strony WWW o wymiarach 320px x 240px (szeroko╢µ x wysoko╢µ).</P>
<P ALIGN="justify">Metoda paint() powinna wyst▒piµ w ka┐dym tworzonym applecie i powinna nastΩpowaµ po metodzie init(). Obiekt "Applet" wywo│uje metodΩ paint() zawsze, gdy jego okno wymaga ponownego narysowania (redraw). Gdy u┐ytkownik nadpisze (czyli przes│oni) okno innym oknem, okno appletu bΩdzie wymagaµ odtworzenia i ta metoda jest za takie odtworzenie odpowiedzialna. DziΩki tej metodzie mamy pewno╢µ, ┐e okno appletu zawsze zostanie poprawnie odtworzone. Definicja w przyk│adowym listingu jest nastΩpuj▒ca:</P>
public void paint(Graphics g) // definicja metody rysuj▒cej<BR>
{<BR>
g.setColor(Color.red);
// zmie± kolor txt na czerwony<BR>
g.drawString("Brzydal",75,100);
// drukuj czerwony txt<BR>
}</TD>
</TR>
</TABLE>
<P ALIGN="justify">Obiekt graficzny "Graphics g" jest dosyµ dziwnym argumentem. Jest to obiekt predefiniowanej klasy Graphics, kt≤ry reprezentuje okno appletu. A "g" jest nazw▒ obiektu. Wywo│anie jego predefiniowanych metod nastΩpuje z u┐yciem operatora "." (kropki):</P>
<BLOCKQUOTE>
<P ALIGN="justify" STYLE="FONT-FAMILY: Courier New CE; FONT-SIZE: 9pt; FONT-WEIGHT: bold">
g.setColor(Color.red);
</P>
</BLOCKQUOTE>
<P ALIGN="justify">Metoda setColor() (ang. - ustal kolor) definiuje kolor ca│ego tekstu, jaki bΩdzie wyprowadzany na ekran poni┐ej tego wywo│ania, chyba, ┐e pojawi siΩ nastΩpna metoda setColor(), zmieniaj▒ca poprzednie ustawienia. Chocia┐ t│o okna pozostaje domy╢lnie szare, tekst bΩdzie wy╢wietlany na czerwono. NastΩpny wiersz okre╢la sam tekst do wprowadzenia:</P>
<BLOCKQUOTE>
<P ALIGN="justify" STYLE="FONT-FAMILY: Courier New CE; FONT-SIZE: 9pt; FONT-WEIGHT: bold">
g.drawString("Brzydal",75,100);
</P>
</BLOCKQUOTE>
<P ALIGN="justify">oraz wsp≤│rzΩdne wzglΩdne x,y w pixelach (odniesione do krawΩdzi okna) pocz▒tkowego punktu tekstu. Zwr≤µmy uwagΩ na podczepienie obu metod pod obiekt "g". Je┐eli w obrΩbie appletu utworzymy wiΩcej ni┐ jedno okno, wywo│anie tych samych metod w stosunku do r≤znych obiekt≤w, pozwoli nam wyprowadzaµ teksty odrΩbnie do ka┐dego spo╢r≤d tych okien.</P>
<H2>Podsumowanie</H2>
<P ALIGN="justify">Celem tego kursu by│o wprowadzenie do programowania w jΩzyku Java. Java pozwala dynamizowaµ uprzednio statyczne strony WWW, poprzez przesy│anie do komputera zdalnego u┐ytkownika ma│ych program≤w, nazywanych appletami, │▒cznie ze skryptami HTML. W przeciwie±stwie do innych jΩzyk≤w programowania, jak FORTAN czy C, programy pisane w Javie, s▒ zazwyczaj czΩ╢ci▒ czego╢ wiΩkszego, g│≤wnie stron WWW. Applet Javy jest przesy│any na komputer u┐ytkownika i tam wykonuje siΩ z maksymaln▒ mo┐liw▒ prΩdko╢ci▒, omijaj▒c w ten spos≤b "w▒skie gard│o", kt≤re stanowi po│▒czenie ze zdalnym serwerem.</P>
<P ALIGN="justify">Mimo, ┐e nie opisa│em Javy w szczeg≤│ach, z pewno╢ci▒ poradzisz sobie ju┐ teraz z napisaniem w│asnego, nieskomplikowanego appletu, i wiesz, jakie narzΩdzia mog▒ Ci pom≤c. W istocie, tworzenie applet≤w polega na dziedziczeniu od typowych klas bazowych i rozbudowie definicji w│asnych klas potomnych. Obszerne pakiety klas bazowych s▒ dostarczane z wszystkimi kompilatorami Javy.</P>
<P ALIGN="justify">Aby rozszerzyµ swoj▒ wiedzΩ o Javie, polecam przeczytanie <A HREF="http://www.web-area.org?id=62">kursu Javy</A> autorstwa Miros│aw Kani, r≤wnie┐ znajduj▒cego siΩ na tej witrynie.</P>
<td width="770" valign="top" colspan="3" align="right"><br><br><span class="m">All rights reserved by <a href="mailto:web-area@web-area.org">J&J Filipowscy Design & Code</a></td>