Sunteți pe pagina 1din 11

Programare Java

Curs – 6

CREAREA DE PROGRAME INTERACTIVE PENTRU WEB

Prima oara cand au aparut pe scara larga aplicatiile Java pentru web a fost in 1995 , atunci cand
Netscape Navigator a inceput sa ruleze applet-uri .
In general o aplicatie Java dedicata utilizarii pe web , in cadrul unei pagini HTML , se numeste applet
si are o structura diferita fata de o aplicatie normala scrisa in limbajul Java .

DIFERENTA INTRE APPLET-URI SI APLICATII

Aceasta diferenta consta in principal in modul cum acestea sunt rulate .

Aplicatiile sunt rulate prin intermediul unui interpretor Java care incarca fisierul clasa principal al
aplicatiei . Acest lucru se face de obicei din linia de comanda falosind utilitarul “java.exe” al pachetului
Java2 SDK ( sau JDK in versiunile mai vechi ) .
Pe de alta parte , applet-urile sunt rulate de orice browser care suporta Java – cum ar fi Netscape
Navigator , Internet Explorer , Sun HotJava sau Opera . Applet-urile pot fi testate si cu ajutorul
utilitarului “appletviewer.exe” , inclus in pachetul Java2 SDK . Trebuie mentionat ca “appletviewer”
ignora toate celelalte elemente ale paginii web in care inseram applet-ul nostru scris in Java .

Pentru a rula un applet acesta trebuie iglobat intr-o pagina web folosind tag-uri HTML , in acelasi mod
in care sunt inglobate imagini sau alte elemente . Atunci cand un utilizator cu un browser compatibil cu
Java incarca o pagina web care contine un applet , browser-ul trajsfera codul applet-ului de pe serverul
web si il executa pe sistemul local al utilizatorului . Nu este nevoie de un interpretor Java separat – el
este inclus in browser . Ca orice aplicatie , un applet Java contine un fisier clasa si orice alte clase
externe necesare rularii . Biblioteca de clase standard a Java este inclusa automat .
Deoarece applet-urile Java ruleaza in cadrul unui browser Java , o parte din efortul crearii unei interfete
utilizator este eliminata ; exista deja o fereastra in care applet-ul poate rula , un loc unde sa se afiseze
grafica si de unde sa se primeasca datele de intrare precum si interfata browser-ului .

OBS : Este posibil ca un program Java sa functioneze atat ca applet cat si ca aplicatie independenta .
Cu toate ca pentru crearea acestor tipuri de programe se folosesc proceduri separate , acestea nu intra in
conflict una cu alta . Caracteristicile specifice applet-urilor vor fi ignorate atunci cand programul
ruleaza ca aplicatie si viceversa .

ALEGEREA VERSIUNII DE JAVA PENTRU DEZVOLTARE

In cazul crearii de applet-uri Java pentru web un programator mai are o problema suplimentara in afara
de preogramarea propriu-zisa ; programul sau trebuie sa poata rula pe toate browser-ele existente ( mai
realist vorbind pe cat mai multe dintre ele ) .

In acest moment Java 1.02 este singura versiune de limbaj suportata absolut complet atat de Netscape
Navigator cat si de Microsoft Internet Explorer ( aplicatii ce detin in jur de 90 de procente din piata
browser-elor ) . Netscape si Microsoft au implementat si versiunile Java 1.1 si 2 ( la momentul actual –
inceputul lui 2002 – ultima versiune ) dar implementarile mai produc anumite surprize neplacute , in
unele cazuri existand applet-uri care nu functioneaza corect in cazul programarii lor folosind ultima
versiune a limbajului .

Sun a gasit o modalitate de a ocoli aceste neajunsuri creand un program add-on ( complementar )
pentru browser-e , denumit Java Plug-in , care ne permite sa utilizam imbunatatirile aduse de Java 1.2
sau Java 2 . Acest program add-on este continut in pachetul JDK 1.2 si in toate celelate versiuni ale

1
mediului de dezvoltare : 1.3 si 1.4 ( ultima versiune la momentul februarie 2002 a pachetului de
dezvoltare al Sun pentru limbajul Java 2 numindu-se Java2 SDK 1.4.0 ) .

In general in acest moment se aplica o formula destul de bizara :

- applet-urile se scriu folosind elemente Java 1.02 deoarece functioneaza pe toate browser-ele
compatibile Java
- aplicatiile se scriu folosind Java 2 deoarece pot fi rulate pe orice sistem care contine un
interpretor Java

Java 2 a fost proiectat astfel incat un program care foloseste numai facilitatile Java 1.02 sa se poata
compila si sa ruleze cu succes in cadrul unui browser compatibil Java .
Daca un applet foloseste una dintre facilitatile introduse de Java 1.1 sau Java 2 programul nu va rula pe
browser-ele care nu suporta aceste versiuni si care nu au instalat add-on-ul de care aminteam mai sus .
De multe ori imbunatatirile aduse limbajului de versiunile 1.1 sau 2 nici nu sunt vitale pentru aplicatiile
de tip applet , gasindu-si o utilitate mult mai mare in domeniul aplicatiilor Java independente .

In unele cazuri de applet-uri scrise pentru Java 1.02 compilatorul ne va atentiona ca anumite elemente
au fost inlocuite si ca exista o solutie mai buna ; aceste atentionari ( warnings ) nu sunt mesaje de
eroare ale compilatorului , SDK-ul creand un fisier clasa compilat si atragand doar atentia
programatorului .

RESTRICTII DE SECURITATE ALE APPLET-URILOR

Deoarece applet-urile Java sunt executate pe sistemul local al utilizatorului exista unele restrictii foarte
serioase referitoare la activitatile de care este capabil un applet . Daca aceste restrictii nu ar exista un
programator Java ar putea scrie fara probleme un program care sa stearga toate fisierele de pe un hard
disk , sa colecteze informatii private sau sa realizeze diferite brese in securitatea sistemului .

Ca regula generala , applet-urile Java functioneaza dupa principiul “better safe than sorry “ ; unui
applet ii sunt interzise urmatoarele activitati :

- sa citeasca sau sa scrie pe sistemul local al utilizatorului


- sa comunice cu un alt site decat cel de unde provine pagina web ce contine applet-ul
- sa ruleze programe executabile in sistemul local al utilizatorului
- sa incarce programe din sistemul utilizatorului ( executabile sau biblioteci partajate )

Toate aceste reguli se aplica applet-urilor in mod normal dar exista si posibilitatea ( din configurarea
browser-elor ) de a modifica nivelul de securitate dorit , permitand accesul din anumite directoare sau
conexiuni catre anumite site-uri .

De exemplu , utilitarul “appletviewer.exe” permite definirea unei liste de control al accesului pentru
directoarele unde applet-ul poate citi sau scrie fisiere . In practica insa trebuie sa tinem seama de
posibilitatea de a intalni restrictii de securitate maxime iar pentru evitarea problemelor programatorul
trebuie sa tina seama de actiunile care ii sunt teoretic interzise unui applet .
O facilitate nou introdusa de Java 2 este foarte importanta in problema securitatii ; noua versiune a
limbajului permite folosirea unor controale de securitate specifice care pot fi introduse sau eliminate
din applet-uri si aplicatii . Aceste elemente dau posibilitatea unui utilizator web sa acorde “incredere”
unui applet astfel incat acesta sa poata rula fara restrictii pe sistemul local .

CREAREA APPLET-URILOR

Un program Java contine o metoda main() , folosita pentru crearea obiectelor , stabilirea variabilelor de
instanta si apelarea altor metode .
Applet-urile nu poseda o metoda main() care sa fie apelata automat la lansarea programului . In schimb
exista mai multe metode apelate in diferite puncte ale executiei unui applet .

2
Toate applet-urile sunt subclase ale clsei Applet , care apartine pachetului java.applet . Clasa Applet
prezinta doua tipuri de comportament , care trebuie sa fie comune tuturor applet-urilor :

- capacitatea de a opera ca parte a browser-ului si de a trata evenimente ( cum ar fi de exemplu


incarcarea paginii in browser )
- capacitatea de a prezenta o interfata grafica pentru utilizator si de a prelua date de intrare de la
utilizator

Cu toate ca un applet poate folosi orice alte clase are nevoie , clasa Applet este clasa principala care
declanseaza executia unui applet . Subclasele pe care le vom crea , apartinand clasei Applet , vor avea
formula :

public class appletNou extends java.applet.Applet {


// cod sursa
}

Toate applet-urile trebuie declarate public deoarece clasa Applet este o clasa publica . Aceasta cerinta
este valabila numai pentru clasa principala a applet-ului ; orice alte clase externe pot fi publice sau
private .
Atunci cand un browser compatibil Java intalneste un applet Java intr-o pagina web , clasa applet-ului
este incarcata impreuna cu celelalte clase externe folosite . Browser-ul creaza automat o instanta a
clasei applet-ului si apeleaza metode ale clasei Applet atunci cand au loc anumite evenimente .
Diferite applet-uri care folosesc aceeasi clasa folosesc instante diferite deci vom putea introduce mai
multe copii ale applet-ului in aceeasi pagina si fiecare se va comporta diferit .

PRINCIPALELE ACTIVITATI ALE APPLET-URILOR

In locul metodei main() , applet-urile poseda metode care sunt apelate la aparitia anumitor evenimente
pe parcursul rularii applet-ului .
Un exemplu de astfel de metoda este paint() care este apelata ori de cate ori fereastra applet-ului trebuie
afisata sau redesenata .
In mod prestabilit aceste metode sunt nule – ele nu fac practic nimic . De exemplu metoda paint() ,
mostenita de la clasa Applet , este o metoda nula . Pentru a afisa ceva in fereastra applet-ului metoda
paint() trebuie suprascrisa cu un comportament care sa permita afisarea de text , grafica sau alte
elemente .

a. Initializarea

Initializarea apare o data cu incarcarea applet-ului . Initializarea poate consta in crearea obiectelor de
care are nevoie applet-ul , setarea starii initiale , incarcarea unor imagini sau fonturi sau setarea uno
parametri . Pentru a defini codul de initializare al unui applet trebuie suprascrisa metoda ini() :

public void init() {


// codul sursa
}

b. Pornirea

Un applet este pornit dupa initializare . Pornirea poate aparea si daca applet-ul a fost anterior oprit . De
exemplu un applet este oprit daca utilizatorul browser-ului urmeaza o legatura catre o alta pagina si este
pornit din nou atunci cand utilizatorul revine in pagina care contine applet-ul .
Pornirea poate aparea de mai multe ori pe parcursul ciclului de viata al unui applet , insa initializarea
apare doar o data . Pentru a defini codul de pornire al unui applet trebuie suprascrisa metoda start() :

public void start() {


// codul sursa

3
}

Codul metodei start() poate contine trimiterea anumitor mesaje obiectelor externe sau specificarea intr-
un anumit mod a faptului ca applet-ul isi incepe rularea .

c. Oprirea

Oprirea si pornirea merg una alaturi de cealalta . Oprirea apare atunci cand utilizatorul paraseste pagina
care contine applet-ul curent sau atunci cand applet-ul se opreste singur apeland metoda stop() . In mod
prestabilit orice fire de executie ( threads ) pe care applet-ul le-a lansat isi vor continua executia si dupa
ce utilizatorul paraseste pagina . Prin suprascriere metodei stop() putem suspenda executia acestor fire
si le putem reporni daca applet-ul este vizualizat din nou . In continuare se prezinta o forma a metodei
stop() :

public void stop() {


// codul sursa
}

d. Distrugerea

Metoda destroy() permite applet-ului sa-si faca “curatenie” chiar inainte de a se elibera memoria
alocata sau de a parasi browser-ul . Putem folosi aceasta metoda pentru a distruge orice fire de executie
sau pentru a elibera orice alte obiecte care ruleaza . De obicei nu se suprascrie metoda destroy() decat
daca exista anumite resurse care trebuie neaparat eliberate , cum ar fi fire de executie create de applet .
Pentru a defini codul de distrugere al unui applet trebuie suprescrisa metoda destroy() :

public void destroy() {


// codul sursa
}

In cursurile anterioare a aparut un element inrudit cu destroy() : metoda finalize() . Diferenta intre
aceste doua metode consta in faptul ca metoda destroy() se aplica doar applet-urilor iar finalize() este o
metoda generica , ce permite unui obiect de orice tip sa-si elibereze resursele .

Java poseda un recuperator automat al resurselor utilizate ( garbage collector ) , care administreaza
memoria in locul nostru . Acesta recupereaza memoria ocupata de resurse dupa ce programul nu le mai
foloseste , asa ca , in mod normal , nu trebuie sa folosim decat foarte rar metode ca destroy() sau
finalize() .

