Sunteți pe pagina 1din 26

Appleturi

Programare Orientat pe Obiecte


Introducere
program Java de dimensiuni reduse ce
gestioneaz o suprafa de afiare (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 ncrcat
pagina Web ce conine appletul respectiv.
ciclul de viat al unui applet: dictat de
evenimentele generate de ctre browser la
vizualizarea documentului HTML ce conine
appletul.
Ierarhia claselor din care deriv
appleturile
Pachetul 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.
Crearea unui applet simplu
1. Scrierea codului sursa
import java.awt.* ;
import javax.swing.* ;
public class FirstApplet extends JApplet {
Image img;
public void init() {
img = getImage(getCodeBase(), image.jpg");
}
public void paint (Graphics g) {
g.drawImage(img, 100, 0, this);
g.drawOval(0,0,120,50);
g.drawString(Ce ziceti de asta?", 0, 25);
}
}
Pentru a putea fi executat de browser, clasa
principal a appletului trebuie s fie public.
Crearea unui applet simplu (2)
2. Salvarea fiierelor surs
- clasa principal a appletului va fi salvat
ntr-un fiier cu acelai nume i extensia
java
- FirstApplet.java.
3. Compilarea
- javac FirstApplet.java
- rezulta FirstApplet.class
4. Rularea appletului
Applet-urile nu ruleaza independent. Ele pot
fi rulate doar prin intermediul unui browser:
Internet Explorer, Netscape, Mozilla, Opera,
etc. sau printr-un program special cum ar fi
appletviewer din kitul de dezvoltare J2SDK.
Crearea unui applet simplu (3)
Pentru a executa un applet trebuie s facem dou
operaii:
Crearea unui fiier HTML n care vom include applet-
ul.
fiierul simplu.html:
<html>
<head>
<title>Primul applet Java</title>
</head>
<body>
<applet code=FirstApplet.class width=400
height=400>
</applet>
</body>
</html>
Vizualizarea appletului: se deschide fisierul
simplu.html folosind unul din browser-ele amintite
sau efectund apelul: appletviewer simplu.html.
Ciclul de via al unui applet
Fiecare etap este strns legat de un eveniment
generat de ctre browser i determin apelarea
unei metode specifice din clasa ce implementeaz
appletul.
Incrcarea n memorie
Este creat o instana a clasei principale a
appletului i ncrcat n memorie.
Iniializarea
Este apelat metoda init ce permite iniializarea
diverselor variabile,citirea unor parametri de intrare,
etc.
Pornirea
Este apelat metoda start
Execuia propriu-zis
Interaciunea dintre utilizator i componentele afiate pe
suprafaa appletului
Executarea unui anumit cod ntr-un fir de execuie.
In unele situaii ntreaga execuie a appletului se consum
la etapele de iniializare i pornire.
Ciclul de via al unui applet
Oprirea temporar
- este apelat metoda stop ce oprete temporar
execuia pe perioada n care nu este vizibil, pentru
a nu consuma inutil din timpul procesorului.
n cazul n care utilizatorul prsete pagina Web n care
ruleaz appletul
dac fereastra browserului este minimizat. n momentul n
care pagina Web ce conine appletul devine din nou activ,
va fi reapelat metoda start.
Oprirea definitiv
- La nchiderea tuturor instanelor 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 deinute.
- Apelul metodei destroy este ntotdeauna precedat
de apelul lui stop.
Metodele specifice appleturilor
Aceste metode sunt apelate automat la diverse evenimente
generate de ctre browser i nu trebuie apelate explicit din
program
sunt definite n clasa Applet
Metoda Situaia n care este apelat
init La iniializarea appletului. Teoretic, aceast metod
ar trebui s se apeleze o singur dat, la prima
afiare a appletului n pagin, ns, la unele
browsere, este posibil ca ea s se apeleze de mai
multe ori.
start Imediat dup iniializare i de fiecare dat
cnd appletul redevine activ, dup o oprire
temporar.
stop De fiecare dat cnd appletul nu mai este vizibil
(pagina Web nu mai este vizibil, fereastra
browserului este minimizat, etc) i nainte de
destroy.
destroy La nchiderea ultimei instane a browserului
care a ncrcat n memorie clasa principal a
appletului.
Structura general a unui applet
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class StructuraApplet extends JApplet {
public void init() {
}
public void start() {
}
public void stop() {
}
public void destroy() {
}
}
Interfaa grafic cu utilizatorul
Clasa Applet este o extensie a superclasei
Container, ceea ce nseamn c appleturile
sunt, nainte de toate, suprafee de afiare.
Plasarea componentelor, gestionarea
poziionrii lor i tratarea evenimentelor
generate se realizeaz la fel ca i n cazul
aplicaiilor.
Uzual, adugarea componentelor pe
suprafaa appletului precum i stabilirea
obiectelor responsabile cu tratarea
evenimentelor generate sunt operaiuni ce
vor fi realizate n metoda init.
Gestionarul de poziionare implicit este
FlowLayout, ns acesta poate fi schimbat
prin metoda setLayout.
Definirea i folosirea parametrilor
Parametrii sunt pentru appleturi ceea ce argumentele de
la linia de comand sunt pentru aplicaiile independente.
Permit utilizatorului s personalizeze aspectul sau
comportarea unui applet fr a-i schimba codul i
recompila clasele.
Definirea: n cadrul tagului APPLET din documentul
HTML ce conine appletul prin atributul PARAM.
Fiecare parametru are un nume, specificat prin NAME i
o valoare, specificat prin VALUE:
<APPLET CODE="TestParametri.class" WIDTH=100
HEIGHT=50>
<PARAM NAME=textAfisat VALUE="Salut">
<PARAM NAME=numeFont VALUE="Times New Roman">
<PARAM NAME=dimFont VALUE=20>
</APPLET>
tipul parametrilor este ntotdeauna ir de caractere,
indiferent dac valoarea este ntre ghilimele sau nu.
Fiecare applet are i un set de parametri prestabilii ale
cror nume nu vor putea fi folosite pentru definirea de
noi parametri
Definirea i folosirea parametrilor
getParameter: primete 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 dispoziie o
documentaie 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 su
i o descriere a sa).
Informaiile furnizate de un applet pot fi citite din
browserul folosit pentru vizualizare prin metode
specifice acestuia.
De exemplu, n appletviewer informaiile despre
parametri pot fi vizualizate la rubrica Info din meniul
Applet, n Netscape se folosete opiunea Page info
din meniul View, etc.
Folosirea parametrilor
un applet care s afieaz 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;
}
}
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
Sintaxa complet a tagului APPLET, cu ajutorul cruia 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 ptrate sunt opionale.
Tag-ul APPLET
CODE = clasaApplet
Numele fiierului ce conine clasa principal a
appletului. Acesta va fi cutat n directorul specificat
de CODEBASE. Extensia .class poate sau nu s
apar.
WIDTH =latimeInPixeli, HEIGHT =inaltimeInPixeli
Specific limea i nlimea suprafeei n care va fi
afiat appletul. Sunt obligatorii.
ARCHIVE = arhiva.jar
Specific arhiva n care se gsesc clasele appletului.
CODEBASE = directorApplet
Specific URL-ul la care se gsete clasa appletului.
Uzual se exprim relativ la directorul documentului
HTML. In cazul n care lipsete, se consider implicit
URL-ul documentului.
ALT = textAlternativ
Specific textul ce trebuie afiat dac browserul
nelege tagul APPLET dar nu poate rula appleturi
Java.
Tag-ul APPLET
NAME =numeInstantaApplet
Ofer posibilitatea de a da un nume respectivei instane
a appletului, astfel nct mai multe appleturi aflate pe
aceeai 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 urmtoarele
valori: left, right, top, texttop, middle, absmiddle,
baseline, bottom, absbottom
VSPACE =spatiuVertical, HSPACE = spatiuOrizontal
Specific numarul de pixeli dintre applet i marginile
suprafetei de afiare.
PARAM
Tag-urile PARAM sunt folosite pentru specificarea
parametrilor unui applet
text HTML alternativ
Este textul ce va fi afiat n cazul n care browserul nu
ntelege tagul APPLET. Browserele Java-enabled vor
ignora acest text.
Alte metode oferite de clasa
Applet
Punerea la dispozitie a unor informaii despre applet
- getAppletInfo: permite specificarea unor informaii
legate de applet cum ar fi numele, autorul,
versiunea, etc. Metoda returneaz un sir de
caractere continnd informaiile respective.
public String getAppletInfo() {
return "Applet simplist, autor necunoscut, ver 1.0";
}
Aflarea adreselor URL referitoare la applet
getCodeBase - returneaz URL-ul directorului ce
conine clasa appletului;
getDocumentBase - returneaz URL-ul directorului
ce conine documentul HTML n care este inclus
appletul respectiv.
Aceste metode sunt foarte utile deoarece permit
specificarea relativ a unor fiiere folosite de un
applet, cum ar fi imagini sau sunete.
Alte metode oferite de clasa
Applet
Afiarea unor mesaje n bara de stare a browserului
public void init() {
showStatus("Initializare applet...");
}
Afiarea imaginilor
prin intermediul unei componente ce permite acest
lucru (Canvas), fie direct n metoda paint a applet-
ului, folosind metoda drawImage a clasei Graphics.
obinerea unei referine la imaginea respectiv se
va face cu ajutorul metodei getImage din clasa
Applet.
argument:
adresa URL absolut a fiierului ce reprezint
imaginea
calea relativ la o anumit adres URL
cea a directorului n care se gsete
documentul HTML ce conine appletul
(getDocumentBase)
cea a directorului n care se gsete clasa
appletului (getCodeBase).
Afiarea 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 );
}
}
Alte metode oferite de clasa
Applet
Aflarea contextului de execuie:
pagina n care acesta ruleaz, eventual mpreun cu
alte appleturi
este descris de interfaa AppletContext.
Crearea unui obiect ce implementeaz aceast
interfa se realizeaz de ctre browser, la apelul
metodei getAppletContext a clasei Applet.
Prin intermediul acestei interfee un applet poate
vedea n jurul sau, putnd comunica cu alte applet-
uri aflate pe aceeasi pagin sau cere browser-ului s
deschid diverse documente
AppletContext context = getAppletContext();
Afiarea unor documente n browser
showDocument: primete adresa URL a fiierului ce
conine documentul pe care dorim sa-l deschidem (text,
html, imagine, etc). Aceast metod este accesat prin
intermediul contextului de execuie al appletului.
try {
URL doc = new URL("http://www.pub.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 su va fi transferat de pe serverul care gzduiete
pagina Web solicitat pe maina clientului.
dimensiunea fiierelor care formeaz appletul trebuie s fie
ct mai redus
dac appletul conine i alte clase n afar de cea principal
sau diverse resurse (imagini, sunete, etc), acestea vor fi
transferate prin reea abia n momentul n care va fi nevoie de
ele, oprind astfel temporar activitatea appletului pn la
ncrcarea lor.
cea mai eficient modalitate de a distribui un applet este s
arhivm toate fiierele necesare acestuia.
Arhivarea fiierelor unui applet se face cu utilitarul jar, oferit n
distribuia J2SDK.
// Exemplu
jar cvf arhiva.jar ClasaPrincipala.class AltaClasa.class
imagine.jpg sunet.au
// sau
jar cvf arhiva.jar *.class *.jpg *.au
Includerea unui applet arhivat ntr-o pagin Web se realizeaz
specificnd pe lng numele clasei principale i numele
arhivei care o conine:
<applet archive=arhiva.jar code=ClasaPrincipala width=400
height=200 />
Restricii de securitate
un applet se execut pe maina utilizatorului care a solicitat
pagina Web ce conine appletul respectiv
este foarte important s existe anumite restricii de securitate
care s controleze activitatea acestuia, pentru a preveni
aciuni ru intenionate, cum ar fi tergeri de fiiere, etc., care
s aduc prejudicii utilizatorului.
procesul care ruleaz appleturi instaleaz un manager de
securitate, un obiect de tip SecurityManager care va
superviza activitatea metodelor appletului, aruncnd excepii
de tip SecurityException n cazul n care una din acestea
ncearc s efectueze o operaie nepermis.
Un applet nu poate s:
Citeasc sau s scrie fiiere de pe calculatorul pe care a fost
ncarcat (client).
Deschid conexiuni cu alte maini n afar de cea de pe care
provine (host).
Porneasc programe pe maina client.
Citeasc diverse proprieti ale sistemului de operare al
clientului.
Ferestrele folosite de un applet, altele dect cea a browserului,
vor arta altfel dect ntr-o aplicaie obinuit, indicnd faptul
c au fost create de un applet.
Appleturi care sunt i aplicaii
Deoarece clasa Applet este derivat din
Container, deci i din Component, ea
descrie o suprafa de afiare care poate fi
inclus ca orice alt component ntr-un alt
container, cum ar fi o fereastr.
Un applet poate funciona i ca o aplicaie
independent astfel:
Adugm metoda main clasei care descrie
appletul, n care vom face operaiunile
urmtoare.
Crem o instan a appletului i o adugm
pe suprafaa unei ferestre.
Apelm metodele init i start, care ar fi fost
apelate automat de ctre browser.
Facem fereastra vizibil.
Applet i aplicaie
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 ();
}
}