Limbajul Java abc-doar



Yüklə 1,97 Mb.
tarix28.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










Yüklə 1,97 Mb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin