Applet-uri

Miniaplicația (engleză: applet) este un mic program cu interfață utilizator grafică, care nu poate rula în mod independent, ci este înglobat într-o altă aplicație, numită context de applet. Pentru executarea unui applet trebuie să existe deci două entități: applet-ul propriu-zis și contextul în care acesta se execută (engleză: applet context).  În mod normal, contextul de executare a unui applet este un navigator de Web (engleză: web browser), cum sunt Netscape Navigator, Internet Explorer sau HotJava. Pentru testare, appletul poate fi executat, de asemenea, folosind drept context un program de vizualizare special, existent in SDK, numit appletviewer.

Orice applet este realizat ca o clasă, derivată din clasa  Applet, existentă în pachetul java.applet, sau derivată din clasa JApplet, care extinde clasa Applet și există în pachetul javax.swing.

Întrucât utilizarea clasei JApplet este mai complicată, ne vom rezuma aici la descrierea și exemplificarea utilizării clasei Applet.
 

Clasa Applet

Clasa Applet se găsește în pachetul java.applet  și este o subclasă a clasei  Panel din pachetul  java.awt. În consecință, applet-ul este, de fapt, un caz special de container.

Clasa Applet este superclasa tuturor miniaplicațiilor care sunt încorporate în pagini Web sau pot fi vizualizate cu un Java Applet Viewer.

Clasa Applet moștenește metodele superclaselor sale Component, Container și Panel, oferind și metode specifice. Dintre acestea, cele mai importante sunt : init(), start(), stop() și destroy(). Aceste metode sunt apelate de către browser în momentele importante ale ciclului de viață al unui applet, respectiv în momentul încărcării acestuia în memorie, în momentul începerii sau întreruperii execuției și înainte ca appletul să fie distrus. Așa cum sunt ele oferite de clasa Applet, aceste metode nu fac nimic. Ele pot fi însă redefinite de programatori în subclasele clasei Applet, astfel încât să execute anumite acțiuni specifice momentelor în care sunt invocate. Metoda init() este utilizată pentru a crea partea "statică" a applet-ului: adăugarea de componente la applet, înregistrarea ascultătorilor de evenimente etc. Ea este redefinită în marea majoritate a applet-urilor. Metodele start() și stop() se folosesc numai pentru lansarea și oprirea proceselor dinamice (de exemplu animație și/sau sunete) care nu trebuie să continuie când appletul nu este vizibil pe ecran. În fine, metoda destroy() se folosește în special pentru a distruge firele de execuție paralele care au fost create de către applet, sau a elibera anumite resurse ocupate de acesta.
 
Principalele metode ale clasei Applet: 

Vom prezenta aici metodele mai frecvent utilizate. Pentru celelalte recomandăm consultarea documentației originale. 

    public void init() - metoda este invocată de către browser sau appletviewer atunci când appletul este încărcat în memorie, deci înainte de prima invocare a metodei start()
    public void start() - metoda este invocată de către browser atunci când appletul trebuie să își înceapă execuția, adică atunci când este vizitată sau revizitată pagina Web în care acesta este inclus; 
    public void stop() - metoda este invocată de către browser atunci când pagina de Web, în care se găsește appletul, este înlocuită de alta, fără a fi însă eliminată din memorie. Întrucât appletul nu mai este vizibil pe ecran, acesta poate sa își înceteze temporar execuția; metoda este invocată, de asemenea, înaintea invocării  metodei destroy()
    public void destroy() - metoda este invocată de către browser înainte de distrugerea appletului; 
    public boolean isActive() - determină dacă appletul este activ; 
    public String getAppletInfo() - dacă este redefinită în subclase, metoda poate intoarce informații despre applet: autorul, versiunea, drepturi de autor etc. În clasa Applet metoda întoarce null; 
    public AppletContext getAppletContext() - întoarce o referință către contextul appletului; 
    public URL getCodeBase() - întoarce URL-ul (locația pe Internet) la care se găsește bytecode-ul appletului; 
    public URL getDocumentBase() - întoarce URL-ul la care se găsește documentul care conține appletul; 
    public String getParameter(String name) - întoarce valoarea parametrului cu numele dat ca argument, conținut în tagul APPLET al documentului HTML. 
 

Dăm în continuare trei exemple de applet-uri, împreună cu fișierele HTML în care se afișeaza acestea. Pentru compatibilitate, s-au utilizat numai componente din pachetele java.applet și java.awt.
 
Exemplul 1: 

În introducere a fost deja dat un exemplu de applet simplu, în care nu se redefinește nici o metodă a clasei Applet, folosindu-se numai o invocare de metodă prin care se scrie un text pe suprafața appletului. Programul acestui applet se găsește în fișierul PrimApplet.java, iar fișierul HTML în care este folosit acest applet este PrimApplet.html

Exemplul 2:

În fișierul CBGroupAp.java este dat un applet de testare a unui grup de casete de validare (butoane radio) din fișierul TestCheckboxGroup.java. Remarcăm următoarele deosebiri față de o aplicație similară: 
    - nu mai există o fereastră principală sub formă de cadru (Frame sau JFrame) ca în cazul aplicației, acest rol fiind îndeplinit chiar de către applet; 
    - în consecință, nu mai este necesară o clasă care sa intercepteze evenimentele generate de  fereastra principală; 
    - adăugarea componentelor la applet, setarea culorilor și înregistrarea interceptorului de evenimente, care în cazul aplicației se fac în metoda main() sau în constructorul interfeței utilizator grafice, acum se fac în metoda init()
    - având în vedere că, pentru clasa Applet, gestionarul de poziționare implicit este FlowLayout, pentru a utiliza gestionarul BorderLayout acesta a trebuit adăugat în mod explicit. 
    Pentru vizualizarea appletului se foloseste fișierul CBGroupAp.html

Exemplul 3:

În fișierul TestFlowAp.java se prezintă un applet de testare a gestionarului de poziționare FlowLayout. Vizualizarea din browser a acestui applet se face folosind fișierul TestFlow.html. Pe suprafața appletului apar două butoane de comandă ("Pune" și "Elimina") pentru adaugarea sau eliminarea de etichete și trei butoane radio, prin care se selectează modul de aliniere a etichetelor pe suprafața containerului ("Stânga", "Centru", "Dreapta"). Acționand aceste butoane se poate testa modul de aranjare al etichetelor pentru diferite tipuri de aliniere.

Oricare din aceste applet-uri poate fi vizionat și într-un appletviewer, dacă (din fereastra X-window sau MS-DOS) se dă comanda:
    appletviewer fisierHTML
De exemplu, pentru a vizualiza applet-ul TestFlowAp, se dă comanda
    appletviewer TestFlow.html
unde TestFlow.html este fișierul HTML în care este invocat acest applet.



© Copyright 2000 - Severin BUMBARU, Universitatea "Dunărea de Jos" din Galați