e. Desenare

Desenarea este modul prin care un applet afiseaza ceva pe ecran : text , linii , imagini , etc.
Desenarea poate aparea de foarte multe ori pe parcursul ciclului de viata al unui applet : o data dupa
initializarea applet-ului , alta data atunci cand fereastra browser-ului este adusa in prim plan , alta data
atunci cand fereastra browser-ului este mutata si asa mai departe . Pentru a se putea afisa ceva metoda
paint() , din subclasa noastra Applet , trebuie suprascrisa . Metoda paint() arata in felul urmator :

public void paint (Graphics g) {


// codul sursa
}

Trebuie sa observam ca , spre deosebire de celelalte metode descrise anterior , metoda paint() preia un
argument : o instanta a clasei Graphics . Acest obiect este creat si transmis metodei paint() de catre
browser , deci nu trebuie sa ne facem probleme legate de definirea sa . Totusi , nu trebuie sa uitam sa
importam clasa Graphics din pachetul java.awt in codul applet-ului nostru :

import java.awt.Graphics;

REALIZAREA UNUI APPLET

4
In cursul 3 s-a creat un applet Java denumit “Palindrom.java” cu scopul de a detalia conceptul de
mostenire . Acum revenim la acelasi exemplu privindu-l acum doar ca applet :

1: import java.awt.Graphics;
2: import java.awt.Color;
3: import java.awt.Font;
4:
5: public class Palindrom extends java.applet.Applet {
6: Font f=new Font("TimesRoman",Font.BOLD,36);
7:
8: public void paint(Graphics monitor) {
9: monitor.setFont(f);
10: monitor.setColor(Color.red);
11: monitor.drawString("Go hang a salami , I'm a lasagna hog",5,40);
12: }
13: }

Acest applet suprascrie metoda paint() . Deoarece applet-ul afiseaza doar cateva cuvinte pe ecran nu
este nevoie de nici o initializare . Astfel nu este nevoie de metodele start() , stop() sau init() .
Metoda paint() este locul unde se face toata treaba . Obiectul Graphics transmis metodei paint()
pastreaza starea sistemului grafic , prin care se cunosc atributele curente ale suprafetei de desenare .
Starea mai contine si detalii privind fontul curent sau culoarea folosita pentru operatiile de desenare .

Liniile 9 si 10 definesc fontul si culoarea folosite pentru operatiile grafice . Obiectul Font este pastrat in
variabila de instanta f iar obiectul reprezentand culoarea rosie este memorat in variabila red a clasei
Color .
Linia 11 foloseste fontul si culoarea curente pentru a desena sirul “Go hang a salami , I'm a lasagna
hog" in pozitia 5 , 40 . Reamintesc ca pozitia 0 pentru x si y este punctul din stanga – sus al suprafetei
de desenare a applet-ului , cu valoarea y crescand in jos asa incat valoarea 40 deplaseaza textul in jos .

Daca implementam in clasa metodele corecte pentru applet – init() , start() , stop() , sau paint() – atunci
applet-ul nostru va functiona corect fara a avea nevoie de un punct de start explicit .

INSERAREA UNUI APPLET INTR-O PAGINA WEB

Dupa ce am creat clasa sau clasele care compun applet-ul si le compilam in fisiere de tip class trebuie
sa cream o pagina web in care sa introducem applet-ul .

Applet-urile se insereaza intr-o pagina folosind eticheta HTML <applet> , o comanda care functioneaza
asemanator altor elemente HTML . Exista de asemenea diferite utilitare pentru dezvoltarea de pagini
web – ca Microsoft FrontPage sau Macromedia Dreamweaver – care pot fi folosite pentru a insera
applet-uri in paginile noastre web fara a folosi explicit cod HTML .

Scopul tag-ului <applet> este de a pozitiona applet-ul nostru in pagina web si de a controla modul cum
arata acesta in relatie cu celelalte parti ale paginii .
Browser-ele compatibile Java folosesc informatia continuta de aceasta eticheta pentru a gasi si executa
fisierele compilate cu clasele applet-ului .

Eticheta <applet> este de fapt o extensie speciala a limbajului HTML , care permite includerea applet-
urilor Java in paginile web ; eticheta este suportata de toate browser-ele compatibile Java .
Mai jos avem codul sursa HTML pentru o pagina in care am inserat applet-ul Palindrom :

<html>
<head>

5
<title>Pagina cu applet</title>
</head>
<body>
<p>Palindromul prezentat este :<br>
<applet code=”Palindrom.class” width=600 height=100>
Nu aveti browser compatibil Java
</applet>
</body>
</html>

Tag-ul <applet> de mai sus contine trei atribute esentiale :

- code - specifica numele clasei principale a applet-ului


- width - specifica latimea ferestrei applet-ului in pagina web
- height - specifica inaltimea ferestrei applet-ului in pagina web

Fisierul care contine clasa indicata de atributul CODE trebuie sa se afle in acelasi director ca pagina
web care contine applet-ul , cu exceptia cazurilor cand folosim atributul CODEBASE pentru a
specifica un alt director .
WIDTH si HEIGHT sunt atribute necesare deoarece browser-ul trebuie sa stie cat spatiu sa aloce
applet-ul in pagina . Este usor sa desenam intr-o zona exterioara ferestrei applet-ului asa ca trebuie sa
ne asiguram ca am prevazut o fereastra suficient de mare .
Intre etichetele <applet> si </applet> pot fi incluse si alte elemente de pagina web , cum ar fi text sau
imagini . Acestea sunt afisate in pagina web doar de browser-ele care nu sunt compatibile Java ; este in
general bine sa le includem deoarece utilizatorii sunt astfel anuntati ca nu pot vedea un applet pentru ca
browser-ul lor nu este pus la curent . Daca nu specificam nimic intre aceste doua etichete browser-ele
incompatibile Java nu vor afisa nimic in locul applet-ului .
In exemplul de mai sus cei care nu au browser compatibil Java vor vedea textul :

“Nu aveti browser compatibil Java”

in locul applet-ului .

Cele trei atribute ale tag-ului <applet> prezentate mai sus sunt cele de baza ; totusi , eticheta <applet>
contine si alte atribute , care pot ajuta la integrarea ,mai eficienta a applet-ului in structura generala a
paginii web :

a. atributul ALIGN

Acest atribut defineste modul cum va fi aliniat applet-ul in pagina web , relativ la celelalte elemente ale
paginii ; atributul poate lua urmatoarele valori :

- left - aliniaza applet-ul la stanga textului care urmeaza in pagina dupa applet
- right - aliniaza applet-ul la dreapta textului care urmeaza in pagina dupa applet
- texttop - aliniaza partea superioara a applet-ului cu partea superioara a celui mai inalt text de
pe linie
- top - aliniaza applet-ul cu cel mai de sus element prezent pe linie ( un alt applet , o imagine
sau un text )
- absmiddle - aliniaza mijlocul applet-ului cu mijlocul celui mai mare element de pe linie
- middle - aliniaza mijlocul applet-ului cu mijlocul liniei de baza a textului
- baseline - aliniaza partea inferioara a applet-ului cu linia de baza a textului
- bottom - acelasi lucru ca si baseline
- absbottom - aliniaza partea inferioara a applet-ului cu cel mai de jos element de pe linie

Pentru a finaliza formatarea specifica prin atributul ALIGN , putem folosi eticheta de terminare de rand
<br> , impreuna cu atributul CLEAR , acesta din urma putand lua trei valori :

- left - continua afisarea restului paginii web la urmatoarea margine libera din stanga
- right - continua afisarea restului paginii web la urmatoarea margine libera din dreapta

6
- all - continua afisarea restului paginii web la urmatoarea margine libera din stanga si din
dreapta

b. atributele HSPACE SI VSPACE

Atributele HSPACE si VSPACE sunt folosite pentru a determina spatiul , in numar de pixeli , intre
applet si textul inconjurator . HSPACE controleaza spatiul orizontal in stanga si in dreapta applet-ului
iar VSPACE controleaza spatiul vertical existent deasupra si dedesuptul applet-ului .

c. CODE SI CODEBASE

Aceste doua atribute sunt folosite pentru a indica unde pot fi gasite fisierele cu clasa principala a
applet-ului si alte fisiere necesare rularii acestuia . Aceste atribute sunt folosite de un browser Java in
momentul in care incearca sa ruleze applet-ul .
CODE indica numele fisierului care contine clasa principala a applet-ului . Cand CODE este folosit
fara atributul optional CODEBASE fisierul care contine clasa va fi cautat in acelasi loc in care se afla
pagina web care contine applet-ul .
In cadrul atributului CODE trebuie specificata si extensia .class .

Atributul CODEBASE se foloseste pentru a indica browser-ului sa caute applet-ul si alte fisiere
necesare rularii acestuia intr-un alt director . CODEBASE indica un alt director sau chiar un alt site de
unde urmeaza a se incarca clasele :

<applet code=”ClasaMea.class” codebase=http://www.site.com/clasejava


height=40 width=400>
</applet>

Trebuie mentionat ca eticheta <applet> este folosita special pentru a insera programe Java in paginile
web . In prezent exista si alte tipuri de programe care ruleaza interactiv intr-o pagina . Pentru a trata
toate aceste tipuri de programe fara a fi nevoie de cate o eticheta pentru fiecare explicit , specificatiile
HTML au introdus si eticheta <object> .

Aceasta eticheta este folosita pentru toate obiectele – programe interactive sau alte elemente externe –
care pot fi prezente drept parte a unei pagini web .

Eticheta are urmatoarea forma :

<object classid=”java:Clasa.class” codebase=”clasejava” height=40 width=400>


</object>

Trecerea de la eticheta <applet> la <object> presupune doar cateva modificari :

- atributul code trebuie inlocuit cu classid ; in plus , inainte de numele clasei applet-ului trebuie
specificat “java:” .
- eticheta <applet> se inlocuieste cu <object>

In rest atributele raman aceleasi .

TRANSFERUL DE PARAMETRI CATRE APPLET-URI

In aplicatiile Java putem transmite parametri metodei main() specificand argumente in linia de
comanda . Apoi putem prelucra acesti parametri in corpul clasei , aplicatia comportandu-se
corespunzator argumentelor primite .

In schimb applet-urile nu poseda o linie de comanda . Applet-urile pot obtine diferite date de intrare din
fisierul HTML care contine eticheta <applet> sau <object> , folosind parametri . Pentru a defini si trata
parametri intr-un applet avem nevoie de doua lucruri :

7
- o eticheta de parametru in fisierul HTML
- codul din cadrul applet-ului care sa trateze acesti parametri

Parametrii unui applet sunt compusi din doua parti : un nume , care este ales de dumneavoastra , si o
valoare , care determina valoarea respectivului parametru . De exemplu , putem indica intr-un applet
culoarea unui text folosind un parametru cu numele culoare si valoarea rosu . Putem determina viteza
de derulare a unei animatii folosind un parametru cu numele viteza si o anumita valoare .

In fisierul HTML care contine applet-ul , fiecare parametru este indicat folosind eticheta <param> ,
care contine doua atribute , pentru nume si valoare , denumite NAME si VALUE . Eticheta <param> se
introduce intre etichetele <applet> de inceput si de sfarsit de container :

<applet cade=”Clasa.class” width=100 height=100>


<param name=font value=TimesRoman>
<param name=dim value=24>
Aici este un applet Java
</applet>

Exemplul de mai sus defineste doi parametri pentru applet-ul “Clasa” : unul , denumit font , care are
valoarea TimesRoman si celalalt , denumit dim , care are valoarea 24 .
Folosirea etichetei <param> este aceeasi pentru applet-urile care folosesc tag-ul object> in loc de
<applet> .

Parametri sunt transmisi applet-ului la incarcarea acestuia . In metoda init() a applet-ului putem obtine
acesti parametri folosind metoda getParameter() . Aceasta preia ca argument un sir ce reprezinta
numele parametrului cautat si intoarce un sir care contine valoarea respectivului parametru . Pentru a
obtine valoarea parametrului font din fisierul HTML de mai sus , metoda init() ar trebui sa contina :

String numeFont = getParameter(“font”);

Numele parametrilor specificati in eticheta <param> si numele parametrilor metodei getParameter()


trebuie sa fie identice , inclusiv majusculele sau minusculele folosite . Cu alte cuvinte , <param
name=popescu”> este diferit de <param name=Popescu> .

