Documente Academic
Documente Profesional
Documente Cultură
Introducere
l
l l l
program Java de dimensiuni reduse ce gestioneaz o suprafa# de afi$are (container) care poate fi inclus ntr-o pagin Web. miniaplicatie. poate fi format din una sau mai multe clase o clas principal ce extinde clasa Applet (JApplet) - clasa ce trebuie specificat n documentul HTML ce descrie pagina Web n care dorim s includem appletul. un applet nu poate fi executat independent, va fi executat de browserul n care este nc rcat pagina Web ce con#ine appletul respectiv. ciclul de viat al unui applet: dictat de evenimentele generate de c tre browser la vizualizarea documentului HTML ce con#ine appletul.
care ofer suport pentru crearea de appleturi este java.applet. In pachetul javax.swing exist $i clasa JApplet, care extinde Applet, oferind suport pentru crearea de appleturi pe arhitectura de componente JFC/Swing.
Interac#iunea dintre utilizator $i componentele afi$ate pe suprafa#a appletului Executarea unui anumit cod ntr-un fir de execu#ie. In unele situa#ii ntreaga execu#ie a appletului se consum la etapele de ini#ializare $i pornire.
n cazul n care utilizatorul p r se$te pagina Web n care ruleaz appletul dac fereastra browserului este minimizat . n momentul n care pagina Web ce con#ine appletul devine din nou activ , va fi reapelat metoda start.
Oprirea definitiv - La nchiderea tuturor instan#elor browserului folosit pentru vizualizare, appletul va fi eliminat din memorie $i va fi apelat metoda destroy a acestuia, pentru a-i permite s elibereze resursele de#inute. - Apelul metodei destroy este ntotdeauna precedat de apelul lui stop.
metode sunt apelate automat la diverse evenimente generate de c tre browser $i nu trebuie apelate explicit din program lsunt definite n clasa Applet
Metoda init
Situa#ia n care este apelat La ini#ializarea appletului. Teoretic, aceast metod ar trebui s se apeleze o singur dat , la prima afi$are a appletului n pagin , ns , la unele browsere, este posibil ca ea s se apeleze de mai multe ori. Imediat dup ini#ializare $i de fiecare dat cnd appletul redevine activ, dup o oprire temporar . De fiecare dat cnd appletul nu mai este vizibil (pagina Web nu mai este vizibil , fereastra browserului este minimizat , etc) $i nainte de destroy. La nchiderea ultimei instan#e a browserului care a nc rcat n memorie clasa principal a appletului.
start
stop
destroy
Clasa Applet este o extensie a superclasei Container, ceea ce nseamn c appleturile sunt, nainte de toate, suprafe#e de afi$are. Plasarea componentelor, gestionarea pozi#ion rii lor $i tratarea evenimentelor generate se realizeaz la fel ca $i n cazul aplica#iilor. Uzual, ad ugarea componentelor pe suprafa#a appletului precum $i stabilirea obiectelor responsabile cu tratarea evenimentelor generate sunt opera#iuni ce vor fi realizate n metoda init. Gestionarul de pozi#ionare implicit este FlowLayout, ns acesta poate fi schimbat prin metoda setLayout.
getParameter: prime$te ca argument numele unui parametru $i returneaz valoarea acestuia. In cazul n care nu exist nici un parametru cu numele specificat, metoda ntoarce null, caz n care programul trebuie s atribuie o valoare implicit variabilei n care se dorea citirea respectivului parametru. Orice applet poate pune la dispozi#ie o documenta#ie referitoare la parametrii pe care i suport Aceasta se realizeaz prin supradefinirea metodei getParameterInfo, care returneaz un vector format din triplete de $iruri (numele parametrului, tipul s u $i o descriere a sa). Informa#iile furnizate de un applet pot fi citite din browserul folosit pentru vizualizare prin metode specifice acestuia. De exemplu, n appletviewer informa#iile despre parametri pot fi vizualizate la rubrica Info din meniul Applet, n Netscape se folose$te op#iunea Page info din meniul View, etc.
Folosirea parametrilor
un applet care s afi$eaz un text primit ca parametru, folosind un font cu numele $i dimensiunea specificate de asemenea ca parametri. import javax . swing.* ; import java . awt .*; public class TestParametri extends JApplet { String text , numeFont ; int dimFont ; public void init () { text = getParameter ("textAfisat"); if ( text == null ) text = " Hello "; // valoare implicita numeFont = getParameter ("numeFont"); if ( numeFont == null ) numeFont = " Arial "; try { dimFont = Integer . parseInt ( getParameter ("dimFont")); } catch ( NumberFormatException e) { dimFont = 16; } }
l
Folosirea parametrilor
public void paint ( Graphics g) { g. setFont (new Font ( numeFont , Font .BOLD , dimFont )); g. drawString (text , 20, 20); } public String [][] getParameterInfo () { String [][] info = { // Nume Tip Descriere {" textAfisat ", " String ", " Sirul ce va fi afisat "}, {" numeFont ", " String ", " Numele fontului "}, {" dimFont ", "int ", " Dimensiunea fontului "} }; return info ; } }
Tag-ul APPLET
l
Sintaxa complet a tagului APPLET, cu ajutorul c ruia pot fi incluse appleturi n cadrul paginilor Web este: <APPLET CODE = clasaApplet WIDTH = latimeInPixeli HEIGHT = inaltimeInPixeli [ARCHIVE = arhiva.jar] [CODEBASE = URLApplet] [ALT = textAlternativ] [NAME = numeInstantaApplet] [ALIGN = aliniere] [VSPACE = spatiuVertical] [HSPACE = spatiuOrizontal] > [< PARAM NAME = parametru1 VALUE = valoare1 >] [< PARAM NAME = parametru2 VALUE = valoare2 >] ... [text HTML alternativ] </APPLET> Atributele puse ntre paranteze p trate sunt op#ionale.
Tag-ul APPLET
CODE = clasaApplet Numele fi$ierului ce con#ine clasa principal a appletului. Acesta va fi c utat n directorul specificat de CODEBASE. Extensia .class poate sau nu s apar . WIDTH =latimeInPixeli, HEIGHT =inaltimeInPixeli Specific l #imea $i n l#imea suprafe#ei n care va fi afi$at appletul. Sunt obligatorii. ARCHIVE = arhiva.jar Specific arhiva n care se g sesc clasele appletului. CODEBASE = directorApplet Specific URL-ul la care se g se$te clasa appletului. Uzual se exprim relativ la directorul documentului HTML. In cazul n care lipse$te, se consider implicit URL-ul documentului. ALT = textAlternativ Specific textul ce trebuie afi$at dac browserul n#elege tagul APPLET dar nu poate rula appleturi Java.
Tag-ul APPLET
NAME =numeInstantaApplet Ofer posibilitatea de a da un nume respectivei instan#e a appletului, astfel nct mai multe appleturi aflate pe aceea$i pagin s poat comunica ntre ele folosindu-se de numele lor. ALIGN =aliniere Semnific modalitatea de aliniere a appletului n pagina Web. Acest atribut poate primi una din urm toarele valori: left, right, top, texttop, middle, absmiddle, baseline, bottom, absbottom VSPACE =spatiuVertical, HSPACE = spatiuOrizontal Specific numarul de pixeli dintre applet $i marginile suprafetei de afi$are. PARAM Tag-urile PARAM sunt folosite pentru specificarea parametrilor unui applet text HTML alternativ Este textul ce va fi afi$at n cazul n care browserul nu ntelege tagul APPLET. Browserele Java-enabled vor ignora acest text.
Afi$area imaginilor
import javax . swing . *; import java . awt .*; public class Imagini extends JApplet { Image img = null ; public void init () { img = getImage ( getCodeBase () , "taz.gif"); } public void paint ( Graphics g) { g. drawImage (img , 0, 0, this ); } }
Aflarea contextului de execu#ie: pagina n care acesta ruleaz , eventual mpreun cu alte appleturi este descris de interfa#a AppletContext. Crearea unui obiect ce implementeaz aceast interfa# se realizeaz de c tre browser, la apelul metodei getAppletContext a clasei Applet. Prin intermediul acestei interfe#e un applet poate vedea n jurul sau, putnd comunica cu alte appleturi aflate pe aceeasi pagin sau cere browser-ului s deschid diverse documente AppletContext contex = getAppletContext(); Afi$area unor documente n browser showDocument: prime$te adresa URL a fi$ierului ce con#ine documentul pe care dorim sa-l deschidem (text, html, imagine, etc). Aceast metod este accesat prin intermediul contextului de execu#ie al appletului.
try { URL doc = new URL("http://www.infoiasi.ro"); getAppletContext().showDocument(doc); } catch(MalformedURLException e) { System.err.println("URL invalid! \n" + e);}
Arhivarea appleturilor
pentru ca un applet aflat pe o pagin Web s poat fi executat codul s u va fi transferat de pe serverul care g zduie$te pagina Web solicitat pe ma$ina clientului. l dimensiunea fi$ierelor care formeaz appletul trebuie s fie ct mai redus l dac appletul con#ine $i alte clase n afar de cea principal sau diverse resurse (imagini, sunete, etc), acestea vor fi transferate prin re#ea abia n momentul n care va fi nevoie de ele, oprind astfel temporar activitatea appletului pn la nc rcarea lor. l cea mai eficient modalitate de a distribui un applet este s arhiv m toate fi$ierele necesare acestuia. l Arhivarea fi$ierelor unui applet se face cu utilitarul jar, oferit n distribu#ia J2SDK. // Exemplu jar cvf arhiva.jar ClasaPrincipala.class AltaClasa.class imagine.jpg sunet.au // sau jar cvf arhiva.jar *.class *.jpg *.au l Includerea unui applet arhivat ntr-o pagin Web se realizeaz specificnd pe lng numele clasei principale $i numele arhivei care o con#ine: <applet archive=arhiva.jar code=ClasaPrincipala width=400 height=200 />
l
Restric ii de securitate
un applet se execut pe ma$ina utilizatorului care a solicitat pagina Web ce con#ine appletul respectiv l este foarte important s existe anumite restric#ii de securitate care s controleze activitatea acestuia, pentru a preveni ac#iuni r u inten#ionate, cum ar fi $tergeri de fi$iere, etc., care s aduc prejudicii utilizatorului. l procesul care ruleaz appleturi instaleaz un manager de securitate, un obiect de tip SecurityManager care va superviza activitatea metodelor appletului, aruncnd excep#ii de tip SecurityException n cazul n care una din acestea ncearc s efectueze o opera#ie nepermis . Un applet nu poate s : Citeasc sau s scrie fi$iere de pe calculatorul pe care a fost ncarcat (client). Deschid conexiuni cu alte ma$ini n afar de cea de pe care provine (host). Porneasc programe pe ma$ina client. Citeasc diverse propriet #i ale sistemului de operare al clientului. Ferestrele folosite de un applet, altele dect cea a browserului, vor ar ta altfel dect ntr-o aplica#ie obi$nuit , indicnd faptul c au fost create de un applet.
l
Deoarece clasa Applet este derivat din Container, deci $i din Component, ea descrie o suprafa# de afi$are care poate fi inclus ca orice alt component ntr-un alt container, cum ar fi o fereastr . l Un applet poate func#iona $i ca o aplica#ie independent astfel: Ad ug m metoda main clasei care descrie appletul, n care vom face opera#iunile urm toare. Cre m o instan# a appletului $i o ad ug m pe suprafa#a unei ferestre. Apel m metodele init $i start, care ar fi fost apelate automat de c tre browser. Facem fereastra vizibil .
Applet $i aplica ie
import java . applet . Applet ; import java . awt .*; public class AppletAplicatie extends Applet { public void init () { add (new Label (" Applet si aplicatie ")); } public static void main ( String args []) { AppletAplicatie applet = new AppletAplicatie (); Frame f = new Frame (" Applet si aplicatie "); f. setSize (200 , 200) ; f.add(applet , BorderLayout . CENTER ); applet . init (); applet . start (); f. show (); } }