Java
Java
pachet de programe pentru dezvoltarea aplicatiilor, toate gratuit. Toate firmele mari s-au grabit sa
cumpere licente Java iar Sun a continuat sa ofere pachete de dezvoltare a programelor Java,
eliminind erorile si adaugind noi caracteristici.
In scurt timp, reteaua a fost inundata cu aplicatii Java care mai de care mai spectaculoase,
articole, surse, manuale si controverse. Dispozitivele casnice nu au devenit mai inteligente cu
Oak, in schimb a aparut miracolul unui nou limbaj de programare: Java.
Caracteristicile limbajului Java
In esenta Java este un limbaj de programare orientat pe obiecte cu facilitati pentru lucrul pe
Internet.
Un obiect, in lumea limbajelor de programare reprezinta o unitate care contine atit date (ce
pot fi de diferite tipuri) cit si functiile care prelucreaza acele date. Conceptul de obiect a fost
introdus pentru a permite o programare mai naturala, mai aproape de notiunea de obiect din
lumea reala. Mai concret, sa luam jocul "Doom": in programarea traditionala, fiecare monstru ar fi
fost reprezentat in memorie printr-o structura care sa contina caracteristicile sale (pozitie, viata,
munitie etc). Pentru a simula miscarea si inteligenta acesta structura trebuia folosita in cadrul
unei functii unice, care sa preia fiecare structura si sa o prelucreze. Cu alte cuvinte, functia pentru
miscare trebuia sa preia fiecare set de date al monstrilor si sa le actualizeze.
Pe ecran ii putem vedea insa distincti, fiecare reprezentind o unitate independenta. E mai
natural sa ne gindim ca fiecare monstru are propria functie de miscare, propria inteligenta
artificiala (in mod natural, nu ne putem imagina ca impart acelasi set de picioare sau acelasi
creier). Devine evident astfel ca fiecare monstru trebuie sa aiba pe linga caracteristicile proprii si
propriul set de functii care sa le actualizeze. Abstractizarea in limbaj de programare poarta
denumirea de obiect, iar functiile fiecarui obiect se numesc metode.
Printre limbajele orientate pe obiecte se numara Pascal, C++, Visual Basic etc. Caracteristica
ce deosebeste Java din acest punct de vedere de aceste limbaje este ca totul (sau aproape totul)
este un obiect, pina si programul in sine!
Java este simplu de invatat si utilizat - eliminarea unor caracteristici ale C++ care conduceau
de multe ori la erori - cum ar fi pointerii si gestiunea memoriei - precum si strictetea verificarii
tipurilor obiectelor folosite au condus la programe usor de verificat si de mentinut -.
Java este independent de platforma- codul Java a fost proiectat sa ruleze pe o masina
virtuala Java.
Altfel spus, codul masina in care este totdeauna compilat un program Java este pentru un
procesor inexistent. Acest cod insa, ajuns pe calculatorul clientului, este tradus in codul nativ al
procesorului cu care este dotat. Astfel un programator se asigura ca appletul scris pe calculatorul
sau Macintosh va rula fara probleme pe un PC deoarece prin retea se va transmite nu codul
calculatorului Mac ci traducerea programului in codul masinii virtuale Java, cod pe care browserul
de pe un PC va sti sa il traduca la rindul sau in codul procesorului masinii pe care lucreaza.
Java este sigur-Java a fost realizat in principal pentru distribuirea codului pe Internet in cadrul
documentelor HTML Asemenea programe inglobate in documente Web se numesc applet-uri. La
incarcarea paginii se incarca si appletul iar codul sau este executat. De aceea, echipa de la Sun
trebiua sa se asigure ca nici o actiune daunatoare nu ar putea avea loc pe calculatorul
utilizatorului: infectari cu virusi, formatari etc.
Un prim pas in aceasta directie a fost eliminarea pointerilor care permit adresarea unor
variabile de sistem indirect si pot provoca daune. In al doilea rind, codul appleturilor mai este o
data verificat in timpul executiei facindu-se verificarile pentru a nu se putea opera actiuni ilegale.
In al treilea rind, appleturile din start au fost concepute in asa fel incit sa nu poata scrie, citi pe si
de pe harddisk si nici sa poata executa alte programe. In al patrulea rind, deoarece un applet
poate realiza ferestre acestea sint dotate cu text sau imagini care sa avertizeze asupra faptului ca
e o fereastra Java impiedicind astfel appleturile sa pretinda ca sint ferestre deschise de sistem si
sa ceara o parola, de exemplu.
Mai exista masuri de securitate in Java, cum ar fi semnaturile digitale dar acestea vor fi
tratate intr-un capitol ulterior.
Java suporta fire de executie- Java a fost proiectat de la bun inceput astfel incit sa permita
executia in paralel a codului, precum si o realizare si o organizare usoara a acestora.
Java a fost realizat in principal pentru lucrul pe Internet- de aceea i-au fost adaugate trasaturi
care sa permita programarea usoara pe retea. Pot fi realizate aplicatii care sa citeasca posta
elctronica sau care sa intretina un chat; care sa preia documente de pe Internet si sa le
prelucreze ( cel mai bun exemplu este HotJava, un browser cu capabilitati Java scris in Java ).
Controalele Windows (ferestre, butoane, liste derulante etc) pot fi realizate din doua
instructiuni.
Echipa care a dezvoltat Java pina in acest moment a incercat sa ofere facilitati
programatorului in cit mai multe domenii. Astfel, pe linga cele prezentate, Java ofera suport
pentru animatie, baze de date, sunete, codificare, separare in atomi lexicali oferind o baza solida
pentru orice proiect.
Concluzie
Fara indoiala, Java este un limbaj foarte viabil. Limbajele de programare de pina acum aveau
nevoie de noi biblioteci complicate pentru a realiza ceea ce Java are incorporat: facilitati Internet,
multitasking, securitate s.a. A invatat din experientele nefericite demonstrind de exemplu ca se
poate programa foarte bine si fara pointeri (desi nici utilitatea acestora nu poate fi contestata). A
introdus noi standarde in programare si se mentine tot timpul in pas cu ultimele noutati.
Cu Java s-a reusit o integrare coerenta a celor mai diverse domenii (lista de mai sus), o
metoda simpla de adaugare a noilor standarde si o mare usurinta a programarii, lasind
informaticienii sa se concentreze mai mult asupra structurii aplicatiei. Toate acestea conduc la
afirmatia vicepresedintelui de la Sun, Larry Weber: "Java este un limbaj de generatia a V-a".
Desi Java mai are unele puncte slabe (unul ar fi viteza mica de executie, codul Java fiind
interpretat in codul masinii pe care se ruleaza, multitudinea de instructiuni care se executa pentru
mentinerea componentelor programului--colectorul de resturi, suportul pentru firele de executie
s.a.-- care micsoreaza si mai mult viteza) rezolvarea lor este numai o chestiune de timp. De
exemplu, in privinta vitezei de executie, Sun a propus o solutie care se numeste just-in-time
compiler, acesta fiind responsabil de compilarea codului Java ajuns pe calculatorul utilizatorului in
codul masinii sale, diferenta de viteza dintre compilare si interpretare fiind foarte mare.
In concluzie, Java este un limbaj care merita sa fie invatat, atit din cauza viitorului luminos
care i se deschide cit si din cauza faptului ca a aparut relativ recent--aceasta fiind deci perioada
in care se formeaza viitorii mari maestri ai programarii in Java--.
Daca aceste argumente sint de ajuns pentru a va trezi interesul, atunci urmatorul pas ar fi
obtinerea instrumentelor de programare in Java.
Referinta clasica in acest domeniu ramine site-ul firmei Sun cu al sau JDK (Java
Development Kit) accesibil la http://java.sun.com . Pachetul JDK pentru majoritatea platformelor
este deasemenea disponibil pe ftp la ftp.javasoft.com in directorul /pub.
Daca mediul linie de comanda al pachetului original nu va satisface, puteti alege alte pachete,
construite bineinteles peste pachetul original JDK, cum ar fi:
- Java Workshop, creata de Sun, disponibila la http://www.sun.com/sunsoft/Dev\ eloperproducts/java/Workshop/ ;
- Symantec Cafe si Symantec Visual Cafe for Java, dezvoltate de firma Symantec, disponibile
la http://caf.symantec.com;
- Visual J++, dezvoltata de firma Microsoft; Mai sunt multe alte medii de dezvoltare Java, cum
ar fi JavaBuilder, PowerJ, SuperCede, VisualAge for Java etc dar alegerea celui potrivit pentru
dumneavoastra ar trebui facuta dupa acumularea unor notiuni de baza Java.
Primele programe in Java
Dupa ce in articolul trecut am aruncat o privire in istoria acestui limbaj, a venit momentul
sa studiem ceva mai consistent. Vom invata structura unui program, sintaxa si
instructiunile cele mai folosite pentru a crea un cod simplu.
Conceptul de obiect
La inceputul erei informatice programele erau scrise in cod masina ce se introducea direct in
calculator. Acest cod era greu de inteles si de corectat daca aparea cumva o eroare. Avantajul
era insa ca programele scrise astfel foloseau putina memorie si mergeau foarte repede, un
avantaj major daca ne gindim cat de scumpa era tehnologia in acele timpuri.
O data cu trecerea timpului au aparut asa-numitele limbaje de nivel inalt, a caror instructiuni erau
cuvinte in limba engleza si erau executate efectiv cu ajutorul a zeci pana la sute de instructiuni in
cod masina. A aparut si conceptul de procedura, reprezentand o bucata de cod avand o
functionalitate bine determinata.
Revolutia cea mai mare insa a adus-o conceptul de obiect. Daca inainte era usor de
ajuns la ideea de structura (aceasta fiind o asociere de date de tipuri diferite sub un
nume unic) conceptul de obiect a fost mai greu de "digerat".
Pentru a intelege exact ce reprezinta un obiect, sa ne gindim la o structura. De exemplu,
o structura continind datele tehnice ale unuei masini : viteza, directie, dimensiuni etc. O
masina ar putea fi unic identificat pe baza acestor date. Ar fi deci usor de inteles o
structura de forma:
struct Masina {
nume: String
clasa: char
viteza: integer
lungime: integer
vit_maxima: integer
}
(imi cer scuze pentru pseudocodul atat de barbar !) Aceasta structura inglobeaza, sub acelasi
nume, Masina, tipuri diferite de date : String, integer si char. Printr-o linie de genul
struct Masina best1={"Volvo",'C', 0, 1.75, 250}
vom defini o masina Volvo clasa C cu viteza momentana 0 km/h (adica sta degeaba) cu o
lungime de 1,75 metri (nu stiu mai nimic despre Volvo !) si o viteza maxima de 250 km/h. In acest
mod de declarare a datelor, acestea vor putea fi accesate aproape natural:
// se face upgrade la motor
best1.vit_maxima=300;
// se lungeste masina
best1.lungime=1.90
// se merge cu masina prin oras
best1.viteza=50
Daca am face un joc pe calculator cu masini am putea face o structura ca cea de mai sus si am
defini doua functii care sa modifice viteza masinii si directia :
modifica_viteza( best1, 10) //modifica viteza masinii definite prin variabila best1 cu 10 km/h
modifica_directia(best1, 180) // o intoarcere spectaculoasa cu 180 de grade....
Daca avem mai multe masini in cursa, vom apela cele doua functii de mai sus cu fiecare, in genul
:
modifica_viteza(masina5_80_122, 30) // masina care accelereaza repede !
modifica_directia(masina_la_fel_de_tare,60) // imaginati-va cum se iau curbele...
Un obiect duce acest concept mai departe : ne putem imagina un obiect ca o structura care
contine si functii. Aceste functii ar trebui sa fie caracteristice acelui obiect si sa lucreze cu datele
obiectului. De exemplu, o masina este un obiect care isi modifica viteza si directia pentru a duce
persoane la destinatie. Ar fi deci natural ca, in loc sa folosim o procedura care modifica viteza si
directia pentru diferite structuri reprezentind masini, sa folosim un obiect care, pe linga parametrii
descrisi mai sus sa aiba propria sa functie de accelerare, de schimbare a vitezei etc. La urma
urmei, un Volvo nu accelereaza la fel de rapid ca un Ferrari ! Functiile de schimbare a vitezei ar
trebui sa aiba acelasi nume dar sa fie diferite, caracterizand pe fiecare in parte. Un obiect ar
putea fi definit astfel:
Object Masina{
nume:String;
clasa:String;
viteza:integer;
lungime:integer;
vit_maxima:integer;
void modifica_viteza(integer cantitate);
Observati cum apare, pe fundalul gri al paginii, suprafata alba a appletului de dimensiuni 200x150
pixeli. Aceasta este "suprafata limitata" despre care vorbeam la inceputul sectiunii. Observati si
locul in care apare prima litera a mesajului si ganditi-va la apelul functiei drawString(). Observati,
in final, cum a fost inglobat appletul in pagina Web: s-a folosit tag-ul <applet> (daca nu stiti ce
inseamna tag va recomand calduros articolele despre HTML din revista) cu cativa parametri :
code specifica locatia pe Web a appletului; height specifica inaltimea "ferestrei" appletului iar
width latimea acesteia.
Testati appletul modificind diferiti parametri: latimea, inaltimea, pozitia textului, textul in sine
(folositi unul foarte lung !) si va veti lamuri multe probleme tinind de prezentarea grafica a unui
applet. Ca o ultima remarca, daca fundalul paginii .html ar fi fost alb si nu gri, atunci nu ati fi putut
determina clar limitele appletului. Astfel, puteti de multe ori sa observati efecte deosebite pe
Internet si sa nu stiti ca sunt Java ( desi browserele anunta incarcarea unui applet) .
Trebuie sa fiti atenti la scrierea numelor metodelor si a claselor. Java este un limbaj casesensitive (adica face distinctia intre caracterele mici si caracterele mari din numele functiilor si a
variabilelor). Astfel, drawString este diferit de DrawString si veti primi un mesaj de eroare daca
veti incerca sa folositi a doua forma. Exista, totusi, o regula nescrisa care spune ca numele
claselor, daca sunt formate din mai multe cuvinte alaturate, poate fi scris avand primul caracter
din cuvinte cu majuscula, restul cu minuscula iar numele metodelor alcatuite din mai multe
cuvinte pastreaza aceasta regula cu exceptia primului cuvant din nume, care incepe cu
minuscula. Astfel, DrawString ar putea fi o clasa iar drawString o metoda. Daca pastrati aceasta
regula va va veni mai usor sa cititi programele pe care le-ati scris.
Dupa ce in articolul trecut am aruncat o privire pe structura unui applet, vom ncerca
acum sa studiem structura unei aplicatii. O aplicatie, dupa cum stiti probabil, este tot un program
Java lipsit de suportul grafic oferit de browser applet-urilor dar fara a mai avea limitarile acestora.
Desi mare majoritate a utilizatorilor folosesc Java pentru a scrie applet-uri, se pot face
multe lucruri interesante si cu aplicatiile. Ca un exemplu, browser-ul avnd capabilitati Java oferit
de Sun, HotJava, este o aplicatie.
Aplicatiile
Pentru cei care au mai programat in C/C++, aplicatiile vor fi foarte "digerabile", fie si
numai pentru ca functia principala a aplicatiilor se numeste main(). Astfel, universalul
mesaj care se foloseste la explicarea tuturor limbajelor de programare ar putea rezulta in
urma executiei urmatorului program:
Import java.lang.System;
class HelloApp{
public static void main(String args[]){
System.out.println("Hello world !");
}
}
Examinnd programul, vom observa ca HelloApp (clasa) nu mosteneste nici o alta clasa (desi
aceasta nu este o regula generala pentru aplicatii). In cadrul acestei clase de sine statatoare se
declara metoda main() a aplicatiei, metoda care afiseaza un mesaj (in mod text !) la consola.
Amintiti-va ca aplicatiile nu dispun de suportul grafic oferit de browsere, astfel ca, implicit,
mesajele sunt afisate in mod text. Sa urmarim insa mai atent linia care face efectiv afisarea unui
text pe ecran. Dupa cum stiti, apelul unei metode din cadrul unei clase se face in felul urmator:
nume_clasa.nume_metoda();
iar obtinerea unei variabile din cadrul unei clase se face astfel:
nume_clasa.nume_variabila;
dar noi avem doua puncte in loc de unul singur !
Problema nu este att de complicata daca citim de la dreapta la stnga linia cu pricina.
Obtinem astfel:
o
o
o
println este o metoda, dat fiind ca are parametri (in cazul nostru, textul de afisat);
out este un obiect care are ca metoda functia println;
System este un obiect care are ca variabila obiectul out.
Interpretorul de Java va citi insa invers, de la stnga la dreapta. Astfel, va cauta mai nti o
variabila in program care sa se numeasca System. Fiindca nu gaseste, cauta mai departe in
biblioteca pe care am inclus-o in programul nostru, java.lang.System. Aici va gasi, intr-adevar, un
asemenea obiect, pe care l va utiliza mai departe pentru evaluarea expresiei. Astfel, la pasul
urmator, interpretorul va cauta un obiect sau variabila in interiorul clasei System care sa se
numeasca out. Dupa ce l gaseste si pe acesta, va cauta in obiectul out o metoda numita println
pe care, in final, o va executa.
Ce trebuie retinut din toate acestea este ca obiectele pot fi imbricate. Astfel, putem defini
o variabila ca obiect in interiorul altei clase, iar apelul se face imbricat. De exemplu, linia
de mai sus poate fi scrisa mai sugestiv sub forma
(System.out).println("mesaj");
Prima paranteza poate fi considerata o constructie separata prin care se preia obiectul out din
clasa System. Mai departe, dupa ce acesta a fost preluat si este acum cunoscut, i se va atasa
restul liniei, in felul urmator:
out.println("mesaj");
linie ce poate fi executata ca orice apel de metoda dintr-o functie.
Fata de rezultatul applet-ului din articolul trecut, rezultatul executiei aplicatiei este mai
degraba dezamagitor. Un text scris in mod grafic nu suporta comparatie cu o simpla linie
de text gen DOS. Aplicatiile pot avea rezultate grafice, ca orice applet - amintiti-va de
browser-ul HotJava, care, desi este o aplicatie, se prezinta sub forma grafica, la fel ca
orice fereastra Windows, de exemplu --.
Anticipnd putin articolul urmator, am sa va prezint pe scurt tipurile de data fundamentale
in Java. Orice programator de C va observa diferente minime fata de ceea ce stia deja.
Tipurile de date fundamentale se numesc astfel deoarece ele reprezinta cele mai simple
tipuri de date in Java. Pe baza lor insa se pot realiza structuri si obiecte foarte
complicate. Fara a insista prea mult, tipurile de date fundamentale sunt Boolean, char,
byte, short, int, long, float si double.
In Java, variabilele de acest tip se declara exact in acelasi mod ca in C/C++:
int suma;
char tasta;
Boolean buton_apasat;
float distanta_foarte_precis_masurata;
Singura noutate pentru programatorii C ar fi tipul Boolean, care poate avea doua valori : true sau
false ( nu 0 sau 1 ! ). Daca vrem sa afisam o variabila de tip fundamental, limbajul Java ne ofera
o surpriza placuta, "scapndu-ne" de specificatorii de format de la functia printf din C. Astfel, daca
numar este o variabila de tip ntreg de valoare 20, o linie de genul
System.out.println("Numarul este "+ numar);
va afisa "Numarul este 20" (fara ghilimele).
Observati modul in care se "lipesc" cele doua componente ale raspunsului, prin semnul
"+". Folosindu-l mai intens, am putea scrie o linie de genul
System.out.println("Iasi - Temperatura: "+temp+";
Umiditatea: "+umid+".");
Desi am folosit in special metoda de afisare folosita la aplicatii, aceleasi reguli se aplica si
in cazul applet-urilor. Astfel, linia de mai sus ar putea fi scrisa mult mai frumos intr-un
applet cu instructiunea:
g.drawString( 5, 20, "Iasi - Temperatura:
"+temp+"; Umiditatea: "+umid+".");
Probabil ca v-ati dat seama deja ca, pentru a afisa valoarea unei variabile declarate intr-o
clasa, se foloseste o constructie de genul
System.out.println("Titlu:"+nume_obiect.nume_variabila);
Ce mai trebuie mentionat este ca metoda println("mesaj") tipareste pe ecran mesaj dupa care
trece la linia urmatoare. Astfel, daca nlocuim metoda main() din programul nostru initial cu:
Public static void main(String[] args){
int i;
float valoare=123.3678;
for(I=0;I
vom obtine pe ecran patru linii pe ecran. Daca am fi folosit insa metoda print() din cadrul
obiectului System.out, aceasta nu ar mai fi facut trecerea automat la urmatorul rnd, astfel ca
urmatorul mesaj scris pe ecran ar fi nceput imediat dupa sfrsitul mesajului precedent. nlocuind
mai sus println cu print, am obtine ceva in genul
valoare=123.3678valoare=123.3678valoare=123.3678valoare=123.3678
Daca ati nteles modul de lucru cu applet-urile si aplicatiile si ati hotart ca Java este un limbaj
care merita sa fie nvatat, ne vom ntlni luna viitoare cu o prezentare mai cuprinzatoare a
tipurilor de date si a altor proprietati ale obiectelor.
Crearea unei interfete
Andrei Bucos
Desigur, programele prezentate pana acum nu au fost deosebit de spectaculoase. Se pot
realiza insa interfete gen Windows destul de usor, oferind applet-urilor un aspect mult mai cizelat.
Java a fost realizat astfel incat lucruri destul de dificil de pus in practica in alte limbaje sa fie
foarte usor de facut in cateva instructiuni. Astfel, o interfata cu utilizatorul in Visual C nu se poate
compara cu una in Java, pur si simplu e mai usor de realizat in aceasta din urma.
O interfata cu utilizatorul poate face multe lucruri utile: reactionarea la selectiile
utilizatorului, salvarea unor optiuni, prezentare usor de folosit, toate acestea isi pot gasi
aplicabilitate in multe programe. Pentru a le realiza, vom folosi pachetul AWT (Abstract Window
Toolkit). Acesta ofera componente cum ar fi butoane, liste, meniuri si casute de dialog. Pe linga
acestea (cu care se poate interactiona in mod direct) vom folosi si asa-numitul layout manager.
Acesta stabileste modul in care vor fi aranjate componentele prezentate mai sus.
Componentele universale
Probabil cea mai folosita componenta in mediile interactive este butonul de asemenea si
una dintre cele mai usor de realizat. Pentru asta, vom folosi o bucata de cod asemanatoare cu
aceasta:
buton=new Button();
buton.setLabel("OK");
Metoda setLabel a clasei Button este folosita pentru a seta
textul scris pe buton. Pentru a realiza casute de bifat (checkbox) vom folosi un cod asemanator:
cb1 = new Checkbox();
cb2 = new Checkbox();
cb1.setLabel("Optiunea 1");
cb2.setLabel("Optiunea 2");
Este de remarcat ca, in aceasta prezentare, vom avea doua casute care pot fi marcate
separat fara sa se influenteze una pe cealalta. Daca dorim sa realizam un grup de optiuni dintre
care numai una sa poata fi marcata, vom scrie astfel:
Checkbox cb1, cb2, cb3;
CheckboxGroup grup;
grup= new CheckboxGroup();
cb1 = new Checkbox("Optiune 1", grup, false);
cb2 = new Checkbox("Optiune 2", grup, false);
cb3 = new Checkbox("Optiune 3", grup, true);
lista.addItem("Optiune 3");
lista.addItem("Optiune 4");
txt1 = new Label("Selectati o optiune:");
txt2 = new Label("-Sfarsit-");
add(b1);
add(b2);
add(cb1);
add(cb2);
add(cb3);
add(cb4);
add(txt1);
add(lista);
add(txt2);
validate();
}
}
Este interesant de observat ca obiectele sunt afisate pe ecran in ordinea in care au fost
adaugate applet-ului (cu "add") si nu in ordinea in care au fost initializate. Organizarea este insa
urata. Vom rezolva aceasta problema data viitoare, cand vom discuta despre layout managers.
Interesant este si ca, desi butoanele se pot apasa, selectiunile se pot face, nimic nu se intampla,
de fapt. Aceasta se datoreaza faptului ca nu am specificat applet-ului cum sa se comporte in
momentul in care se intervine asupra componentelor.
HTML pentru Java.
Desi articolul are un titlu care suna a 'pure Java' articolul este mai mult despre HTML. As spune
HTML pentru Java. Pna acum cred ca stiti care este diferenta dintre o aplicatie si un applet
Java. Cred ca ati observat ca vizionarea applet-ului necesita si cunostinte de HTML. In acest
articol imi propun sa tratez acest subiect. Tag-urile implicate sunt <APPLET> si <PARAM>. In cea
mai simpla forma folosind CODE, WIDTH, si HEIGHT ca atribute ale tag-ului <APPLET> se pot
realiza dimensiunile in care va fi afisat applet-ul respectiv. Ca o simpla observatie atributele pe
care le are tag-ul <APPLET> sunt aproape identice cu cele pe care le foloseste tag-ul <IMG> asa
prin prezentarea acestora rezolv doua probleme.
Atributul ALIGN stabileste felul in care applet-ul va aparea in pagina. Poate avea
urmatoarele valori: LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM,
sau ABSBOTTOM. in cazul in care ALIGN=LEFT sau ALIGN=RIGHT applet-ul este afisat pe
partea din stnga sau dreapta a paginii. Celelalte atribute incercati-le singuri (daca nu aveti un
applet incercati pe o imagine:-)).
Se poate folosi pe lnga applet, in functie de situatie, si tag-ul <BR> (line break) cu
atributul CLEAR poate avea una din urmatoarele trei valori. LEFT, RIGHT, ALL.
Atributele HSPACE si VSPACE sunt folosite pentru a stabili distanta in pixeli dintre applet si
textul din jurul acestuia. HSPACE controleaza spatiul orizontal iar VSPACE controleaza spatiul
vertical.
Ultimele doua atribute ale tag-ului <APPLET> sunt CODE si CODEBASE. Spre deosebire
de alte atribute nici unul dintre acestea nu are nimic legat de modul in care applet-ul urmeaza sa
fie afisat in pagina. Ele se refera la locatia actuala a clasei applet-ului (ex.: applet.class) astfel ca
browser-ul sa stie de unde sa incarce applet-ul. CODE este folosit pentru a indica numele
fisierului *.class care contine applet-ul in directorul curent.
Trebuie sa mentionez aici ca fisierele care sunt folosite in CODE trebuie sa aiba extensia
*.class.
Daca se doreste indicarea sursei aflata in alt director de pe serverul de web trebuie sa ii
precizati browser-ului unde poate gasi fisierele class respective. Pentru aceasta se poate folosi
CODEBASE. CODE contine numai numele clasei respective. CODEBASE contine un URL unde
pot fi gasite clasele. <APPLET CODE="clasa.class" CODEBASE="http://www.
server.ro/javaclasses" WIDTH=100 HEIGHT=100></APPLET>
Din cauza faptului ca applet-urile nu au o linie de comanda probabil ca o sa va intrebati