Retineti ca daca parametrul asteptat nu a fost specificat in fisierul HTML , metoda getParameter()
intoarce valoarea null . De obicei , ar trebui testata valoarea null a parametrului si sa oferim o valoare
implicita . ca in exemplul de mai jos :

if (numeFont==null )
numeFont=”Courier”;

Mai trebuie reamintit din nou ca metoda getParameter() returneaza un sir ; daca dorim ca parametrul sa
fie de alt tip de obiect sau data trebuie sa il convertim explicit . Pentru a trata parametrul dim si a-l
atribui unei variabile intregi , numita dimensiunea , am putea folosi urmatorul cod :

int dimensiunea ;
String s = getParameter(“dim”);
if (s==null)
dimensiunea =12;
else
dimensiunea = Integer.parseInt(s);

In continuare sa vedem un exemplu de applet care foloseste aceasta tehnica . Vom modifica applet-ul
Palindrom pentru a afisa alte texte . Numele este transmis applet-ului printr-un parametru HTML .
Proiectul va primi numele PalindromNou .

Primul lucru pe care trebuie sa il adaugam acestei clase este o variabila in care va fi pastrata valoarea
parametrului palindrom . Deoarece vom folosi acest nume in cadrul applet-ului , vom adauga o
variabila de instanta dupa numele variabilei pentru font :

8
String palindrom;

Pentru a seta valoarea numelui , trebuie sa obtinem parametrul . Cel mai bun loc de obtinere a
parametrilor applet-ului este in cadrul metodei init() . Metoda init() este definita asemanator cu paint()
– publica , fara argumente si fara tip de retur . De asemenea trebuie sa ne asiguram ca testam valoarea
null a parametrului . Daca palindromul nu este specificat se va afisa implicit textul “Dennis and Edna
sinned” , ca in exemplul de mai jos :

public void init() {


palindrom = getParameter(“palindrom”);
if (palindrom==null)
palindrom=”Dennis and Edna sinned”;
}

O data adaugata aceasta metoda tot ce na mai ramane este sa modificam metoda paint() . Metoda
originala drawString() arata astfel :

ecran.drawString(“Go hang a salami , I’m a lasagna hog.”,5,40);

Pentru a desena noul sir pe care il stocam in variabila de instanta palindrom , tot ceea ce trebuie sa
facem este sa inlocuim variabila cu sirul :

ecran.drawString(palindrom,5,40);

In continuare prezentam listingul complet al aplicatiei applet PalindromNou :

1: import java.awt.Graphics;
2: import java.awt.Color;
3: import java.awt.Font;
4:
5: public class PalindromNou extends java.applet.Applet {
6: Font f=new Font("TimesRoman",Font.BOLD,36);
7: String palindrom;
8: public void paint(Graphics ecran) {
9: ecran.setFont(f);
10: ecran.setColor(Color.red);
11: ecran.drawString(palindrom,5,40);
12: }
13: public void init() {
14. palindrom = getParameter(“palindrom”);
15. if (palindrom==null)
palindrom=”Dennis and Edna sinned”;
16: }
17: }

In continuare vom crea si fisierul HTML care va contine acest applet :

<html>
<head>
<title>Pagina noua cu palindrom</title>
</head>
<body>
<p>
<applet code=”PalindromNou.class” width=600 height=100>
<param name=palindrom value=”No sir prefer prison”>
Browser-ul nu suporta Java

9
</applet>
</body>
</html>

Daca nu este specificata nici o valoare pentru parametrul palindrom textul implicit este “Dennis and
Edna sinned” .

AMPLASAREA APPLET-URILOR IN WEB

Dupa ce am obtinut un applet care functioneaza corespunzator putem face applet-ul disponibil in World
Wide Web .
Applet-urile Java sunt introduse pe un server web in aceasi mod ca si fisierele HTML , imaginile sau
alte fisiere multimedia . Applet-ul trebuie stocat intr-un director accesibil serverului web – de cele mai
multe ori in acelasi director care contine si pagina web ce inglobeaza applet-ul .

Serverul web trebuie configurat pentru a oferi applet-uri Java browser-elor ce suporta acest limbaj .

Exista cateva fisiere ce trebuie incarcate pe un server web :

- pagina web ce contine applet-ul


- toate fisierele .class folosite de applet si care nu fac parte din biblioteca de clase standard a
Java

In general daca stim cum sa publicam o pagina web , fisiere cu imagini si alte elemente multimedia
vom putea sa publicam fara probleme si applet-uri Java pe site-ul nostru .

ARHIVE JAVA

Modalitatea standard de amplasare a unui applet Java intr-o pagina web este de a folosi etichetele
<applet> si <object> pentru a indica numele clasei primare a applet-ului . Se foloseste apoi un browser
compatibil Java care transfera si executa applet-ul . Orice alte clase sau fisiere folosite de applet sunt
transferate de pe serverul web .

Problema cu rularea in acest fel a applet-urilor este ca fiecare fisier de care are nevoie applet-ul , fie
acesta o clasa externa , un fisier imagine , audio , text sau orice altceva – necesita o conexiune separata
de la browser la serverul web care contine fisierul . Deoarece intervalul de timp necesar pentru a stabili
conxiunile acestea nu este neglijabil acest lucru poate mari timpul total pentru transferul applet-ului si
fisierelor sale pana la durate inacceptabile .

Solutia acestei probleme este crearea unei arhive Java , adica un fisier JAR . O arhiva Java reprezinta o
colectie de clase Java si alte fisiere , impachetate intr-un singur fisier . Folosind o arhiva Java browser-
ului ii este suficienta o singura conexiune la serverul web . Reducand numarul de fisiere transferate de
pe server appelt-ul poate fi incarcat si rulat mai rapid . Arhivele Java pot fi si comprimate , scazandu-le
astfel dimensiunea si micsorandu-se timpul de transfer – dar in schimb va dura ceva mai mult din
partea browser-ului decomprimarea inainte de rulare .

Pentru a crea arhive JAR putem folosi utilitarul JAVA denumit jar , care poate impacheta sau
despacheta fisierele in/din arhive Java . Urmatoarea comanda impacheteaza toate clasele si imaginile
.gif dintr-un director intr-o singura arhiva Java , denumita Animat.jar :

jar cf Animat.jar *.class *.gif

Argumentul cf specifica doua optiuni in linie de comanda care sunt folosite de programul jar . Optiunea
c indica faptul ca arhiva Java trebuie creata iar f arata ca unul dintre urmatoarele argumente din linia de
comanda reprezinta numele arhivei .

10
Putem , de asemenea , adauga intr-o arhiva Java alte fisiere folosind comanda :

jar cf Smiley.jar ShowSmiley.class ShowSmiley.html spinhead.gif

Ruland utilitarul jar fara nici un argument vom obtine list a de optiuni care pot fi folosite .
Dupa ce am creat arhiva Java , in eticheta <applet> se foloseste atributul ARCHIVE pentru a indica
locul unde se gaseste arhiva . Putem folosi arhiva Java in felul urmator :

<applet code=ShowSmiley.class archive=Smiley.jar width=45 height=42>


</applet>

Aceasta eticheta specifica faptul ca arhiva numita Smiley.jar contine fisierele folosite de applet .
Browser-ele si utilitarele de navigare care suporta fisiere JAR stiu sa caute in interiorul arhivelor
fisierele necesare pe timpul rularii applet-ului .

OBS : cu toate ca o arhiva Java poate contine fisiere clasa atributul ARCHIVE nu presupune eliminarea
atributului CODE . Pentru a o incarca browser-ul trebuie totusi sa stie numele clasei principale a
applet-ului .

ALTE FORMATE DE ARHIVARE

Versiunile curente ale celor mai raspandite browser-e – ale firmelor Microsoft si Netscape – suporta pe
langa arhive JAR si formate recunoscute ca ZIP sau CAB .
Exemplul de mai jos foloseste o arhiva ZIP :

<applet code=AppletulMeu.class archive=utile.zip width=100 height=100>


</applet>

Microsoft a introdus un utilitar CABarc care realizeaza arhive in formatul CAB . Pentru a specifica
aceasta arhiva in codul HTML se foloseste eticheta <param> impreuna cu un parametru numit cabbase
, valoarea acestuia fiind numele fisierului cab . Iata un exemplu :

<applet code=AppletulMeu.class width=100 height=100>


<param name=cabbase value=AppletulMeu.cab>
</applet>

Ca si atributul ARCHIVE , parametrul cabbase va fi ignorat de browser-ele web care nu suporta


folosirea sa .

11