|
Limbajul Java abc-doar
|
tarix | 28.10.2017 | ölçüsü | 1,97 Mb. | | #18504 |
|
************************
* Limbajul Java *
* ABC-doar *
************************
*********************************
* autor RUSU MIRCEA AUREL VALER *
*********************************
********************************************
* MOTTO: *
* *
* "That's one small step for a man, *
* one giant leap for mankind." *
* Neil Armstrong *
********************************************
De ce Java ?
Pentru ca este: simplu,robust si eficient,multitasking si
dinamic,este structurat modular exclusiv sub forma de obiecte,
este opensource si poate fi aplicat pe orice tip de dispozitiv
electronic (automatizari,comunicatii,imagistica etc.)
********************
* C O N T I N U T *
********************
Prezentare generala . . . . . . . . . . . . . . . . 1
Structura generala a programului . . . . . . . . . . 6
Elementele de limbaj . . . . . . . . . . . . . . . . 12
Clase si obiecte . . . . . . . . . . . . . . . . . . 16
Interfete grafice . . . . . . . . . . . . . . . . . . 19
Pachete . . . . . . . . . . . . . . . . . . . . . . . 22
Componentele vizuale (Swing si AWT) . . . . . . . . 26
Executia concurentiala . . . . . . . . . . . . . . . 57
Applet-uri Java . . . . . . . . . . . . . . . . . . . 79
Designul interfetei grafice (Layout Managers) . . . . 95
Tabele si baze de date . . . . . . . . . . . . . . . 109
Clase generice si colectii . . . . . . . . . . . . . 115
Grafica 2D . . . . . . . . . . . . . . . . . . . . . 130
Aplicatii audio . . . . . . . . . . . . . . . . . . 141
Java Management . . . . . . . . . . . . . . . . . . 161
Java networking (operatii in retea) . . . . . . . . 180
Securitatea aplicatiilor Java . . . . . . . . . . . 185
Finalizarea aplicatiilor . . . . . . . . . . . . . . 190
PREZENTARE GENERALA
Limbajul Java a fost proiectat si realizat initial ca o reactie la
limbajul C si C++,cu scopul de a asigura o cat mai buna portabilitate a
apliatiilor,pe orice platforma software si in orice mediu hardware.
Limbajul C,a fost creat initial pentru a structura mai eficient comu-
nicatiile dintr-o centrala telefonica.Urmasul sau,limbajul C++ a pastrat
toate filele header si structurile limbajului C,dar a adaugat si structuri
noi,denumite clase si obiecte.Rezultatul a fost un amalgam de functii de
nivel inferior si structuri de nivel superior,ce formau un mediu de ope-
rare complex si dificil de administrat.In plus,aplicatiile C++ erau strict
dependente de sistemul de operare si de o anumita configuratie hardware.
Obictele de tip DOS nu erau compatibile cu cele Windows iar aplicatiile nu
puteau fi rulate sub Linux,Solaris,OS2 sau alte sisteme de operare.Nu
existau obiecte ActiveX,astfel incat singura solutie era ca fiecare apli-
catie sa fie rescrisa,pentru fiecare context software/hardware.
In acest context,James Gosling de la firma Sun Microsystems a initiat
un proiect,prin care un limbaj structurat asemenator cu limbajul C++ sa
poata fi portabil pe orice tip de hardware si sub orice sistem de operare.
Pentru acest scop,a imaginat un cod intermediar organizat sub forma de
bytes si a creat doua instrumente de lucru independente: un compilator si
un interpretor.Comiplatorul converteste fila tip text la bytecode,iar
interpretorul converteste bytecode la limbaj masina (codul pt. procesor).
Prin acest mecanism simplu,o aplicatie poate fi creata in mediul Windows
si executata sub Linux sau DOS.In plus,fila de tip bytecode este complet
"inerta" fata de procesor si poate fi transmisa in orice tip de retea de
comunicatii,fara riscul de a fi corupta sau de a genera eventuale procese
"accidentale".Compilatorul si interpretorul sunt create special pentru
fiecare sistem de operare si pentru fiecare tip de hardware utilizat.
Firma Sun,ofera gratuit seturi intregi de astfel de instrumente speciali-
zate,pentru fiecare sistem de operare sau tip de dispozitiv electronic.
Pentru a crea o aplicatie Java este necesar un compilator si setul de
file header in care sunt arhivate clasele standard,la care se adauga toate
filele ce contin resurse,iar pentru a executa aplicatia este necesar un
interpretor si setul de file ce creaza mediul de operare necesar pentru
aplicatie.
Intre fila text editata de programator,si procesor,se interpune acest
cod simbolic si cele doua (sau mai multe) instrumente specializate in
prelucrarea lui.Acest mecanism a fost denumit generic "virtual machine"
si are semnificatia unui procesor virtual,creat sub forma de structura
software in care se executa exact aceleasi operatii ca si intr-un proce-
sor real.Acest procesor virtual poate fi creat pe orice tip de calculator,
sau dispozitiv electronic,cu conditia sa existe un tampon de memorie su-
ficient de mare.Ca rezultat,indiferent de tipul de procesor fizic instalat
Java va crea un procesor virtual in care va executa operatiile de conver-
sie a codului simbolic si apoi va accesa procesorul fizic in cod masina.
Firma Sun a publicat prima implementare de acest gen in 1995 sub numele
de Java 1.0 popularizata prin sloganul "Write Once,Run Anywhere".Apoi,
platforma Java a cunoscut o serie intreaga de actualizari si dezvoltari,
si este in continuare in plin proces de evolutie spre forme din ce in ce
mai perfectionate.
-2-
Acest mecanism inovativ,a produs o adevarata revolutie,atat pentru
tehnica de calcul,cat si pentru dispozitivele de automatizare si control.
Pentru prima data,se pot edita programe simple pe un calculator de birou
si apoi se pot transmite telefonic,pentru a fi implementate pe un robot,
sau orice alt tip de utilizator final.Exista o versiune de Java speciali-
zata pentru aplicatii de tip telefonie mobila.In prezent,exista nenumarate
solutii tehnologice similare,sau asemanatoare,dar Java este un mediu total
gratuit,este open source si este perfect compatibil,atat pentru scopuri
didactice,cat si pentru solutii prectice imediate.
Interpretorul de Java are 132 Kb.Ca rezultat,se poate crea un mediu
pentru executia aplicatiei Java in mai putin de 1 Mb de memorie (inclusiv
filele ce formeaza aplicatia).Ca rezultat,aplicatiile Java pot fi execu-
tate pe aproape orice tip de aparat electronic modern.
Limbajul Java nu este potivit pentru invatarea notiunilor elementare.
Este recomandabil sa utilizati alte limbaje pentru a invata ce este o
variabila sau o constanta,ce sunt instructiunile si comenzile,cum se
implementeaza functiile si procedurile sau ce este o clasa si un obiect.
Inainte de a incepe lucrul in Java,este bine sa cunoasteti cel putin un
limbaj de nivel superior,sa fiti familiarizati cu programarea orientata
spre obiect si cu modul de organizare al claselor de obiecte vizuale.In
plus,este bine sa aveti cel putin notiuni elementare despre reteaua Inter-
net si Web design (HTML,XML,XSL etc.).Principalele recomandari ar fi
limabjul C++ si Visual C++,limbajul Visual Basic sau Delphi.
In etapa de proiectare,limbajul Java a avut urmatoarele obiective:
1. -sa fie simplu,orientat spre obiect si familiar
2. -sa fie robust si sigur
3. -sa fie portabil si neutru fata de arhitectura intermediara
4. -sa fie cat mai performant (viteza/memorie consumata)
5. -sa fie dinamic,interpretat,multitasking (cu executie paralela)
Este bine sa aveti in vedere aceste obiective si pentru aplicatiile
create de d-voastra cu ajutorul platformei Java.
Spre deosebire de C++ si alte limbaje asemanatoare,Java ofera si alte
instrumente specializate de o importanta exceptionala.In primul rand,
trebuie mentionate instrumentele pentru gestiunea automata a memoriei
(Garbage collection) si cele pentru tratarea automata a eventualelor
erori de executie (Automated Exception Handling).Pe langa acestea,exista
un set intreg de instrumente (tools) auxiliare,ce permit conversia si
reconversia codurilor,arhivarea si dezarhivarea filelor,dezasamblarea
si asamblarea proiectelor,extragerea de documente Web cu comentariile
si referintele unui program etc.
Java este un mediu de programare suprastructurat.Toate datele trebuie
sa fie incluse in obiecte.Obiectele pot exista izolat,sau pot fi grupate
cu ajutorul unor obiecte de tip container.Fiecare obiect este creat cu
ajutorul unei clase (obiectul este o instanta a unei clase).Clasele pot
fi create si definite de catre programator,dar in principal se utilizeaza
clase standardizate,predefinite.Clasele predefinite sunt grupate in
pachete,incluse intr-o biblioteca denumita generic API.Spre deosebire de
alte limbaje vizuale,Java nu poate face apel la clasele incluse in Windows
sau in alte sisteme de operare.In schimb,Java contine un set complet de
clase proprii,ce inlocuiesc cu succes clasele API Windows si cele simi-
lare lor.
-3-
Platforma Java cuprinde un numar foarte mare de instrumente auxiliare,
editoare si programe de verificare si control.Ca rezultat,limbajul Java
se poate utiliza pentru foarte multe tipuri de aplicatii.Cele mai frec-
vente sunt: arhivarea si prelucrarea datelor,comunicatii in retea,actio-
nari si automatizari,prezentarea datelor in retea sub forma de interfete
grafice,componente auxiliare ale unei aplicatii Web (denumite applet-uri),
grafica si design,posta electronica etc.Acest manual,nu are decat titlul
de abecedar si se va axa mai ales pe aplicatiile de tip client,in care
se exploateaza o interfata grafica,formata din obiecte vizuale.Totusi se
vor prezenta succint si notiunile elementare ale limbajului,astfel incat
dupa terminarea acestui ciclu de instructie sa puteti migra spre oricare
dintre mijloacele de expresie ale limbajului Java.
Pentru inceput,trebuie sa va procurati setul de resurse software mini-
mal: setul cu instrumente de dezvoltare inclus intr-un pachet de tip JDK,
setul de instrumente pentru executie,inclus intr-un pachet de tip JRE,un
minim de documentatie tehnica (Exemplu: Java 2 SE 6 Documentation) si
eventual utilitarul NetBeans.Cel mai aimplu este sa descarcati de pe
Internet pachetul complet inclus in Java Standard Edition 6.0 (sau mai
recent).In plus,puteti cauta si descarca orice manuale,carti si tutoriale,
programe demonstrative sau exemple executabile,articole de specialitate,
comentarii si recenzii,etc.
Dupa instalarea programului,directorul Java va contine in folderul JDK
un set de subdirectoare: bin,db,demo,include,jre,lib,sample si src.Dintre
aceste,in aceasta etapa au importanta subdirectorul "bin" in care sunt
arhivate principalele utilitare si pachetul "src" in care sunt arhivate
pachetele de clase API (trebuie dezarhivat cu unzip sau cu JAR).
Daca deschideti "bin",puteti observa un set intreg de executabile mici,
si cateva file de tip DLL.Dintre acestea sunt esentiale: 1.cel denumit
"javac" (compilatorul) si 2. cel denumit "java" (interpretorul).Restul
de executabile implementeaza functii si operatii auxiliare:
javadoc -genereaza documentatie API
apt -instrument pentru addnotare
appletviewer -previzualizeaza un applet in web browser
jar -arhiveaza si dezarhiveaza filele
jdb -este programul debugger (depanator)
javah -genereaza file header de tip C++
javap -dezasambleaza filele .class
extcheck -detecteaza conflictele tip JAR (de arhivare)
Alte instrumente sunt specializate pentru securitatea aplicatiilor:
keytool -gestioneaza certificatele si setul de taste
jarsigner -genereaza sau verifica semnaturile JAR
policytool -administreaza filele de protocol (policy files)
Exista si un set experimental de instrumente destinate pentru depanare:
jinfo -prezinta informatii despre procesor sau despre server
jhat -permite verificarea stivei (din serverul Web)
jmap -prezinta o harta a memoriei (pentru un proces,o fila)
jsadebugd -ataseaza o fila destinata pentru depanarea server-ului
jstack -prezinta lista sirurilor de executie din proces
etc...
In etapa initiala,puteti sa eliminati instrumentele inutile.Este insa
obligatoriu sa pastrati compilatorul,interpretorul si filele DLL.
-4-
Trebuie remarcat de la prima vedere,ca intregul director "bin" nu ocupa
mai mult de 2Mb.Daca la alte platforme de programare toate utilitarele
sunt incluse intr-o interfata comuna (de obicei un meniu central cu seturi
de optiuni),Java a preferat sa ofere toate aceste utilitare separat.
Astfel,compilatorul java (javac) ocupa doar 25 Kb,iar interpretorul
(java) ocupa doar 132 Kb.Concluzia este evidenta: aplicatiile java se pot
crea si intr-un mediu foarte restrans de memorie (de exemplu pe un telefon
celular).Fiecare programator,are libertatea sa-si configureze mediul de
programare dupa bunul plac,sau dupa necesitatile de moment.Bineinteles ca
este recomandabil sa pastrati toate utilitarele din kit,la care puteti sa
adaugati orice alte instrumente de dezvoltare noi.
Pentru executia aplicatiilor Java,nu sunt suficiente doar utilitarele
din pachetul JDK,ci este strict necesar sa instalati si mediul de executie
denumit Java Runtime Enviroment,inclus in pachetul JRE.Acest pachet con-
tine procesorul virtual (Java virtual machine) si un set de biblioteci de
functii necesare pentru executie.Mediul de executie Java,este un mediu
complex,asemantor cu cel al sistemului de operare Windows,dar fara nici
un fel de interferenta cu acesta.In plus,sistemul de mesaje si controlul
evenimentelor sunt organizate complet diferit (nu are rost sa incercati sa
exploatati din Java mesajele de tip Windows).
Pentru a crea o fila executabila,sunt necesare urmatoarele etape:
1.-se editeaza o fila text ce contine codul in limbaj Java
2.-se salveaza fila cu extensia .java (numele filei trebuie sa corespunda
cu numele clasei implementate)
3.-se utilizeaza compilatorul javac pentru a converti fila in bytecode
(compilatorul genereaza o fila cu acelasi nume dar cu extensia .class)
4.-fila .class poate fi executata cu ajutorul interpretorului Java
La prima vedere,acest proces pare destul de complex si confuziv,dar cu
putin exercitiu,procesul de compilare si executie devine o rutina.Cei pre-
tentiosi,pot apela la un editor vizual,in care toate aceste operatii se
efectueaza automat.
Principalul avantaj il reprezinta faptul ca fila .class,generata in
cod simbolic (bytecode),este de dimensiuni mici,compacta,nu interfereaza
cu nici un sistem de operare,poate fi transmisa prin orice sistem de
comunicare (inclusiv telefonic) si poate fi executata pe orice dispozitiv
electronic dotat cu o masina virtuala Java si un interpretor.
Un alt avantaj major il reprezinta faptul ca intreaga platforma este
open source.Totul este la vedere,inclusiv bibliotecile de functii si
filele executabile.Mai mult decat atat,filele .class pot fi dezasamblate
pana la nivel de instructiuni de procesor,astfel incat profesionistii sa
poata verifica fiecare instructiune,registru sau operatie.
Nu in ultimul rand,Java este un limbaj cu un substantial potential de
dezvoltare viitoare,datorita faptului ca se poate adapta la aproape orice
tip de structura hardware.In etapa actuala,inca domina procesoarele cu
linie de executie seriala,bazata pe evenimente asincrone.Fiecare astfel
de eveniment,sau operatie,trebuie sa fie tratata la nivel de procesor
separat de restul evenimentelor.Chiar si procesarea de tip mutitasking,se
face tot serial: -se programaeaza mai multe fire de executie,apoi se
fragmenteaza aceste siruri de coduri si se executa pe rand cate un frag-
ment din fiecare sir (thread).Unele procese pot avea prioritate relativa
sau absoluta,in functie de un set de mark-eri.
-5-
Procesarea seriala a ajuns deja la limita fizica maxima,astfel incat
dezvoltarile viitoare nu se vor putea face decat utilizand metode de
procesare paralela,bazata pe evenimente sincrone.Exista deja calculatoare
de birou dotate cu procesoare duale,dar acest tip de solutie este rezervat
deocamdata doar pentru centralele mari si pentru supercalculatoare.Prin
dimensiunile mici si codul simbolic,Java este perfect compatibila si cu
aplicatiile in care se utilizeaza procese paralele (sistem distribuit).
Mai mult decat atat,Java este un mediu foarte interesant si pentru
iubitorii de hardware.Procesorul virtual ofera o platforma foarte simpla
si clara pentru verificare fizica a functionalitatii unui procesor.Cel
mai simplu exemplu il reprezinta verificarea registrilor cu ajutorul
celor din procesorul virtual (prin comparare).
In orice caz,Java nu este mediul cel mai potrivit pentru incepatori,
sau pentru amatori.Java este un limbaj modular,hiperstructurat sub forma
de clase,organizate arborescent.Clasa radacina este clasa Object.Toate
celelalte clase deriva din clasa Object si respectiv au clasa Object pe
post de superclasa(ancestor).Clasa Object este arhivata in pachetul
denumit "lang" si este implicita (intregul pachet "lang" este implicit).
Clasa Object are un constructor si un set de metode ce vor fi mostenite
de toate celelalte clase: clone(),equals(),finalize(),getClass(),hash-
Code(),notify(),notifyAll(),toString() si wait().Aceste metode pot fi
apelate din oricare dintre mostenitori.Restul claselor se dezvolta arbo-
rescent,spre clase din ce in ce mai specializate.Documentatia Java 2 SE 6
ofera pentru fiecare clasa prezentata si arborele genealogic:
EXEMPLU: java.lang.Object
|_ java.awt.Component
|_java.awt.Button
Urmarind arborele genealogic,puteti evalua toate proprietatile si meto-
dele mostenite de la ancestori.Mecanismul de mostenire este la fel ca si
cel al claselor C++,cu diferenta ca in Java nu exista mostenire multipla
(un obiect nu poate fi creat simultan din doua clase ancestoare).
In mod curent,aplicatiile Java nu vor contine o singura clasa,ci un
set intreg de clase,din care se vor crea obiecte ce interactioneaza prin
diverse apeluri reciproce.Din acest motiv,atunci cand se compileaza fila
sursa,este imperios necesar ca toate filele de resurse sa fie accesibile
pentru compilator.Inainte de a incepe procesul de compilare,trebuie sa
va asigurati ca directorul curent contine,sau are acces la toate pachetele
apelate si la toate filele de resurse incluse in aplicatie.
Si in mediul Java,este extrem de important cum gestionati conexiunile
dintre file si aplicatii (link-urile).Este recomandabil sa nu creati
link-uri spre file de resurse ce urmeaza sa fie actualizate,redenumite,
sau mutate la o alta adresa,deoarece riscati sa generati procese ce nu
pot fi executate prin lipsa unor resurse esentiale.
In linii mari,Java functioneaza la fel ca orice alt program orientat
spre obiect.In fiecare aplicatie se construieste un obiect,din clasa
principala si apoi se executa metodele obiectului.In cazul aplicatiilor
lipsite de obiecte vizuale,se implementeaza o functie principala (denu-
mita de obicei Main),cu ajutorul careia se organizeaza secventa de ope-
ratii,instructiuni si comenzi.Toate datele sunt incluse in obiecte (vizu-
ale sau nonvizuale),astfel incat programul este modular si incapsulat.
Daca a-ti inteles aceasta introducere,are rost sa cititi si restul cartii.
-6-
STRUCTURA GENERALA A PROGRAMULUI (Exemple)
Platforma Java si respectiv limbajul Java permit crearea unui numar
foarte mare de solutii software,pentru diverse tipuri de probleme si con-
figuratii hardware.Cea mai simpla aplicatie posibila,este o fila execu-
tabila.Mai multe astfel de file,impreuna cu un set de file continand alt
tip de resurse (grafice,audio etc.),se pot grupa pentru a forma un pro-
iect sau o aplicatie Java.Atunci cand aplicatia utilizeaza o interfata
grafica formata din obiecte vizuale,poarta numele de Aplicatie Desktop.
Atunci cand aplicatia este destinata exclusiv pentru Internet,poarta
numele de Aplicatie Web.In plus,Java se poate utiliza pentru a crea file
si biblioteci noi.In acest caz,se utilizeaza exclusiv clase derivate din
Object,la care se adauga diverse implementari noi.Atunci cand un grup
oarecare de obiecte urmeaza sa fie utilizate intotdeuna in aceeasi con-
figuratie,aspectul realizat poarta numele de interfata grafica.O inter-
fata nu este decat o conventie prin care programatorul se obliga sa
utilizeze aceeasi combinatie de obiecte,in aplicatii diferite.Aceste
interfete grafice,mai sunt denumite si sabloane,sau templates si sunt
frecvent aplicate pentru formularistica sau pentru a controla relatia
dintre utilizatori si program.Pentru a simplifica munca de programare,
clasele si interfetele se grupeaza in functie de functionalitatea lor,in
niste obiecte mai mari de tip container,denumite pachete.Programatorul va
avea libertatea sa incarce in memorie o singura clasa,sau intregul pachet,
in functie de necesitatile sale imediate.De obicei,atunci cand se utili-
zeaza mai multe clase din acelasi pachet,se incarca intregul pachet.
Pentru a simplifica procesele de eliberare a memoriei,Java incapsuleaza
toate datele in clase si obiecte.Alte programe,utilizeaza sisteme complexe
de tabele si pointeri prin care gestioneaza fiecare variabila si constanta
din program.Java include toate datele in clase si obiecte,astfel incat
aceste tabele se rezuma doar la obiectul respectiv.O data cu eliberarea
unui obiect,se elibereaza si tabela de pointeri,adica toate datele incluse
in obiectul respectiv,intr-o singura operatie.Acest gen de solutie,creste
viteza de executie si simplifica munca procesorului pentru gestionarea
operatiilor interne.Ca rezultat,fiecare fila Java trebuie sa contina cel
putin o clasa.Pentru a organiza executia programului,clasa principala din
program contine o functie,denumita Main(),ce urmeaza sa fie cautata si
invocata de Java Virtual Machine,in momentul executiei.In functia Main,
se grupeaza instructiuni izolate,sau blocuri de instructiuni,precum si
bucle si functii special destinate pentru controlul fluxului din program.
Cel mai simplu program Java,afiseaza pe ecran un text oarecare.
EXEMPLU:
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
-editati textul cu NotePad si salvati fila cu numele HelloWorldApp.java
in directorul BIN,la adresa la care este arhivat kit-ul JDK (sa fie in
acelasi director cu executabilul javac.exe).
Pentru a converti fila in cod binar,utilizati din butonul Start,optiu-
nea All Programs,alegeti Accessories si apoi Command Prompt.
-7-
Primul pas este sa deschideti directorul in care este arhivata fila nou
creata.Utilizati o comanda de genul:
cd C:\Program Files\Java\JDK1.6.0_03\BIN
Eventual,utilizati o comanda "dir" pentru a verifica daca sunt listate
toate filele din directorul BIN.
Pentru a compila fila nou creata utilizati o comanda:
javac HelloWorldApp.java
In mod normal se va genera o fila noua cu extensia .class.Verificati
cu "dir" daca fila HelloWorldApp.class apare in directorul BIN,apoi
puteti lansa fila in executie cu comanda:
java HelloWorld
Acesta este cel mai simplu exercitiu posibil.La inceput,este mai greu
sa va orientati in mediul DOS,dar va imaginati ca doriti sa transmiteti
un mesaj SMS,pe un telefon celular.
Exemplul este functional,deoarece utilizeaza stream-ul de iesire a
datelor System.out.La fel ca si in C++,stream-ul de iesire implicit este
un obiect gata creat si sta la dispozitie in orice moment.
In mod normal,clasele nu pot fi utilizate direct.Este necesar sa cre-
ati un obiect (o instanta a clasei respective),sa initializati obiectul
si abea apoi sa apelati una dintre metodele sale.
Mai observati si faptul ca nu trebuie inclusa nici o fila auxiliara.
Streamul System.out este inclus in pachetul System,care este inclus in
lang (pachetul lang este incarcat automat in orice aplicatie).Pentru o
imagine si mai clara,este bine sa deschideti fila de documentatie si sa
cautati in index pachetul System.Observati ca streamul "out" este inclus
in clasa System sub forma de camp de date static,conectat la clasa
PrintStream din pachetul java.io.Pentru scrierea propriu zisa a datelor
se va utiliza metoda println() a obiectului de tip PrintStream.Este bine
sa urmariti in pachetul de documentatie calea de executie pentru acest
exemplu simplu,pentru a putea intelege cum sunt apelate metodele unui
obiect in orice alta linie de comanda.
Pentru ca relatia dintre utilizator si program sa fie completa,este
necesar sa existe si o modalitate de a introduce date in program.Cea mai
simpla solutie este sa utilizati un stream (flux) de intrare a datelor.
Cel mai practic stream de intrare este inclus in clasa Scanner din pache-
tul denumit Util:
EXEMPLU:
import java.util.Scanner;
class Salut {
public static void main(String[] args) {
System.out.println("Hello World !");
System.out.println("Introduceti numele d-voastra:");
Scanner sc1=new Scanner(System.in);
String salut1 = sc1.next();
System.out.println("Hello: " + salut1 + " Wellcome to Java!");
}}
-salvati fila cu numele Salut.java
Apoi compilati fila (javac Salut.java) si executati fila (java Salut)
din Command Prompt.
Fata de exemplul precedent,am asociat stream-ului de intrare System.in
un obiect de tip Scanner (creat cu New) si apoi am apelat metoda next().
-8-
Pentru cei familiarizati cu C++,cele doua strem-uri sunt echivalente
cu "cin" si "cout".Acest gen de solutie este recomandabil doar pentru
aplicatii ce urmeaza sa ruleze sub DOS,intr-un mediu cu memorie extrem
de limitata.Pentru aplicatiile obisnuite,se recomanda fie crearea unei
interfete grafice cu obiecte vizuale,fie crearea unui applet,pentru o
fila de Web.
Pentru construirea interfetei grafice se utilizeaza un set de compo-
nente,asemantoare cu cele din mediul Windows,dar cu aspect putin diferit.
Trebuie remarcat faptul ca Java nu apeleaza resursele sistemului Windows
ci include un set separat de componente,incluse in pachetul denumit Swing.
EXEMPLU:
import javax.swing.*;
public class HelloWorldSwing {
public static void main(String[] args) {
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
frame.pack();
frame.setVisible(true); }
}
-salvati fila cu numele HelloWorldSwing.java,apoi compilati si execu-
tati fila.
Daca sunteti familiarizati cu obiectele vizuale,acest exemplu este
relativ usor de urmarit.Functia main() construieste initial un obiect de
tip JFrame si apoi o eticheta de tip jLabel (cu new) .Interfata trebuie
sa contina neaparat un obiect container (frame sau window) in care se
pot include restul de componente (label,combobox,buttons etc.) cu ajutorul
metodei add().Observati ca in acest caz,compilatorul a creat si o fila
auxiliara,denumita HelloWorldSwing$1.class in care arhiveaza informatii
suplimentare,necesare pentru executie (ordinea proceselor de executie).
Acest exemplu,afiseaza deja un obiect grafic.Daca nu va place sa ope-
rati din DOS,puteti sa utilizati un instrument oarecare prin care sa
transformati fila .class in executabil de tip Windows,sau cel putin sa
puteti lansa fila in executie cu un dublu click de mouse.Cel mai simplu
program de acest gen,se numeste Java Runner,are 55 Kb si poate fi descar-
cat de pe Internet,prin bunavointa autorului (Kevin Kuang).Instalati
utilitarul,apoi conectati in Windows Explorer filele de tip .class cu
utilitarul jr.exe (vezi fila readme din program).In continuare,puteti
lansa in executie orice fila .class,cu un simplu click dublu de mouse,
cu conditia sa existe un interpretor de java instalat si un pachet JRE
(continand Java Virtual Machine).In continuare,programarea in Java incepe
sa semene cu cea din oricare alt program vizual.
Este bine sa verificati in Documentatie si obiectele JFrame si respec-
tiv JLabel utilizate in exemplul de mai sus.In general,pentru interfetele
grafice se prefera un alt tip de solutie : se creaza mai intai o interfata
de tip runnable,apoi se lanseaza in executie prin metoda Run().In acest
caz,functiile prin care se implementeaza interfata se declara de tip
private,pentru a nu putea interfera cu restul aplicatiei.
-9-
EXEMPLU:
import javax.swing.*;
public class HelloWorldSwing {
private static void createAndShowGUI() {
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
frame.pack();
frame.setVisible(true); }
public static void main(String[] args){
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() { createAndShowGUI(); }
} );
}
}
-salvati,compilati si executati fila (atentie cum inchideti paranteza
invokeLater() dupa ultima acolada din new Runnable() ).
Observati ca in acest caz,functia prin care se creaza obiectele este
privata si nu poate fi apelata din exteriorul filei.In schimb,functia
main() este publica,creaza o interfata de tip Runnable() cu ajutorul
functiei private si apoi apeleaza metoda Run(),pentru a pune interfata
in executie.Acest procedeu este mai complicat,dat asigura o mult mai
buna securitate a datelor (interfata nu poate fi corupta din exterior).
O alta modalitate pentru prezentarea datelor o reprezinta applet-urile.
Spre deosebire de aplicatiile simple,un aplet nu trebuie sa contina o
functie main(),deoarece va fi pus in executie de motorul intern al filei
HTML in care va fi exportat.Pentru a putea fi recunoscut de browser,este
necesar ca applet-ul sa fie inclus intr-o clasa de tip public,creata prin
derivarea clasei standard JApplet din pachetul javax.swing.
EXEMPLU:
import javax.swing.JApplet;
import java.awt.Graphics;
public class Hello extends JApplet {
public void paint(Graphics g) {
g.drawRect(0,0,getSize().width - 1,getSize().height - 1);
g.drawString("Hello world!",5,15); }
}
-salvati fila cu numele Hello.java,apoi compilati fila
Includeti applet-ul intr-o fila HTML astfel:
Applet
APPLET
Applet simplu
Link spre pagina ApptoAppl
Dostları ilə paylaş: |
|
|