|
Politica de confidentialitate |
|
• domnisoara hus • legume • istoria unui galban • metanol • recapitulare • profitul • caract • comentariu liric • radiolocatia • praslea cel voinic si merele da aur | |
Introducere in JavaScript si Java | ||||||
|
||||||
Limbajul JavaScript y8f13fb Applet-uri si servlet-uri Java -------------------------------------------------------------------------------- 1. Limbajul JavaScript Microsoft ofera propria versiune JavaScript denumita JScript (versiunea curenta fiind 5.0) disponibila in cadrul navigatorului Internet Explorer, extensiile (mai mult sau mai putin controversate) ale acesteia fiind cele legate de accesarea sistemului de fisiere, de existenta dictionarilor de termeni si conlucrarea cu VBScript. De cele mai multe ori, programele JavaScript sint incompatibile cu cele JScript, proiectantii Web trebuind sa conceapa scripturi diferite, pentru a fi rulate pe ambele platforme: Netscape Navigator si Internet Explorer. Limbajul JavaScript este destinat pentru folosirea exclusiva in cadrul paginilor Web, codul sursa fiind interpretat de catre navigator (client) la momentul incarcarii documentului HTML ce-l contine. Netscape permite, mai nou, executia si pe partea de server a script-urilor JavaScript. Limbajul JavaScript a stat la baza conceperii modelului de standard ECMAScript, dezvoltat de Asociatia europeana a producatorilor de calculatoare (European Computer Manufacturers Association), aprobat in luna aprilie 1998. Pentru a intelege mai usor filosofia JavaScript, vom face mai intii o prezentare a standardului ECMA. 1.2 Standardul ECMA Un obiect ECMA Script este privit ca o colectie neordonata de proprietati, fiecare proprietate avind zero ori mai multe atribute. Proprietatile pot contine fie alte obiecte, fie valori primitive sau metode. O valoare primitiva este element membru al unuia dintre tipurile fundamentale Undefined, Null, Boolean, Number si String. Un obiect este membru al tipului de baza Object, iar o metoda este o functie asociata unui obiect prin intermediul unei proprietati. ECMA Script defineste o serie de obiecte predefinite: Global, Object, Function, Array, String, Boolean, Number, Math si Date. Se defineste un set de operatori predefiniti (care pot sa nu fie functii sau metode) similari celor din limbajul JavaScript. Tipuri de baza O variabila care nu are asignata nici o valoare este de tip Undefined. Valorile tipurilor Reference, List si Completion sint utilizate doar ca rezultate intermediare in cadrul evaluarii expresiilor si nu pot fi stocate de proprietatile vizibile ale obiectelor. Pentru tipul Number s-au definit constantele speciale: NaN (Not a Number), +Infinity si -Infinity. De asemeni sint permise valorile +0 si -0 cu semnificatia din matematica. Tipul obiect propriety ::= < name, value, attributes > Atribut Descriere Atributele proprietatilor unui obiect Proprietatile vizibile vor putea fi consultate prin intermediul metodei get si vor putea fi asignate prin put. Obiectele native ECMA Script poseda o proprietate interna numita aaPrototypeii, valoarea acesteia este fie null, fie un obiect, cu ajutorul ei fiind implementata mostenirea. Proprietatile obiectului aaPrototypeii sint vizibile ca proprietati ale obiectului mostenitor, putindu-se doar consulta (prin get) si nu altera (cu put). Orice obiect trebuie sa implementeze urmatoarele: proprietatea aaClassii metodele aaGetii, aaPutii, aaHasProprietyii, aaDeleteii, aaDefaultValueii Operatori operatorul % (modulo) poate avea ca operanzi nu doar numere intregi, cit si valori reale; valoarea returnata de operatorii && (si logic) si || (sau logic) nu neaparat va fi de tip Boolean, fiind intotdeauna valoarea unuia dintre cei doi operanzi. Instructiuni instructiunea bloc de instructiuni AS instructiunea vida ; instructiunea de test if instructiunile iterative while for for-in instructiunile de control return continue break with 1.3 Caracterizare a limbajului JavaScript variabile In JavaScript variabilele pot fi identificatori compusi din litere, cifre si semnul de subliniere (simbolul " _ "), scopul lor putind fi local sau global. Ca si C ori Java, limbajul este case-sensitive. tipuri de date Tipurile predefinite includ: numerele intregi (in baza 10, 8 sau 16) si rationale (scrise in notatie zecimala sau stiintifica), tipul boolean, sirurile de caractere, tipul Object, tipul Null si tipul Undefined. Similar limbajului ECMAScript, o variabila care nu are asociata nici o valoare este de tip Undefined (nedefinit). Nu se face verificarea stricta a tipurilor, asa cum se intimpla in Pascal. operatori JavaScript include operatorii uzuali aritmetici, relationali, logici, speciali (precum typeof ori operatorul conditional ?: familiar programatorilor in C), de manipulare a obiectelor. In JavaScript 1.2 se permite utilizarea expresiilor regulate. instructiuni Pot fi folosite instructiunile de atribuire, bloc, de test (if-else, switch), repetitive (for, do-while, while), de control (break, continue), de manipulare a obiectelor (for-in, with). Este permisa definirea functiilor de catre utilizator pentru utilizarea lor ulterioara in cadrul paginilor Web. obiecte Programatorii pot sa-si defineasca propriile lor obiecte, insa puterea limbajului consta in punerea la dispozitie a unei ierarhii de obiecte predefinite, respectind modelul obiect document (DOM) pe care il vom prezenta intr-unul dintre capitolele urmatoare. Aceasta ierarhie (prezenta in navigatorul Netscape) este ilustrata de figura de mai jos: Un obiect JavaScript este de fapt un tablou. Aceasta ofera o alta posibilitate de a accesa proprietatile unui obiect, folosind numele lor ca indici de tablou: NumeObiecta"NumeProprietate"i. Metodele se apeleaza ca si functiile, precedate insa de numele obiectului caruia ii apartin. Crearea obiectelor Pictor = new Object(); Atasarea unei metode noi obiectului se realizeaza foarte simplu: Pictor.afiseaza = afiseaza; Metoda Pictor.afiseaza va fi asignata functiei afiseaza() presupusa definita in prealabil. Prototipul unui obiect function Pictor(nume, curent, perioada) Aceasta abordare, prin prototipuri, difera de abordarea bazate pe clasa, din Java. De fapt, exista mai multe diferente esentiale intre limbajele Java si JavaScript, sintetizate in urmatorul tabel: Java JavaScript Comparatie intre Java si JavaScript Array permite folosirea tablourilor de date in cadrul programelor JavaScript. Crearea unui tablou se realizeaza prin operatorul new, astfel: arrayObjectName = new Array(element0, element1, ..., elementN) sau arrayObjectName = new Array(arrayLength) In JavaScript sint predefinite urmatoarele tablouri de date: anchors, applets, embeds, forms, images, layers, links apartinind obiectului document (vezi mai jos), elements apartinind obiectului Form, arguments apartinind obiectului Function, frames si history care apartin obiectului window si altele. Boolean este un obiect logic. Date se foloseste pentru manipularea datei calendaristice si a timpului, fiind predefinite o serie de metode utile pentru setarea, consultarea si modificarea datei, in mod similar limbajelor Java si ECMAScript. Urmatorul exemplu furnizeaza timpul curent sub forma de ceas digital: function JSClock() A var time = new Date() // timpul curent var hour = time.getHours() // ora curenta var minute = time.getMinutes() // minutele curente var second = time.getSeconds() // secundele curente var temp = "" + ((hour > 12) ? hour - 12 : hour) temp += ((minute < 10) ? ":0" : ":") + minute temp += ((second < 10) ? ":0" : ":") + second temp += (hour >= 12) ? " P.M." : " A.M." Function specifica un sir JavaScript sa fie executat ca o functie. O instanta a acestui obiect se creeaza in modul urmator: functionObjectName = new Function (aarg1, arg2, ... argni, functionBody) Number este un obiect definind constante numerice precum MIN_VALUE, MAX_VALUE, POSITIVE_INFINITY, NEGATIVE_INFINITY, NaN conform standardului ECMAScript. RegExp este utilizat pentru manipularea expresiilor regulate. String permite instantierea de siruri de caractere, furnizind si metode ca: anchor, link (pentru crearea ancorelor si legaturilor HTML), big, small, sup, sub, blink, bold, italics, fixed (pentru siruri de formatare a textelor HTML, similare marcatorilor <BIG> <SMALL> <SUP> <SUB> <BLINK> <B> <I> <TT> respectiv), concat, split, substr, slice, toLowerCase, toUpperCase etc. evenimente Una dintre caracteristicile interesante ale limbajului JavaScript este cea referitoare la evenimente. Evenimentele sint actiuni ce pot surveni in cadrul paginilor Web, in mod uzual in urma unor operatiuni executate de utilizator sau de navigator. La aparitia unui eveniment pot fi executate instructiuni JavaScript care astfel ofera posibilitatea de concepere a unor pagini Web dinamice. Pentru fiecare eveniment care se doreste a fi tratat, trebuie specificata o bucata de cod ce va fi executata ori de cite ori acel eveniment ca apare: <tag ... onNumeEveniment = "cod JavaScript"> 1.4 Programe JavaScript in cadrul paginilor Web <script language="JavaScript"> if (navigator.userAgent.indexOf("4.0") != -1) jsVersion = "1.2"; else if (navigator.userAgent.indexOf("3.0") != -1) jsVersion = "1.1"; else jsVersion = "1.0"; Codul JavaScript poate fi stocat intr-un fisier extern .js si folosit in cadrul paginii prin constructia <script src="file.js">. Utilizarea obiectelor navigatorului navigator contine proprietati care furnizeaza numele si versiunea navigatorului care proceseaza pagina Web, plus lista de module plug-in (extensii) ale acestuia. window este obiectul aflat la nivelul cel mai inalt in ierarhia obiectelor disponibile. Proprietatile lui se aplica intregii ferestre in care se afiseaza continutul documentului. Pentru paginile avind cadre, fiecarui cadru ii corespunde un obiect window. document poseda proprietatile bazate pe continutul documentului (titlu, fundal, legaturi, formulare etc.). location se refera la localizarea paginii (pe baza URI-ului). history contine proprietati reprezentind adresele Web precedente care au fost vizitate de utilizator. Exemplu Aceste obiecte au structura arborescenta urmatoare: Obiectul window Exemple Pentru fiecare legatura in parte la trecerea cursorului mouse-ului peste zona senzitiva a unei imagini va fi afisat un text explicativ pe linia de stare: <img src="Circles.jpg" width=500 height=500 border=0 usemap="#map" alt="Circles"> <map name="map"> In functie de plasarea mouse-ului linia de stare va afisa un anumit text. Folosind metoda open se pot crea scene VRML "din zbor". Functia de mai jos deschide o fereastra care va incarca o lume 3D constind dintr-un cub de culoare verde (din pacate este dependenta de navigatorul utilizat): function vrmlScene() A Obiectul document Exemplu function bar(widthPct) A document.write("<HR ALIGN='right' WIDTH=" + widthPct + "%>"); Apelind bar(65) va fi generat in pagina Web codul HTML <HR ALIGN=right WIDTH=65%>. Obiectul Forms Folosind aceasta facilitate, putem scrie o functie JavaScript care va redirecta browserul Web catre o alta pagina, prin intermediul unui meniu de navigare rapida. In antetul paginii, vom defini urmatoarea functie: <script language="javascript"> Aceasta functie va fi apelata de catre navigatorul Web la aparitia evenimentului onChange (vezi mai jos) in cadrul formularului continind lista de pagini pe care le poate incarca utilizatorul (asemenea abordare a fost folosita pentru navigarea facila prin paginile site-ului Facultatii de Informatica): <form name="form" id="form"> 1.5 HTML Dinamic si JavaScript DHTML consta de fapt dintr-o serie de facilitati oferite de navigatoarele actuale care permit conceperea de pagini Web dinamice. Din pacate, aceste facilitati sint dependente in mare masura de agentul-utilizator si de cele mai multe ori trebuiesc scrise variante specifice fiecarui navigator in parte. Tehnologia DHTML este implementata diferit in cadrul browserelor si in prezent se pare ca Internet Explorer ofera mai mult decit Netscape Communicator. DHTML in Netscape 4 sau ulterior Pozitionarea continutului <layer id="pictor1" style="left:50;top;30"> <layer id="pictor2" left=&A"&"S;A window.document.pictor1.left S; top=&A"&"S;Awindow.document.pictor1.top + document.pictor1.document.height + 50S;> Efectul codului de mai sus in Netscape Communicator poate fi vizualizat in figura urmatoare: Atribut Descriere id numele stratului, utilizat pentru specificarea unui strat particular left pozitia (pe coordonata 0x) a stratului top pozitia (pe coordonata 0y) a stratului Toate atributele unui strat pot fi atit accesate, cit si modificate de un program JavaScript. Urmatorul exemplu muta un text dintr-o parte a alta a ferestrei: <html> Un instantaneu al executiei acestui cod este dat mai jos: Iata un exemplu care schimba, la fiecare 5 secunde, continutul stratului definit astfel: <layer id="strat" width="100%" height="33"></layer> Documentul inclus intr-un strat poate fi accesat in JavaScript prin contructia document.identificator_strat.document. Codul complet al paginii Web este urmatorul: <html> // functia de scriere alternativa a textelor function scrie() A document.strat.document.write(continutaindexi); document.strat.document.close(); if (index == 2) // urmatorul text din tablou index = 0; else index++; setTimeout("scrie()", 5000); Dupa cum se observa, se pot include si marcaje HTML in cadrul tabloului continind textele alternative. Efectele executiei scriptului prezentat mai sus sint ilustrate in continuare: Metodele predefinite sint cele specificind deplasarea stratului (moveBy, moveTo, moveToAbsolute. moveAbove, moveBelow), redimensionarea (resizeBy, resizeTo) sau incarcarea (load). Ca la oricare obiect, se poate crea un nou strat prin constructia StratNou = new Layer(). Stratele pot fi manipulate si emulate si prin intermediul proprietatilor din CSS nivelul 2. Foi de stiluri accesate prin JavaScript <style type="text/css"> <style type="text/javascript"> tags.P.color = green DHTML in Internet Explorer 4 sau ulterior De obicei, un strat din Netscape poate fi emulat prin intermediul tag-ului div caruia ii putem asocia un identificator unic: <div id="identificator"></div> Astfel, putem manipula proprietatile de stil ale acestuia prin constructia identificator.style. In Internet Explorer nu exista tabloul de obiecte Layers. Cele mai importante proprietati de stil (inspirate din CSS) sint date in urmatorul tabel: Proprietate Descriere backgroundColor culoarea de fundal a unui element backgroundImage imaginea de fundal a unui element color culoarea unui element cursor forma cursorului mouse-ului position tipul de pozitionare (valorile valide fiind absolute si relative) pixelWidth latimea care o va ocupa un element (in pixeli) pixelHeight inaltimea care o va ocupa un element (in pixeli) pixelLeft pozitia (pe coordonata Ox) a unui element pixelTop pozitia (pe coordonata Oy) a unui element Folosind aceste proprietati putem modifica infatisarea oricarui element prezent intr-un document HTML. Proprietatile pot fi atit consultate, cit si modificate. Iata un exemplu (unde utilizam tag-ul <span>) care schimba culoarea de fond si culoarea de afisare a unui text, atunci cind plasam cursorul mouse-ului deasupra lui: <span id="text" onMouseover="text.style.color='green'; text.style.backgroundColor='yellow';text.style.cursor='help'" onMouseout="text.style.color='black'; text.style.backgroundColor='white';text.style.cursor='default'"> </span> Folosind aceste proprietati, putem modifica dimensiunile unor imagini atunci cind intervin anumite evenimente sau la momente stabilite. Imaginile isi schimba dimensiunile la cerere, ceea ce numai in JavaScript nu se putea realiza fara a reincarca documentul: <img id="logo" src="fcs-logo.jpg" Executia acestui script poate fi urmarita in urmatoarele doua figuri: <div id="movedtext" style="position: relative; background: lightgreen"> Functiile move_ahead() si move_back pot transla orice element. Incercati, de exemplu, ca in loc de div sa inserati un tabel identificat tot prin movedtext. Pentru exemplul referitor la alternarea unor siruri de caractere in fereastra navigatorului, scriptul care rezolva problema in Internet Explorer este urmatorul: <div id="textul"></div> <script language="JavaScript1.2"> var continut = new Array(); // tabloul cu textele alternative continuta0i = "Bine ati venit"; continuta1i = "la cursul de"; continuta2i = "<b>Tehnologii Web</b>"; var index = 0; // indica textul ce va fi afisat // functia de scriere alternativa a textelor function scrie() A textul.innerHTML = continutaindexi; if (index == 2) // urmatorul text din tablou index = 0; else index++; setTimeout("scrie()", 5000); Aici am folosit proprietatea innerHTML care este asociata elementelor <span> si <div> si care identifica de fapt continutul acestora. Scrierea de scripturi pentru orice tip de browser In Netscape Communicator, un element <div> pozitionat la coordonate absolute se comporta aproape la fel ca un strat specificat prin <layer>. Astfel, utilizind in cadrul documentelor HTML constructia: <div id="identificator" style="position: absolute"> vom obtine (aproape) aceleasi efecte indiferent de agentul-utilizator folosit. Mai ramine doar sa se identifice browserul in care va rula scriptul si in cazul Netscape sa se specifice elementul dinamic prin document.identificator, iar in cazul Internet Explorer prin identificator. Din pacate, in Netscape comportamentul lui <div> nu este 100% compatibil cu <layer> si programele JavaScript pot cauza, pe neasteptate, blocarea sau terminarea executiei aplicatiei. Identificarea navigatorului se poate realiza urmind "reteta" urmatoare (ideea este sa verificam existenta unor obiecte particulare, specifice fiecarui tip de navigator): // este Netscape Communicator 4 sau ulterior daca suporta straturi ns4 = (document.layers) ? true : false // este Internet Explorer 4 sau ulterior daca suporta proprietatea 'all' ie4 = (document.all) ? true : false // verificam daca este Internet Explorer 5 O alta solutie este sa consultam metoda appVersion a obiectului predefinit navigator, executind pentru afisare metoda predefinita alert(): <form> <!--aif IE 5i> <!aif ! IE 5i> Astfel, pot fi afisate diverse informatii ori pot fi utilizate caracteristici particulare (e.g. tag-ul <marquee> sau proprietati DHTML) numai daca navigatorul este Internet Explorer 5 sau ulterior. 3.6 Citeva exemple de programe JavaScript Hello, world! <p>Clasicul mesaj:</p> Inserarea de marcaje HTML cu JavaScript <html> Recursivitate in JavaScript <html> <body> Interactivitate cu utilizatorul <head> <body> <p>Raza cercului: </form> Incercati acest exemplu: Raza cercului: Suprafata: Evaluarea expresiilor cu eval() <head> <body> <p> Experimentati acest exemplu (de exemplu, introduceti (1+1)-(2*3)*3 sau -1/0): Expresia dorita (introduceti numai valori numerice): Rezultatul este: Modificarea culorilor de fundal In acest exemplu se foloseste facilitatea limbajului de a realiza temporizari prin intermediul functiei predefinite settimeout(): <head> function fadein(where) A if (where >= 1) A Un exemplu gresit de folosire a metodei write() Atunci cind apelam metoda write(), ea deschide si sterge documentul, daca acest document nu exista in cadrul procesului de deschidere si procesare atunci cind este apelata write(). Urmatorul exemplu ilustreaza un script care intentioneaza sa afiseze timpul curent o data la fiecare minut, dar esueaza dupa prima rulare deoarece se sterge pe el insusi: <HTML> Dupa prima apelare a functiei singOut() daca incercam sa reincarcam documentul vom obtine un mesaj de eroare. Pentru a vedea despre ce este vorba putem scrie javascript: in bara de adrese a navigatorului Netscape pentru a apela consola JavaScript sau sa apasam icoana documentului in bara de stare a navigatorului Internet Explorer. window.alert(theHour + " hours, " + theMinute + " minutes, Coordinated
Universal Time."); Schimbarea unei imagini atunci cind mouse-ul trece deasupra ei Functiile de mai jos, facind parte din proiectul AIpaedia, au fost concepute de absolventul Ovidiu Gheorghies: function LiveButton(src1, src2, destination, x, y, z) A this.src1 = src1; // stocheaza numele imaginilor ce vor alterna this.src2 = src2; this.x = x; // si pozitia absoluta a lor this.y = y; this.images = new Array(2); // memoreaza imaginile in vectorul 'images' this.imagesa0i = new Image(); this.imagesa0i.src = src1; this.imagesa1i = new Image(); this.imagesa1i.src = src2; this.layerIndex = document.layers.length; this.imageIndex = document.layersathis.layerIndexi.document.images.length; document.write('</LAYER>'); this.image = document.layersathis.layerIndexi.document.imagesathis.imageIndexi; document.layersathis.layerIndexi.document.imagesathis.imageIndexi.listener = this; /* functie apelata atunci cind mouse-ul e deasupra imaginii */ function LiveButton_mouseOver() A this.image.src = this.src2; // modifica imaginea ce va fi afisata /* functie apelata atunci cind mouse-ul iese */ function LiveButton_mouseOut() A this.image.src = this.src1; // modifica imaginea din nou Pentru utilizare efectiva, putem include intr-un document HTML o declaratie JavaScript de genul: var btclick = LiveButton("ButtonOff.gif", "ButtonOn.gif", "click-me.html", 300, 90, 2); Din pacate, codul de mai sus nu este portabil, fiind rulabil numai sub navigatorul Netscape. 1.7 Concluzii Utilizarea cea mai spectaculoasa a stratelor definite de DHTML JavaScript este animatia paginilor WWW, programatorii avind posibilitatea de a proiecta si implementa diverse prezentari multimedia (insa nu atit de flexibile precum cele scrise in SMIL). 2. Applet-uri si servlet-uri Java O parte din proiectantii de pagini Web au ramas reticienti la noul limbaj, obiectind fie complexitatea suficient de ridicata, fie faptul ca nu oferea toate facilitatile prezente in C++ din care se tragea. Astfel, Netscape ofera un mediu orientat-obiect, inglobat in navigatorul propriu, acest mediu fiind JavaScript, pe care l-am prezentat in sectiunea precedenta. Aceasta sectiune nu se doreste a fi o prezentare exhaustiva a limbajului Java, pentru mai multe amanunte putindu-se consulta cursul electronic disponibil la urmatoarea adresa Web: https://www.infoiasi.ro/Istefan/java/index.html, intocmit de dl.Stefan Andrei. 2.2 Caracterizare a limbajului simplitatea Java incearca sa ramina un limbaj usor de utilizat chiar si de catre programatorii neprofesionisti, fiind indepartate aspecte derutante ca supraincarcarea operatorilor si mostenirea multipla. De asemeni, lipseste adresarea prin intermediul pointerilor. portabilitatea Limbajul Java este independent de masina pe care lucreaza (suport pentru portabilitate si independenta hardware). In loc sa genereze cod nativ pentru o platforma particulara, compilatorul va genera o secventa de instructiuni ale unei masini virtuale Java (Java Virtual Machine - JVM), executia aplicatiilor fiind interpretata. Astfel, compilatorul Java nu traduce Java in limbaj masina, ci intr-un limbaj pseudo-masina denumit cod binar (byte code) Java. Codul binar este limbajul masina pentru calculatorul Java imaginar. Pentru a se putea rula cod binar Java pe un calculator particular, trebuie sa se instaleze masina virtuala Java pe acel calculator. Anumite JVM-uri pot traduce codul binar in limbaj masina imediat, fiind numite compilatoare Just-In-Time (JIT). De asemeni, sint dezvoltate procesoare noi pentru a implementa JVM direct in hardware, pentru a nu mai exista penalizari de perfomanta. Navigatoarele Web actuale poseda implementate JVM-uri cu ajutorul carora pot rula asa-numitele applet-uri Java, programe Java care sint apelate din cadrul paginilor WWW. orientare-obiect In Java se pot crea clase de obiecte si instante ale lor, se pot incapsula informatiile, suportindu-se mostenirea simpla etc. Java insa nu ofera mosteniri multiple, suplinite de o facilitate denumita interfata care permite definirea unui anumit comportament pentru o clasa de obiecte, altul decit cel specificat de clasa de baza. distribuirea Java este un limbaj distribuit, avind implementate biblioteci pentru lucrul in retea (suport la nivel inalt pentru socket-uri si RMI - Remote Method Invocation). Exista posibilitatea de a concepe aplicatii care lucreaza cu mai multe fire de executie (thread-uri); exista desigur primitive de sincronizare, independente de (ori bazate pe) sistemul de operare (Unix, OS/2, Windows NT ofera suporta pentru fire de executie multiple). Setul de caractere al limbajului este Unicode (pe 16 biti), mai flexibil decit setul ASCII (pe 8 biti). Aceasta facilitate ofera si posibilitatea de internationalizare a codului. Tipurile primitive sint urmatoarele: Tip Valori Cuvint cheie boolean true, false boolean caracter cod Unicode char Tipurile primitive in limbajul Java referinta catre o clasa referinta catre o interfata referinta catre un tablou Desigur, operatorii sint similari celor din C si nu vom mai insista asupra prezentarii lor. Exceptie fac operatorii de concatenare si asignare de siruri care sint cei naturali (+ si =), in limbajul C/C++ fiind implementati ca functii standard de biblioteca (strcat() si, respectiv, strcmp()). Instructiuni blocuri de instructiuni delimitate intre A si S declaratii de variabile locale atribuirea instructiuni conditionale: if, switch instructiuni de ciclare: while, do, for instructiuni de salt: break, continue instructiuni de retur: return, throw instructiuni de protectie si de sincronizare: try, catch, finally, syncronized Clase Puterea limbajului Java rezida in faptul ca se ofera o serie de clase predefinite, grupate, sau incapsulate, in pachete, din care utilizatorul poate deriva propriile sale clase, mostenind cele de baza. Pachetele pot avea nume ierarhice, urmind structura de directoare in care sint stocate clasele compilate. Astfel, in distributia Java 1.1.6, sint puse la dispozitie urmatoarele pachete, continind peste 450 de clase si interfete: java.applet java.awt.datatransfer java.awt.event java.awt java.awt.image java.beans java.io java.lang java.lang.reflect java.math java.net java.rmi.dgc java.rmi java.rmi.registry java.rmi.server java.security.acl java.security java.security.interfaces java.sql java.text java.util java.util.zip
Pachetele de clase Java 1.1.6 Sa presupunem ca dorim sa scriem un applet care sa afiseze mesajul Hello, world! in pagina Web: // importa pachetele AWT (Abstract Window Toolkit) si Applet import java.awt.Graphics; import java.applet.Applet; public class HelloWorldApplet extends java.applet.Applet public void paint(Graphics gr) // scrie un sir de caractere Pentru a vedea efectiv rezultatele rularii applet-ului, scriem o pagina minimala care va apela applet-ul de mai sus. In prealabil, applet-ul va trebui compilat cu un compilator Java (i.e. javac) care va genera un fisier byte cod Java cu extensia .class. <html> Applet-ul definit mai sus poate accepta si parametri (sirul de afisat) care trebuie specificati de tag-ul <param>. De exemplu, in loc de "Hello, world!" putem specifica "Hello, Faculty of Computer Science!" incluzind dupa <applet> si: <param name="msg" value="Hello, Faculty of Computer Science!">
Avantajul folosirii applet-urilor rezida in posibilitatea de a crea pagini Web dinamice sau care sa se modifice in functie de preferintele si interactiunea utilizatorului, de a partaja diferite applet-uri utile la nivel mondial. Iata un exemplu in care un applet, implementind functiile unui program de calcul tabelar (spreadsheet) poate fi rulat de mai multe navigatoare, pe diverse platforme, aflate la diverse adrese Internet: un cadru de lucru cu reteaua si cu firele de executie suportind protocoalele UDP si TCP; administrare de la distanta prin Web; controlul accesului pe baza de identitati; suport pentru servlet-uri Java; suport pentru protocolul SSL (Secure Socket Layer) utilizat pentru autentificare si confidentialitate; securitate a serverului pentru module incarcate dinamic de pe retea. JST ofera pachete pentru: infrastructura serviciilor: se ofera implementari ale algoritmilor multi-fire de executie si de management al conexiunii; administrare bazata pe Web: se ofera o serie de clase applet care faciliteaza generarea de interfete standard de administrare a serviciilor (applet-urile vor fi incarcate folosind HTTP si utilizeaza protocolul POST pentru a contacta servlet-uri ce manipuleaza entitatile reale aflate pe server); functionalitate a protocolului de transfer hipertext HTTP: sint suportate specificatiile HTTP/1.0 care pot fi extinse folosind servlet-uri; compilarea paginilor Web: posibilitatea de includere de cod Java in paginile HTML statice si apoi sa se compileze aceste pagini, rezultind servlet-uri Java pentru a crea un continut multimedia dinamic; servlet-uri utilitare: sint oferite unelte pentru urmarirea cererilor si a erorilor, pentru managementul memoriei, pentru generarea de alarme etc. Daca applet-urile erau aplicatii Java incarcate in cadrul paginilor Web, rulind pe calculatorul client, servlet-urile se vor executa pe server, reprezentind o solutie de rezolvare a problemelor de comunicare in retea pe partea de server. Servlet-urile pot fi privite ca obiecte conformindu-se unei interfete standard, instalate pe un server bazat pe Java. Ca exemplu de utilizare se poate mentiona generarea de documente HTML dinamice. Avantajele folosirii servlet-urilor sint urmatoarele: sint mai rapide si mai sigure decit script-urile CGI; folosesc o interfata de programare standardizata (Servlet API); mostenesc avantajele limbajului Java (e.g. portabilitatea); se pot usor configura prin intermediul utilitarelor JST; pot fi inlantuite (un servlet poate apela unul sau mai multe servlet-uri, in mod secvential); sint apelate dinamic din cadrul paginilor Web prin folosirea unor etichete speciale. Biblioteca de dezvoltare a aplicatiilor JavaServer asigura independenta de protocol, poate fi extinsa (mostenindu-se functionalitatea claselor de baza care pot fi dezvoltate ulterior de programatori) si este simpla. De asemeni, exista posibilitatea de a fi utilizate o serie de servlet-uri interne (predefinite), cum ar fi: SSInclude Servlet, File Servlet, Invoker Servlet, Admin Servlet, Cgi Servlet, Imagemap Servlet. javac Compilator Java pentru a genera cod binar Java. java Interpretor Java pentru a rula codul binar produs de javac. jre Interpretor Java folosit de utilizatorii finali pentru executia programelor Java (mai simplu decit aplicatia java). jdb Depanator simbolic Java, foarte asemanator cu depanatorul standard dbx din mediile UNIX. javadoc Generator de documentatie HTML pentru codul sursa Java. appletviewer Vizualizator de applet-uri, fara a necesita prezenta unui navigator Web. native2ascii Convertor de fisiere scrise in cod non-Unicode Latin-1 in fisiere Unicode Latin-1. jar Arhivator de fisiere .class, imagini si sunet intr-o singura arhiva Java (JAR) pentru a micsora timpul de transfer (se asigura astfel o unica tranzactie HTTP pentru a aduce de pe retea toate fisierele necesare rularii applet-urilor). 2.6 Prezent si viitor |
||||||
|
||||||
|
||||||
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite |
|