tpi_1-7

Upload: bogdan-lupe

Post on 02-Mar-2016

27 views

Category:

Documents


0 download

DESCRIPTION

Tehnologii de programare in Internet

TRANSCRIPT

  • Tehnologii de programare n Internet Curs 1- Internet i Web -

  • Internet1.1. IstoricLa mijlocul anilor 1960, cnd Rzboiul rece era n punctul culminant, Dod-ul (Department of Defense - Departamentul de Aprare al Statelor Unite) a vrut o reea de comand i control care s poat supravieui unui rzboi nuclear. Tradiionalele reele telefonice cu comutare de circuite erau prea vulnerabile, deoarece pierderea unei linii sau a unui comutator ar fi pus capt tuturor conversaiilor care le foloseau i ar fi partiionat reeaua. Pentru a rezolva aceast problem, Dod s-a orientat ctre agenia sa de cercetare ARPA (Advanced Research Projects Agency - Agenia de Cercetare pentru Proiecte Avansate). Dup discuii cu diveri experi, ARPA a decis c reeaua de care avea nevoie Dod trebuia s fie o reea cu comutare de pachete constnd dintr-o subreea i calculatoare gazd. Subreeaua avea s fie o subreea datagram, astfel c dac unele linii de transmisie i calculatoare gazd se defectau, mesajele puteau fi redirijate automat pe ci alternative.

  • Cercetrile pentru gsirea de protocoale potrivite pentru a rula pe ARPANET i pe LAN-urile (Local Area Network) ce se conectau ntr-un numr tot mai mare la acesta a culminat cu invenia modelului i protocoalelor TCP/IP. Astfel TCP/IP a fost proiectat special pentru a trata comunicarea prin inter-reele.In timpul anilor 1980 au fost conectate la ARPANET multe alte reele, n special LAN-uri. Pe msur ce cretea dimensiunea reelei, gsirea gazdelor devenea tot mai costisitoare. De aceea a fost creat DNS (Domain Naming System - Sistemul Numelor de Domenii), care organiza mainile n domenii i punea n coresponden numele gazdelor cu adrese IP. De atunci, DNS a ajuns s fie un sistem de baze distribuit, generalizat, folosit pentru a memora informaii referitoare la procedurile de atribuire a numelor.

  • La sfritul anilor 1970, NSF (U.S. National Science Foundation - Fundaia Naional de tiin din SUA) a remarcat impactul enorm pe care ARPANET-ul l avea asupra cercetrii universitare, reeaua permind partajarea datelor i colaborarea n cadrul proiectelor de cercetare.Dar, pentru a se conecta la ARPANET, o universitate trebuia s aib un contract de cercetare cu DoD, iar multe universiti nu aveau.

  • De aceea, n 1984 NSF a nceput s proiecteze un succesor de mare vitez al ARPANET-ului, care s fie deschis tuturor grupurilor de cercetare din universiti.Pentru a avea ceva concret cu care s nceap, NSF a hotrt s construiasc o coloan vertebral care s lege centrele sale de supercalculatoare din ase orae: San Diego, Boulder, Champaign, Pittsburg, Ithaca i Princeton. Acesta a fost primul WAN (Wide Area Network) TCP/IP. NSF a finana, de asemenea, un numr de 20 de reele regionale care se conectau la coloana vertebral, permind utilizatorilor din mii de universiti, laboratoare de cercetare, biblioteci i muzee s acceseze oricare dintre supercalculatoare i s comunice ntre ei. Reeaua complet, care includea coloana vertebral i reelele regionale, a fost numit NSFNET.

  • Numrul reelelor, mainilor i utilizatorilor conectai la ARPANET a crescut rapid dup ce TCP/IP a devenit, la 1 ianuarie 1983, unicul protocol oficial. Cnd au fost conectate NSFNET i ARPANET, creterea a devenit exponenial. S-au alturat multe reele regionale i s-au realizat legturi cu reele din Canada, Europa i Pacific.Pe la mijlocul anilor 1980, lumea a nceput s vad colecia de reele ca fiind un internet, iar apoi ca fiind Internet-ul.

  • 1.2. Subreele, reele, inter-reeleDeseori se produc confuzii ntre subreele, reele i inter-reele.Termenul de subreea este mai potrivit n contextul unei reele larg rspndite geografic, unde se refer la colecia de rutere (routere - comutatoare de date, sisteme intermediare, noduri de comutare a pachetelor) i linii de comunicaie aflate n proprietatea unui operator de reea, de exemplu, o firm ca America Online sau CompuServe. Combinaia ntre o subreea i gazdele sale formeaz o reea. n cazul unui LAN, reeaua este format din cablu i gazde, deci nu exist, n acest caz, cu adevrat o subreea. n lume exist multe reele, cu echipamente i programe diverse. Persoanele conectate la o anumit reea doresc adesea s comunice cu persoane racordate la alta. Aceast cerin impune conectarea unor reele diferite, de multe ori incompatibile, ceea ce se realizeaz uneori utiliznd maini numite pori (gateways). Acestea realizeaz conectarea i asigur translatrile necesare, att n termeni de hardware ct i de software. O colecie de reele interconectate este numit inter-reea sau internet. O form comun de inter-reea este o colecie de LAN-uri conectate printr-un WAN.

  • 1.3. Internet vs. internetPentru a evita confuziile, termenul internet este folosit n sensul su generic. Prin contrast, Internet-ul (a se remarca folosirea lui I mare) reprezint un internet mondial specific, care este utilizat pe larg pentru a conecta universiti, birouri guvernamentale, firme i persoane particulare.Creterea numrului reelelor, mainilor i utilizatorilor care se interconectau a continuat exponenial i n 1990 Internet-ul ajunsese s cuprind 3000 de reele i 200.000 de calculatoare.n 1992 a fost ataat gazda cu numrul 1.000.000. n 1995 existau mai multe coloane vertebrale, sute de reele de nivel mediu (adic regionale), zeci de mii de LAN-uri, milioane de gazde i zeci de milioane de utilizatori. S-a estimat c mrimea Internet-ului se dubleaz aproximativ la un an.Substana care ine legat Internet-ul este modelul de referin TCP/IP i stiva de protocoale TCP/IP. TCP/IP face posibile serviciile universale, putnd fi comparat cu sistemul telefonic sau cu adoptarea limii standard pentru cile ferate n secolul 19. Ce nseamn de fapt s fii pe Internet? O main este pe Internet dac folosete stiva de protocoale TCP/IP, are o adres IP i are posibilitatea de a trimite pachete IP ctre toate celelalte maini de pe Internet.

  • 1.4. Modelul de referin TCP/IP

    Posibilitatea de a interconecta fr probleme mai multe tipuri de reele a reprezentat un obiectiv major al proiectrii ARPANET-ului. Noua arhitectur de referin a devenit cunoscut sub denumirea de modelul de referin TCP/IP, dat dup numele celor dou protocoale fundamentale utilizate. Dat fiind ngrijorarea Dod c o parte din gazdele sale, rutere i pori de interconectare ar putea fi distruse dintr-un moment ntr-altul, un alt obiectiv major a fost ca reeaua s poat supravieui pierderii echipamentelor din subreea fr a fi ntrerupte conversaiile existente. Cu alte cuvinte DoD dorea ca, atta timp ct funcionau maina surs i maina destinaie, conexiunile s rmn intacte, chiar dac o parte din maini sau din liniile de transmisie erau brusc scoase din funciune. Mai mult, era nevoie de o arhitectur flexibil, deoarece se aveau n vedere aplicaii cu cerine divergente, mergnd de la transferul de fiiere pn la transmiterea vorbirii n timp real.

  • Toate aceste cerine au condus la alegerea unei reele cu comutare de pachete bazat pe un nivel inter-reea fr conexiuni. Acest nivel, numit nivelul internet este axul pe care se centreaz ntreaga arhitectur. Rolul su este de a permite gazdelor s emit pachete n orice reea i de a face ca pachetele s circule independent pn la destinaie, fiind posibil ca aceasta s se gseasc pe o alt reea. Pachetele pot chiar s soseasc ntr-o ordine diferit fa de cea n care au fost trimise, caz n care, dac se dorete furnizarea lor ordonat, rearanjarea cade n sarcina nivelurilor de mai sus. Nivelul internet definete oficial un format de pachet i un protocol numit IP (Internet Protocol - protocol Internet). Sarcina nivelului Internet este s furnizeze pachete IP ctre destinaie. Problemele majore se refer la dirijarea pachetelor i evitarea congestiei. n consecin, nivelul internet din TCP/IP funcioneaz asemntor cu nivelul reea din OSI (International Standards Organization - Organizaia Internaional de Standardizare).

  • Nivelul situat deasupra nivelului internet din modelul TCP/IP este nivelul transport. Acesta este proiectat astfel nct s permit conversaii ntre entitile pereche din gazdele surs i, respectiv, destinaie. n acest sens au fost definite dou protocoale capt-la-capt. Primul dintre ele, TCP (Transmission Control Protocol - protocolul de control al transmisiei), este un protocol sigur orientat pe conexiuni care permite ca un flux de octei trimii de pe o main s ajung fr erori pe orice alt main din inter-reea. Acest protocol fragmenteaz fluxul de octei n mesaje discrete i paseaz fiecare mesaj nivelului internet. La destinaie, procesul TCP receptor reasambleaz mesajele primite n flux de ieire. TCP trateaz totodat controlul fluxului pentru a se asigura c un emitor rapid nu inund un receptor lent cu mai multe mesaje dect poate acesta s prelucreze. Al doilea protocol din nivel, UDP (User Datagram Protocol - protocolul datagramelor utilizator), este un protocol nesigur, fr conexiuni, destinat aplicaiilor care doresc s utilizeze propria lor secveniere i propriul control al fluxului, i nu pe cele asigurate de TCP. Protocolul UDP este de asemena mult folosit pentru interogri ntrebare-rspuns dintr-un foc, client-server, i pentru aplicaii n care comunicarea promt este mai important dect comunicarea cu acuratee, aa cum sunt aplicaiile de transmisie a vorbirii i a imaginilor video.

  • Deasupra nivelului transport se afl nivelul aplicaie. Acesta conine toate protocoalele de nivel mai nalt. Primele protocoale de acest gen includeau terminalul virtual (TELNET), transferul de fiiere (FTP File Transfer Protocol) i pota electronic (SMTP Simple Mail Transfer Protocol). Protocolul de terminal virtual permite unui utilizator de pe o main s se conecteze i s lucreze pe o main aflat la distan. Protocolul de transfer de fiiere pune la dispoziie o modalitate de a muta eficient date de pe o main pe alta. Pota electronic a fost la origine doar un tip de transfer de fiiere, dar ulterior a fost dezvoltat un protocol specializat pentru acest serviciu. Pe parcursul anilor, la aceste protocoale s-au adugat DNS-ul (serviciul numelor de domenii) pentru stabilirea corespondenei dintre numele gazdelor i adresele reelelor, NNTP Network News Transfer Protocol, protocolul utilizat pentru a transfera articole de tiri, HTTP HyperText Transfer Protocol, folosit pentru aducerea paginilor de Web .a.

  • Sub nivelul internet se afl necunoscutul, nivelul gazd-reea. Modelul de referin TCP/IP nu spune mai nimic despre ce se ntmpl acolo, ns menioneaz c gazda trebuie s se lege la reea, pentru a putea trimite pachete IP, folosind un anumit protocol. Acest protocol nu este definit i variaz de la gazd la gazd i de la reea la reea. Crile i articolele despre TCP/IP rareori discut despre acest protocol.

  • 1.5. Aplicaii Internet

    Tradiional, Internetul a avut patru aplicaii principale. Facilitatea de a compune, trimite i primi pot electronic a existat din primele zile ale ARPANET-ului. Muli oameni primesc zeci de mesaje pe zi i consider pota electronic un important mijloc de a interaciona cu lumea exterioar, alturi de telefon i pota obinuit. Programele de pot electronic sunt astzi disponibile practic pe orice tip de calculator. Grupurile de tiri erau forumuri specializate n care utilizatorii cu un anumit interes puteau s fac schimb de mesaje. Existau mii de grupuri de tiri, pe subiecte tehnice sau non-tehnice incluznd calculatoarele, tiina, divertismentul i politica. Folosind programul Telnet, utilizatorii aflai oriunde pe Internet puteau s se conecteze la distan, la orice main pe care aveau un cont. Copierea fiierelor de pe o main din Internet pe alta (transferul de fiiere) era posibil utiliznd programul FTP.

  • Pn la nceputul anilor 1990 Internet-ul a fost foarte populat cu cercettori din domeniul academic, guvernamental i industrial. O aplicaie nou, WWW (World Wide Web), a schimbat ntreaga situaie i a adus n reea milioane de utilizatori care nu fac parte din mediul academic. Aceast aplicaie inventat de fizicianul Tim Berners Lee, nu a modificat nici una din facilitile existente, n schimb le-a fcut mai uor de folosit. mpreun cu programul de navigare Mosaic, scris la Centrul Naional pentru Aplicaiile Supercalculatoarelor (NCSA National Centre for Supercomputing Application University of Illinois), WWW-ul a fcut posibil ca un site s pun la dispoziie un numr de pagini de informaii coninnd text, poze, sunet, video, n fiecare pagin existnd legturi ctre alte pagini. Printr-un clic pe o legtur, utilizatorul este transportat la pagina indicat de legtur.

  • De exemplu, multe firme au o pagin principal cu intrri care trimit la alte pagini pentru informaii asupra produselor, liste de preuri, reduceri, suport tehnic, comunicare cu angajaii, informaii despre acionari i multe altele. ntr-un timp foarte scurt au aprut numeroase alte tipuri de pagini: hri, tabele cu cotaii la burs, cataloage de bibliotec, programe radio nregistrate i chiar pagini care indicau spre textele complete ale multor cri crora le-au expirat drepturile de autor (Mark Twain, Charles Dickens, etc.). De asemenea, muli oameni au pagini personale (home pages). n primul an de la lansarea Mosaic-ului, numrul de servere WWW a crescut de la 100 la 7000 prefigurnd o cretere continu de-a lungul timpului, cretere ce reprezint fora care va conduce tehnologia i utilizarea Internet-ului n viitor.

  • 2. WWW World Wide Web Web-ul este un context arhitectural pentru accesul la documente, rspndite pe mii de maini n Internet, ntre care exist legturi. n decursul timpului a evoluat de la o aplicaie pentru transmiterea de date utile pentru fizica energiilor nalte la o aplicaie despre care milioane de oameni cred c este Internetul. Popularitatea sa enorm se datoreaz faptului c are o interfa grafic plin de culoare, uor de utilizat de ctre nceptori i n acelai timp ofer o cantitate imens de informaie.

  • 2.1. IstoricWeb-ul (cunoscut i ca WWW) a aprut n 1989 la CERN, Centrul European de Cercetri Nucleare. CERN avea cteva acceleratoare utilizate de echipe mari de cercettori din rile europene pentru cercetri n fizica particulelor. Aceste echipe numrau membrii din peste zece ri. Majoritatea experienelor erau foarte complicate i necesitau ani de pregtire i construire de echipamente. Web-ul a aprut din necesitatea de a permite cercettorilor rspndii n lume s colaboreze utiliznd colecii de rapoarte, planuri, desene, fotografii i alte tipuri de documente aflate ntr-o continu modificare. Propunerea iniial pentru crearea unei colecii de documente avnd legturi ntre ele (web) a fost fcut de fizicianul Tim Berners- Lee, fizician la CERN, n martie 1989. Primul prototip (bazat pe text) era operaional 18 luni mai trziu. n decembrie 1991, s-a fcut o demonstraie public la conferina Hypertex91 n San Antonio, Texas. Aciunea a continuat n anul urmtor, fiind ncununat cu realizarea primei interfee grafice, Mosaic, n februarie 1993.

  • Mosaic a fost att de popular nct un an mai trziu, autorul su, Marc Andreessen, a prsit NCSA (Centrul naional pentru aplicaiile supercalculatoarelor), unde Mosaic-ul a fost dezvoltat, pentru a forma o nou companie, Nescape Communications Corp., care se ocupa cu dezvoltarea de software pentru Web. Cnd Nescape a devenit o companie public n 1995, investitorii, care probabil au crezut c este vorba de un fenomen de tip Microsoft, au pltit 1.5 miliarde de dolari pentru aciunile companiei. Acest record a fost cu att mai neateptat cu ct compania avea un singur produs, opera n deficit i anunase probabilii investitori c nu se ateapt la beneficii n viitorul apropiat.

  • n 1994, CERN i M.I.T. (Massachusetts Institute of Technology) au semnat o nelegere pentru a forma Consoriul World Wide Web, o organizaie care are ca obiectiv dezvoltarea Web-ului, standardizarea protocoalelor i ncurajarea interoperabilitii ntre situri. Berners-Lee a devenit director. De atunci, sute de universiti i companii au intrat n consoriu. M.I.T. coordoneaz partea american a consoriului n timp ce centrul de cercetri francez, INRIA (Institut National de Recherche en Informatique et en Automatique), coordoneaz partea european. Dei exist foarte multe cridespre Web, cel mai bun loc pentru gsirea unor informaii la zi despre el este, n mod natural, chiar Web-ul. Pagina consoriului are adresa http://www.w3.org. Aici, cei interesai pot gsi legturi la pagini care acoper toate documentele i activitile consoriului.

  • 2.2 Aspecte generale privind clientul Deoarece Web-ul este un sistem client-server sunt prezentate n continuare att aspecte referitoare la client (adic utilizator) ct i cele referitoare la server.Din punctul de vedere al utilizatorului, Web-ul const dintr-o colecie imens de documente rspndite n toat lumea, numite pagini. Fiecare pagin poate s conin legturi (indicatori) la alte pagini aflate oriunde n lume. Utilizatorii pot s aleag o legtur (de exemplu prin executia unui clic) care i va aduce la pagina indicat de legtur. Acest proces se poate repeta la nesfrit, fiind posibil s se traverseze n acest mod sute de pagini legate ntre ele. Despre paginile care indic spre alte pagini se spune c utilizeaz hipertext. Paginile pot fi vizualizate cu ajutorul unui program de navigare (browser): Mosaic, Nescape, Internet Explorer, Mozilla, etc. Programul de navigare aduce pagina cerut, interpreteaz textul i comenzile de formatare coninute n text i afieaz pagina, formatat corespunztor, pe ecran. irurile de caractere care reprezint legturi la alte pagini se numesc hiperlegturi, sunt afiate n mod diferit, fiind subliniate i/sau colorate distinct.

  • Pentru a selecta o legtur, utilizatorul va plasa cursorul pe zona respectiv (utiliznd mouse-ul sau tastele sgei de pe tastatur) i comand selecia (cu ajutorul mouse-ului sau apsnd tasta Enter). Dei exist programe de navigare fr interfa grafic, ca de exemplu Lynx, ele nu sunt att de utilizate ca programele de navigare grafice. Pagina adus poate conine legturi care prin selectare aduc alte pagini i aa mai departe. Noua pagin se poate afla pe aceeai main ca i prima sau pe o main aflat undeva pe glob la polul opus. Utilizatorul nu va ti. Aducerea paginilor este realizat de ctre programul de navigare, fr nici un ajutor din partea utilizatorului. Dac utilizatorul se va ntoarce la prima pagin, legturile care au fost deja utilizate vor fi afiate altfel dect celelalte (de exemplu, utiliznd o alt culoare) pentru a fi deosebite de cele care nu au fost nc selectate. Majoritatea programelor de navigare au numeroase butoane i opiuni care ajut navigarea prin Web. Multe au un buton pentru revenirea la pagina anterioar, un buton pentru a merge la pagina urmtoare (acest buton este operaional numai dup ce utilizatorul s-a ntors napoi dintr-o pagin).

  • Majoritatea programelor de navigare au un buton sau un meniu pentru nregistrarea unei adrese de pagin (bookmark) i un altul care permite afiarea unor adrese nregistrate, fcnd astfel posibil revenirea la o pagin cu ajutorul unei simple selecii realizate cu mouse-ul. Paginile pot s fie salvate pe disc sau tiprite. Sunt disponibile numeroase opiuni pentru controlul ecranului i configurarea programului de navigare conform dorinelor utilizatorului.n afar de text obinuit (nesubliniat) i hipertext (subliniat), paginile de Web pot s conin iconie, desene, hri, fotografii. Fiecare dintre acestea poate s fie, n mod opional, legat la alt pagin. Dac se selecteaz unul dintre aceste elemente, programul de navigare va aduce pagina respectiv i o va afia, aa cum se ntmpl n cazul selectrii unui text. Pentru imaginile care sunt fotografii sau hri, alegerea paginii care se aduce poate s depind de regiunea din imagine pe care se face selecia.

  • Nu toate paginile sunt afiabile. De exemplu, pot s existe pagini care conin nregistrri audio, clip-uri video sau ambele. Dac paginile de hipertext sunt combinate cu alte tipuri de pagini, rezultatul se numete hipermedia. Numai o parte din programele de navigare pot s afieze orice tip de hipermedia. Cele care nu pot, verific un fiier de configurare ca s afle cum s trateze datele primite. n mod normal, fiierul de configurare conine numele unui program de vizualizare extern sau al unui program auxiliar pentru aplicaie, care va fi utilizat pentru a interpreta coninutul paginii aduse. Dac un astfel de program nu este specificat, atunci programul de navigare poate s cear utilizatorului s specifice un program de vizualizare. Dac nu exist un astfel de program, utilizatorul poate s indice programului de navigare s salveze pagina adus ntr-un fiier pe disc sau s o abandoneze. Utilizarea unui generator de voce ca program auxiliar permite chiar i utilizatorilor orbi s acceseze Web-ul. Alte programe auxiliare conin interpretoare pentru limbaje speciale pentru Web, permind aducerea i execuia programelor din paginile Web. Acest mecanism permite extinderea funcionalitii Web-ului.

  • Multe pagini de Web conin imagini de dimensiuni mari, pentru care ncrcarea dureaz mult. Unele programe de navigare trateaz problema ncrcrii lente ncrcnd i afind mai nti textul i apoi imaginile. Aceast strategie ofer utilizatorului ceva de citit ct timp ateapt, i n acelai timp i permite s renune la pagina respectiv dac nu este destul de interesant ca s merite ateptarea. O alt strategie este de a oferi opiunea de a dezactiva aducerea i afiarea automat de imagini. Unii creatori de pagini de Web ncearc s trateze altfel problema utilizatorilor plictisii, afind imaginile ntr-un mod special. Mai nti apare rapid o imagine ntr-o rezoluie foarte sczut. Apoi se mbuntete calitatea imaginii. Pentru utilizator apariia imaginii dup cteva secunde, chiar i la o rezoluie sczut, este de multe ori de preferat fa de situaia n care acesta urmrete modul n care se deseneaz imaginea linie cu linie.

  • Unele pagini de Web conin formulare care cer utilizatorului s introduc informaii. Aplicaiile tipice pentru formulare sunt cutri ntr-o baz de date pentru o intrare specificat de utilizator, comandarea unui produs sau participarea la un sondaj de opinie. Alte pagini de Web conin hri care permit utilizatorilor s selecteze poriuni pentru a obine informaii despre anumite zone geografice sau pentru a realiza o mrire sau o micorare a imaginii afiate. Unele programe de navigare utilizeaz discul local pentru a memora temporar paginile pe care le aduc. nainte ca o pagin s fie adus, se verific dac ea nu se gsete deja n memoria temporar. Dac da, se verific numai dac pagina este nc actual. n caz afirmativ, nu mai este necesar readucerea paginii. Ca rezultat, selecia butonului back pentru a vedea pagina precedent are un efect foarte rapid.

  • Pentru a permite utilizarea unui program de navigare n Internet, un calculator trebuie s fie legat la Internet sau cel puin s aib o conexiune la un ruter sau la un alt calculator care este legat direct n Internet. Aceast cerin apare deoarece aducerea unei pagini de ctre un program de navigare presupune stabilirea unei conexiuni TCP cu calculatorul pe care este memorat pagina, i apoi transmiterea unui mesaj, utiliznd conexiunea, pentru a cere pagina.

  • 2.3. Aspecte generale privind serverul

    Pentru orice server de Web un proces ascult portul 80 TCP pentru conexiuni iniiate de ctre clieni (n mod normal programe de navigare). Dup ce s-a stabilit o legtur, clientul trimite o cerere i serverul trimite un rspuns. Apoi conexiunea este eliberat. Protocolul care descrie cererile i rspunsurile permise este HTTP - HyperText Transfer Protocol.Exemplul urmtor arat modul n care funcioneaz serverele de Web: presupunem c un utilizator tocmai a selectat un text sau o iconi care indic spre pagina al crei nume (URL Uniform Resource Locator adresa uniform pentru localizarea resurselor) este http://www.w3.org/Protocols/Specs.html. URL - ul are trei pri: numele protocolului (http), numele calculatorului pe care se gasete pagina (www.w3.org) i numele fiierului care conine pagina (Protocols/Specs.html). Etapele care se parcurg ntre momentul n care se face selecia i afiarea paginii aduse sunt urmtoarele:

  • programul de navigare determin URL (pe baza seleciei);programul de navigare ntreab DNS care este adresa IP pentru www.w3.org;DNS rspunde cu 128.30.52.54;programul de navigare realizeaz conexiunea TCP cu portul 80 al 128.30.52.54;trimite o comand GET Protocols/Specs.html.serverul www.w3.org transmite fiierul Specs.html;conexiunea TCP este eliberat.programul de navigare afieaz textul din Specs.html;programul de navigare aduce i afieaz imaginile din Specs.html.Multe programe de navigare afieaz care este etapa care se execut ntr-o fereastr de stare, n partea de jos a paginii. n acest mod, dac performanele sunt slabe, utilizatorul poate s tie dac este vorba de faptul c DNS nu rspunde, c serverul nu rspunde, sau pur i simplu de congestia reelei n timpul transmisiei paginii.

  • Protocolul de transfer standard utilizat de Web este HTTP - HyperText Transfer Protocol. Fiecare interaciune const dintr-o cerere ASCII (deoarece HTTP este un protocol ASCII ca i SMTP), urmat de un rspuns MIME (Multipurpose Internet Mail Extension extensii de pot cu scop multiplu, generat de problemele care includeau transmisia i recepia de mesaje n limbi cu accente de ex. german i francez, mesaje n alfabete ne-latine de ex. ebraic i rus, mesaje n limbi fr alfabet de ex. chinez i japonez, mesaje care nu conin text deloc de ex. audio i video; MIME definete cinci noi antete de mesaje) conform RFC 822 (RFC Request for Comments cereri pentru comentarii, sunt rapoarte tehnice, pot fi citite on-line i sunt numerotate n ordinea cronologic a crerii lor). Cu toate c utilizarea TCP pentru conexiuni de transport este foarte obinuit, el nu este impus oficial de ctre standard.

  • HTTP este n continu evoluie. Cteva versiuni sunt n utilizare i altele noi sunt n curs de implementare. n continuare sunt prezentate pe scurt noiunile de baz.Protocolul HTTP const din dou tipuri de elemente: mulimea cererilor de la programele de navigare ctre servere i o mulime de rspunsuri care merg n sens invers. HTTP suport dou tipuri de cereri: simple i complete. O cerere simpl este doar o linie GET n care se indic pagina dorit, fr specificarea versiunii de protocol. Rspunsul este format numai din pagin, fr antete, fr MIME, fr nici o codificare.Un exemplu de utilizare a programului Telnet pentru a obine o conexiune TCP pe portul 80 al serverului www.w3.org:se scrie: telnet www.w3.org 80se afieaz: Trying 128.30.52.54.Connected to www.w3.orgdup care se scrie: GET Protocols/Specs.htmlPagina va fi transmis fr nici o indicaie referitoare la coninut. Acest mecanism este necesar pentru compatibilitatea cu versiuni mai vechi.

  • Cererile complete sunt indicate de prezena versiunii de protocol n linia GET. Cererile pot s fie formate din mai multe linii, urmate de o linie alb, care indic sfritul cererii. Prima linie a unei cereri complete conine comanda (GET este una dintre posibiliti), pagina dorit i protocolul/versiunea:se scrie: telnet www.w3.org 80se afieaz: Trying 128.30.52.54.Connected to www.w3.orgse scrie: GET Protocols/Specs.html HTTP/1.0se scrie:Serverul rspunde cu o linie de stare care descrie ce protocol va utiliza (acelai cu al clientului) i codul 200, care arat c operaia decurge corect. Pe linia urmtoare se transmite un mesaj conform RFC 822 MIME. Urmeaz o linie goal i corpul mesajului.

  • Dei HTTP a fost proiectat pentru utilizarea pentru Web, el este mult mai general dect este necesar, avnd o deschidere pentru viitoare aplicaii obiect-orientate. Din acest motiv, primul cuvnt dintr-o cerere complet este numele metodei care se va executa asupra paginii Web (sau a unui obiect n general). Metodele sunt:GET - o cerere de citire a unei pagini de Web;HEAD - o cerere de citire a antet-ului unei pagini de Web;PUT - o cerere de memorare a unei pagini de Web;POST - adugarea la o resurs cu nume (de exemplu o pagin de Web);DELETE - tergerea unei pagini de Web;LINK - conectarea a dou resurse existente;UNLINK - ntreruperea unei conexiuni dintre dou resurse.Pentru numele comenzilor este semnificativ utilizarea literelor mari, de exemplu GET este un nume corect n timp ce get nu.

  • Metoda GET cere serverului s aduc pagina (prin asta nelegem obiect n general), codificat n mod corespunztor n MIME. Dac cererea GET este urmat de un antet If-Modified-Since, serverul transmite datele numai dac ele au fost modificate de cnd s-a fcut aducerea lor. Utiliznd acest mecanism, un program de navigare care trebuie s afieze o pagin memorat poate s cear condiionat aducerea, indicnd timpul de modificare asociat paginii. Dac pagina memorat este nc valid, serverul rspunde indicnd numai faptul c pagina este nc valid, eliminnd astfel consumul de timp presupus de readucere a paginii.Metoda HEAD cere numai antetul mesajului, fr s cear i pagina propriu-zis. Aceast metod poate s fie utilizat pentru a afla cnd s-a fcut ultima modificare, pentru a culege informaii pentru indexare, sau numai pentru a verifica corectitudinea unui URL. Nu exist comenzi HEAD condiionate.

  • Metoda PUT este inversa metodei GET: n loc s se citeasc o pagin, scrie pagina. Aceast metod permite s se construiasc o colecie de pagini de Web pe un server la distan. Corpul cererii conine pagina. Pagina poate s fie codificat utiliznd MIME, caz n care liniile care formeaz comanda PUT pot s includ Content-Type i antete de autentificare, pentru a demonstra c ntr-adevr cel care face cererea are dreptul s o fac.Metoda POST este similar cu metoda PUT. i ea conine un URL, dar n loc s nlocuiasc date existente, noile date se vor aduga ntr-un mod general. De exemplu, se poate transmite un mesaj la un grup de tiri sau aduga un fiier la un sistem de informare n reea. n acest mod se dorete ca Web-ul s preia i funcionalitatea sistemului de tiri USENET.

  • DELETE realizeaz tergerea unei pagini. Ca i la PUT, autentificarea i drepturile de acces joac aici un rol important. Nu exist nici o garanie c operaia reuete, deoarece chiar dac serverul dorete s execute tergerea, fiierul poate s aib atribute care s interzic serverului HTTP s l modifice sau s l tearg.Metodele LINK i UNLINK permit conectarea pentru stabilirea unor conexiuni ntre pagini i alte resurse. Fiecare cerere primete un rspuns constnd din linia de stare i informaii suplimentare (de exemplu o parte sau toat pagina Web). Linia de stare poate s conin codul 200 (operaie terminat corect), sau un cod de eroare, de exemplu 304 (nemodificat), 400 (cerere eronat) sau 403 (interzis).Standardele HTTP descriu n detaliu antetele i corpurile mesajelor.

  • O pagin Web poate s conin referine la alte pagini. Pentru a avea o pagin care s indice spre alt pagin este necesar un mecanism care s permit numirea i regsirea paginilor. n particular, sunt trei ntrebri la care trebuie s se rspund nainte de a se putea afia o pagin:cum se numete pagina?cum este localizat pagina?cum se face accesul la pagin?Soluia aleas care identific paginile ntr-un mod care rezolv toate cele trei probleme este URL(Uniform Resource Locators ). Fiecare pagin are un URL (o adres uniform pentru localizarea resurselor) care funcioneaz ca nume al paginii general valabil. Un URL are trei componente: protocolul, numele DNS al mainii pe care este memorat fiierul i un nume local, care indic n mod unic pagina (de obicei, numele fiierului care conine pagina).

  • Astfel se explic funcionarea hipertextului. Pentru a face o poriune de text selectabil, cel care scrie pagina trebuie s furnizeze dou elemente: textul prin care se face selecia i URL-ul paginii care trebuie adus, dac textul este selectat. Cnd se face selecia, programul de navigare caut numele serverului utiliznd DNS-ul. Pe baza adresei IP a serverului, programul de navigare stabilete o conexiune TCP spre server. Utiliznd aceast conexiune, se transmite numele fiierului utiliznd protocolul specificat.URL-urile au fost proiectate nu numai pentru a permite utilizatorilor s navigheze prin Web, dar i pentru a utiliza FTP, news, Gopher (metod de regsire a informaiei, similar conceptual cu cea utilizat de Web, dar acceptnd numai text i imagini), e-mail i telnet, ceea ce face inutile interfeele specializate pentru aceste protocoale (ftp, news, gopher, mailto, telnet) integrnd astfel ntr-un singur program, navigatorul n Web, aproape toate tipurile de acces n Internet.

  • n ciuda tuturor acestor proprieti, creterea Web-ului a scos n eviden i o slbiciune a metodei utilizrii URL-urilor. Pentru o pagin care este foarte des referit, ar fi de preferat s existe mai multe copii pe servere diferite, pentru a reduce traficul n reea. Problema este c URL-urile nu ofer nici o posibilitate de indicare a unei pagini fr s se specifice unde este localizat pagina respectiv. Nu exist nici o metod pentru a spune ceva de genul: Vreau pagina x, dar nu m intereseaz de unde o aduci. Pentru a rezolva aceast problem i a permite multiplicarea paginilor s-a creat un sistem de URI (Universal Resource Identifiers identificatori universali de resurse).

  • Tehnologii de programare n Internet Curs 2- HTML -

  • Limbajul HTML este o aplicaie a standardului ISO 8879, SGML (Standard Generalized Markup Language limbajul standard generalizat de marcare), specializat pentru hipertext i adaptat la Web. HTML este un limbaj de marcare, un limbaj care descrie cum trebuie s fie formatate textele. Termenul de marcare provine din timpurile vechi, cnd editorii fceau marcaje pe documente pentru a indica tipografului ce font-uri s foloseasc . Limbajele de marcare conin comenzi explicite pentru formatare. De exemplu, n HTML, nseamn nceput de mod aldin i nseamn terminarea utilizrii modului aldin. Avantajul utilizrii unui limbaj de marcare fa de unul n care nu se utilizeaz marcarea explicit const din faptul c este simplu de scris un program de navigare care s interpreteze comenzile de marcare.

  • Documentele scrise ntr-un limbaj de marcare pot s fie comparate cu cele obinute utiliznd procesoare de text de tip WYSIWYG (What You See Is What You Get ce vezi este ceea ce obii), cum sunt MS-Word sau Word-Perfect. Acest tip de sisteme pot s memoreze fiierele utiliznd marcaje ascunse pentru ca formatarea s se poat reface ulterior.Prin standardizarea i includerea comenzilor de marcaj n fiecare fiier HTML, devine posibil ca orice program de navigare s poat s citeasc i s formateze orice pagin Web. Posibilitatea formatrii paginii recepionate este foarte important, deoarece o pagin poate s fie construit pe un ecran cu 1024 x 768 pixeli utiliznd culori codificate cu 24 de bii, dar s-ar putea s fie necesar afiarea ntr-o mic fereastr de pe un ecran cu 640 x 480 pixeli i utiliznd culori codificate pe 8 bii. Procesoarele de text de tip WYSIWYG comerciale nu pot s fie utilizate pentru Web, deoarece limbajul lor intern de marcare, dac exist, nu este standardizat ntre furnizori, calculatoare i sisteme de operare.De asemenea ele nu pot s realizeze reformatarea pentru diferite dimensiuni de ferestre sau rezoluii. Pe de alt parte, o serie de procesoare de text permit salvarea documentelor n format HTML n loc de formatul propriu (de exemplu, MS Word).

  • Ca i HTTP, HTML este ntr-o evoluie continu. Cnd programul Mosaic era singurul program de navigare, limbajul utilizat de el, HTML 1.0 , reprezenta standardul de facto. Cnd au aprut programe de navigare noi, a fost necesar un standard oficial Internet i aa au aprut HTML 2.0, HTML 3.0, HTML 4.0, versiunile evolund odat cu eforturile de cercetare de a aduga noi faciliti versiunilor anterioare, incluznd tabele, instrumente, formule matematice, forme avansate de descriere a stilului (pentru descrierea organizrii paginilor i definirea semnificaiilor simbolurilor) etc. DHTML Dynamic HTML animaia paginilor Web; XHTML extensie a HTML pentru obinerea compatibilitii cu XML Extensible Markup Language;XHTML+TIME XHTML Timed Interactive Multimedia Extension extensie a limbajului XHTML care ofer documentelor Web suport pentru temporizare i sincronizare multimedia.

  • Standardizarea oficial a limbajului HTML este fcut de Consoriul WWW, dar diferii furnizori de programe de navigare au adugat o serie de extinderi proprii. Aceti furnizori sper ca cei care construiesc pagini de Web s utilizeze aceste extensii, astfel nct cei care vor s citeasc aceste pagini s aib nevoie de programe de navigare care tiu s interpreteze extensiile respective. Astfel de abordri ngreuneaz sarcina standardizrii limbajului HTML.

  • 2.1 Caracteristici de baz O pagin Web conine o zon de cap i o zon de corp, cuprinse ntre marcajele (tag-uri) i , dar majoritatea programelor de navigare ignor absena acestor marcaje. Capul este cuprins ntre marcajele i , iar corpul ntre marcajele i . Comenzile cuprinse ntre aceste marcaje se numesc directive. Majoritatea marcajelor HTML au acest format pentru a indica nceputul a ceva i pentru a marca sfritul. Majoritatea programelor de navigare au o opiune View Source (afiarea sursei). Selectarea acestei opiuni afieaz pagina curent n format HTML n loc de forma interpretat.Marcajele pot s fie scrise cu litere mici sau mari. Adica i nseamn acelai lucru, dar prima form este de preferat pentru cititorii umani.

  • Cum este dispus textul n documentul HTML este nesemnificativ. Programele de navigare ignor spaiile i trecerile la rnd nou, deoarece textul trebuie s fie formatat pentru a corespunde zonei de afiare curente. Corespunztor, se pot utiliza spaii pentru a face documentele HTML mai uor de citit, ceea ce ar fi necesar pentru majoritatea documentelor. Liniile albe nu pot s fie utilizate pentru separarea paragrafelor, deoarece sunt pur i simplu ignorate. Este necesar utilizarea unor marcaje explicite.Unele marcaje au parametri (care au nume), de exemplu . Pentru fiecare marcaj, standardul HTML ofer o list a parametrilor care pot s fie utilizai, dac este cazul i care este semnificaia lor. Deoarece parametrii au nume, ordinea n care se dau valorile parametrilor nu este semnificativ.

  • Din punct de vedere tehnic, documentele HTML sunt scrise utiliznd setul de caractere ISO 8859-1 Latin-1, dar pentru utilizatorii ale cror tastaturi suport numai codul ASCII, se pot utiliza secvene de caractere pentru reprezentarea caracterelor speciale cum ar fi . Lista caracterelor speciale este precizat n standard. Toate ncep cu caracterul & i se termin cu ;. De exemplu, produce iar produce . Deoarece i & au semnificaii speciale, pot s fie reprezentate numai utiliznd secvenele speciale de caractere corespunztoare, < > i & .Principalul element din zona de cap este titlul care este cuprins ntre i , dar aici pot s apar i alte tipuri de informaii. Titlul nu este afiat pe pagin. Unele programe de navigare l utilizeaz pentru a eticheta fereastra n care se afieaz pagina respectiv. Exemplul 0.

  • 2.2 Marcaje HTML

    - genereaz titlurile de capitole; n este o cifr ntre 1 i 6. este titlul cel mai important, este cel mai puin important. Depinde de programul de navigare s prezinte aceste titluri n mod diferit pe ecran. De obicei, titlurile cu numr mai mic vor fi afiate utiliznd caractere mai mari. Programul de navigare poate s utilizeze culori diferite pentru fiecare nivel de titlu. De obicei, pentru titlurile marcate cu se utilizeaz litere mari scrise cu aldine cu cel puin o linie liber nainte i dup. Corespunztor, pentru titlurile marcate cu , se utilizeaz caractere mai mici cu mai puin spaiu lsat nainte i dup.Exemplul 1.

  • i - marcaje utilizate pentru a indica modurile aldin i respectiv cursiv. Dac programul de navigare nu poate s afieze aceste tipuri de caractere, va utiliza un alt mod de a le reprezenta, de exemplu utiliznd diferite culori. n loc de a utiliza stiluri fizice, autorii pot s utilizeze stiluri logice, cum sunt (definiie), (evideniere), (evideniere accentuat) i (variabile de program). Stilurile logice sunt definite ntr-un document numit pagin de stil. Avantajul utilizrii unei pagini de stil const n faptul c la schimbarea unei definiii, se vor schimba toate variabilele, nlocuind de exemplu cursivele printr-un font cu dimensiuni constante.Exemplul 2.Exemplul 3.

  • - indic nceputul unei liste neordonate. Elementele individuale, care sunt marcate n surs cu , sunt reprezentate precedate de buline (). O variant a acestui mecanism este care descrie o list ordonat. Cnd se utilizeaz acest marcaj, textele precedate de sunt numerotate de ctre programul de navigare.Exemplul 4.Exemplul 5., , - indic o separare ntre diferitele pri ale textului. Formatul precis este descris n pagina de stil. foreaz trecerea la linie nou. De obicei programele de navigare nu insereaz o linie liber dup . reprezint un nceput de paragraf, pentru care se va insera o linie nou i eventual se va face o identare. foreaz trecerea la linie nou i deseneaz o linie orizontal.Exemplul 6.

  • - arat c pe poziia curent din pagin se va include o imagine. Marcajul poate s aib o serie de parametri. Parametrul SRC indic URL-ul (sau URI-ul) imaginii. n practic, toate programele de navigare accept fiiere n format GIF sau JPEG. ALLIGN este un parametru pentru care controleaz modul n care se aliniaz imaginea fa de limita de jos a textului (TOP, MIDDLE, BOTTOM), ALT, care furnizeaz textul afiat n locul imaginii dac utilizatorul dezactiveaz opiunea de afiare a imaginilor. (anchor) i -marcajul de hiper-legtur cu parametri HREF (URL-ul), NAME (numele hiper-legturii) i METHODS (metodele de acces). Textul cuprins ntre i este afiat. Dac este selectat, atunci se utilizeaz hiper-legtura pentru a se aduce o nou pagin. n locul textului se poate pune i un marcaj , caz n care, cu un click pe imagine, se va activa legatura.Exemplul 7.

  • - marcajul pentru tabele HTML. O tabel HTML este format din una sau mai multe linii, fiecare fiind format din una sau mai multe celule. Celulele pot s conin diferite tipuri de informaii, inclusiv text, figuri i chiar tabele. Celulele pot s fie alipite, de exemplu, un titlu poate s se ntind pe mai multe coloane. Autorii paginilor au control asupra modului n care se face afiarea, inclusiv alinierea, stilul bordurii, marginile celulelor, dar programul de navigare este cel care hotrte de fapt cum se face afiarea. - furnizeaz un titlu tabelei - Table Row, linie n tabel, preced fiecare linie - Table Header, titlu de coloan, marcheaz celulele individuale - Table Data, date n tabel.n tabele se pot utiliza i alte marcaje ce includ posibilitatea de a specifica alinieri orizontale sau verticale ale celulelor, alinierea n cadrul celulei, margini, gruparea pe celule, uniti i altele.Exemplul 8.

  • i - marcheaz un formular. Formularele conin casete i butoane care permit utilizatorilor s completeze informaii sau s fac selecii i apoi s transmit informaiile la proprietarul paginii. n acest scop se utilizeaz marcajul . Acesta are o varietate de parametrii care determin mrimea, tipul i modul de afiare a casetei utilizate. Cele mai obinuite sunt cmpuri n care utilizatorul poate s introduc text, casete care pot s fie selectate, hri active, butoane SUBMIT. Textele care nu sunt incluse ntre marcaje sunt afiate. ntr-un formular poate s fie utilizat orice marcaj obinuit (de exemplu, marcajul care indic programului de navigare s afieze ceea ce urmeaz pe o linie nou, chiar dac mai este loc pe linia curent, dnd astfel creatorului paginii posibilitatea s controleze dispunerea textului sau cum arat formularul pe ecran). Cteva atribute pentru :

  • NAME un nume pentru variabila n care va fi memorat irul introdus de utilizator.TYPE - tipul casetei care poate fi: TEXT - este tipul implicit, deci nu trebuie specificat TYPE=TEXT,RADIO - pentru specificarea butoanelor radio ce au proprietatea c selecia unuia dintre ele deselecteaz pe toate celelalte care fac parte din acelai grup; modul de afiare depinde de interfaa grafic pe care o utilizeaz. Depinde de programul de navigare s aleag modul de afiare care corespunde sistemului de ferestre utilizat (de exemplu, Windows). Dac exist mai multe grupuri de butoane radio, ele se difereniaz prin cmpul NAME i nu printr-un domeniu static de genul i . CHECKBOX casete de selecie

  • PASSWORD funcioneaz la fel ca o caset TEXT numai c nu se face afiarea caracterelor introduseTEXTAREA similar unei casete TEXT numai c va conine mai multe linii.SUBMIT buton, cnd este selectat, informaia introdus de ctre utilizator este transmis la calculatorul de pe care provine formularul. Similar altor tipuri, SUBMIT eate un cuvnt cheie pe care l nelege programul de navigare. Programul de navigare interpreteaz i butonul RESET care selectat aduce formularul la coninutul original.HIDDEN este utilizat numai ca rezultat, nu poate s fie selectat sau modificat; de exemplu, atunci cnd se parcurg o serie de pagini pentru care s-au fcut selecii, seleciile anterioare pot s fie de tip HIDDEN, pentru a mpiedica modificarea lor.IMAGE este utilizat pentru hri active (sau alte imagini selectabile); dac un utilizator execut clic pe o astfel de imagine, coordonatele (x, y) ale punctului selectat (adic poziia curent a indicatorului mouse-ului) sunt memorate n variabile i formularul este n mod automat transmis posesorului pentru prelucrri ulterioare.

  • VALUE utilizat pentru a arta care buton a fost apsat, irul asociat ca valoare a butonului va fi asociat variabilei indicate de NAME. irul VALUE reprezint n cazul folosirii cu butonul SUBMIT eticheta butonului i se afieaz. De asemenea, toate casetele pot s aib valori. Pentru casetele TEXT, coninutul cmpului VALUE este afiat odat cu formularul, dar utilizatorul poate s l modifice sau s l tearg. Casetele CHECKBOX i RADIO pot s fie iniializate, utiliznd ns un parametru numit CHECKED (deoarece parametrul VALUE ofer un text dar nu indic o selecie).

  • Formularele pot s fie transmise n trei moduri: utiliznd butonul SUBMIT, executnd clic pe o hart activ sau utiliznd tasta ENTER pentru un formular care conine numai un singur cmp de TEXT. Cnd se transmite un formular, trebuie s se execute o aciune. Aciunea corespunztoare este specificat n parametrii marcajului :ACTION precizeaz URL-ul sau URI-ul pentru a indica unde se face transmitereaMETHOD specific ce metod se utilizeaz, valoarea sa determin modul n care variabilele din formular sunt transmise napoi la posesorul paginii. Pentru GET, se utilizeaz un truc, i anume se adaug la URL, separndu-le prin semne de ntrebare. Aceast abordare poate conduce la URI-uri formate din mii de caractere. Totui, pentru c este simpl, aceast soluie este frecvent utilizat. Dac se utilizeaz metoda POST, corpul mesajului va conine variabilele din formular i valorile lor. Pentru a separa cmpurile se utilizeaz caracterul &; caracterul + reprezint spaiu; astfel irul va fi transmis la server ca o singur linie. Dac un CHECKBOX nu este selectat el este omis din ir. Este problema serverului s interpreteze irul respectiv.Exemplul 9.

  • JavaScript este un limbaj de programare simplu de tip script, pentru definirea comportamentului elementelor dintr-o pagin Web. Nu este acelai lucru cu mult mai complexul limbaj de programare Java, care ofer un mediu sofisticat i robust pentru crearea unei multitudini de aplicaii. JavaScript nu este diferit de fiierele BAT de comenzi secveniale, cu care poate e familiarizat un utilizator din DOS sau scripturile Unix de tip shell. JavaScript poate specifica, n mod obinuit n doar cteva rnduri, rspunsurile la aciuni sau evenimente cum ar fi deschiderea unei pagini, deplasarea mouse-ului ntr-un anumit punct sau tergerea unui anumit cmp dintr-un formular. Atributul LANGUAGE al marcajului definete limbajul de scripting; o funcie JavaScript se definete n seciunea HEAD a documentului; apelul unei funcii JavaScript se face din corpul (BODY) al documentului, dintr-un script (deci ntr-un marcaj ) ...... ). Este posibil ca un script JavaScript s fie memorat ca un fiier separat (cu extensia .js) i numele lui s fie dat ca valoare a atributului SRC al marcajului .

  • Fiierul se memoreaz ntr-un director la server, numele fiierului dat ca valoare a atributului SRC va cuprinde i calea (relativ fa de fiierul HTML sau absolut), i fiierul de script va fi descrcat la client o dat cu pagina HTML care l include. Toate tipurile de butoane admise n limbajul HTML: buton simplu, buton (caset) de validare, radio buton, buton de trimitere (submit), buton de resetare (reset) genereaz unul sau mai multe evenimente care pot fi tratate folosind scripturi JavaScript. De exemplu, evenimentul click se desfoar atunci cnd utilizatorul execut clic pe un element al unui formular sau pe o legtur i e tratat de ctre handler-ul de eveniment onClick. Similar, evenimentul submit se desfoar atunci cnd utilizatorul transmite un formular i e tratat de ctre handler-ul de eveniment onSubmit.

  • De asemenea, elementele HTML text simplu (text) i ariile de text (textarea) genereaz patru evenimente JavaScript: change, atunci cnd utilizatorul modific valoarea unui text, zon de text sau element de selectare (handler de eveniment onChange), select atunci cnd utilizatorul selecteaz cmpul de intrare al unui element de formular (onSelect), focus atunci cnd se intr n caseta respectiv, apsnd pe mouse-ul poziionat n caset, altfel spus, atunci cnd utilizatorul atribuie unui element de formular control de intrare, blur atunci cnd utilizatorul elimin controlul de intrare de pe un element al unui formular adic cnd se prsete caseta respectiv, apsnd pe mouse-ul poziionat n afara casetei, select atunci cnd utilizatorul selecteaz cmpul de intrare al unui element de formular, mouseover atunci cnd utilizatorul deplaseaz indicatorul mouse-ului deasupra unei legturi sau a unei ancore. Elementul de text password nu genereaz evenimente.

  • Pentru a face posibile pagini Web puternic interactive - limbajul i interpretorul Java.Java a aprut atunci cnd civa programatori de la Sun Microsystems au ncercat s dezvolte un limbaj nou de programare destinat aparaturii electronice. Ulterior a fost reorientat spre WWW. Dei Java a utilizat multe idei i sintaxa de la C i C++, el este un limbaj nou, orientat pe obiecte, incompatibil cu ambele.

  • Principala idee de a utiliza Java pentru pagini Web interactive este c o pagin Web poate s indice spre un mic program scris n Java, numit applet. Dac este ntlnit de un program de navigare, applet-ul este adus pe maina client i se face execuia sa ntr-o manier sigur. Trebuie s fie imposibil pentru applet s scrie i s citeasc fiiere la care nu are drept de acces. Trebuie s fie imposibil pentru applet s introduc virui sau s produc alte stricciuni. Din aceste motive, dar i pentru a realiza portabilitatea pe diferite calculatoare, applet-urile sunt compilate dup ce sunt scrise i depanate, producndu-se un cod intermediar. Paginile web vor indica ctre astfel de programe ntr-o manier similar n care se indic paginile. Cnd este adus un applet, el este executat interactiv ntr-un mediu sigur. Un motiv pentru care s-a dorit includerea applet-urilor Java n pagini de Web a fost acela c Java permite ca paginile web s fie interactive. De exemplu, o pagin care conine o tabl pentru ah poate s joace un joc cu utilizatorul. Programul de joc (scris n Java) este adus mpreun cu pagina de Web.

  • Un alt exemplu, formulare complicate (de exemplu, de tip formular de calcul) pot s fie afiate, utilizatorul completnd intrri i programul calculnd alte intrri practic instantaneu. Un alt motiv pentru execuia unui applet pe maina clientului este posibilitatea de a aduga animaie i sunete la paginile de Web fr a utiliza programe de vizualizare externe. Sunete pot s fie produse atunci cnd se aduce o pagin, ca muzic de fundal, sau cnd apar anumite evenimente (de exemplu, cnd se execut clic pe o imagine reprezentnd un animal, acesta scoate un sunet caracteristic). Acelai lucru este valabil pentru animaie. Deoarece appletul se execut local, chiar dac este interpretat, el poate s scrie peste tot ecranul (sau numai peste o parte a ecranului) n orice mod, cu o vitez foarte mare (comparat cu un script de tip cgi-bin de la distan).

  • Sistemul Java este format din trei pri: un compilator Java cod main virtual (bytecod), un program de navigare care nelege applet-uri, un interpretor de cod main virtual. Programatorul scrie applet-ul n Java i l compileaz. Pentru a include produsul compilrii ntr-o pagin Web, se utilizeaz un nou marcaj , respectiv . Cnd programul de navigare ntlnete acest marcaj, aduce applet-ul compilat specificat de atributul CODE de pe serverul de pe care a fost adus pagina (sau, dac un alt atribut, CODEBASE, a fost utilizat, de la URL-ul specificat). Programul de navigare transmite apoi applet-ul interpretorului local de cod pentru execuie (sau l interpreteaz dac are un interpretor intern). Atributele WIDTH i HEIGHT ale marcajului dau dimensiunea n pixeli a ferestrei implicite pentru applet. ntr-un fel, marcajul este analog cu marcajul . n ambele cazuri, programul de navigare se duce i preia un fiier pe care l transmite unui interpretor local pentru a-l afia ntr-o zon limitat de pe ecran. Dup aceea continu prelucrarea paginii de Web.

  • Astfel, un document HTML coninut ntr-un fiier este o pagin Web static, cu coninut care nu se modific dect dac se modific fiierul nsui. Dac se dorete ca documentul de rspuns s conin informaii care se modific n timp sau n funcie de datele trimise de client, este necesar generarea dinamic a paginilor Web, sub form de documente HTML al crui coninut se creaz programatic, nainte de a fi trimise clientului. Pentru generarea paginilor HTML dinamice, serverul Web transmite cererea clientului unui program executabil sau script, care genereaz pagina de rspuns, iar serverul o transmite apoi clientului.Generarea dinamic a paginilor HTML se realizeaz prin diferite metode, dintre care cele mai cunoscute sunt: CGI (Common Gateway Interface interfa comun de conversie), PHP (Personal Hypertext Preprocessor), componente servlet, scripturi JSP (JavaServer Pages).

  • Tehnologii de programare n Internet Curs 3- Tehnologia Java -

  • 3.1 Introducere

    La nceputul anilor 90, firma Sun dezvolt un program de cercetare numit Green pentru creearea unor obiecte casnice detepte capabile s comunice unele cu altele. S-a ncercat folosirea lui C++ ca limbaj de dezvoltare dar s-a ajuns la concluzia c acesta este depit de cerinele proiectului. A fost creat un nou limbaj numit Oak.n paralel cu dezvoltarea limbajului, n 1993, NCSA lanseaz primul browser Web grafic, Mosaic 1.0. Firma Sun care ncerca fr suces s-i vnd produsele Green i Oak n domeniul televiziunii interactive, se reorienteaz ctre Web. Echipa proiecteaz un nou browser numit Web Runner capabil s ruleze aplicaiile dezvoltate n Oak. Oak i schimb numele n Java.Firma Netscape ajut lansarea limbajului Java prin cumprarea licenei i integrarea lui n browserele Netscape. Mai mult dect un limbaj de programare Java se dezvolt ca o tehnologie ce ofer suport pentru dezvoltarea de aplicaii distribuite independente de platform. Firme dezvoltatoare de software au cumprat licena Java de la firma Sun pentru dezvoltarea propriilor produse n tehnologia Java.

  • 3.2 Tehnologia JavaLa baza dezvoltrii unui program Java st mediul de dezvoltare pus la dispoziie de firma Sun, JDK (Java Developers Kit). Acest mediu conine biblioteci de clase Java, aa numitele package-uri care formeaz JavaAPI (Java Application Programming Interface) i un set de utilitare necesare compilrii, testrii, execuiei i documentrii unei aplicaii Java.JavaAPI i JVM (Java Virtual Machine) formeaz platforma (mediul de execuie) Java, JRE (Java Runtime Environment). n sens generic, platforma este un mediu hardware sau software n care se execut un program. Cele mai populare platforme (Windows, Linux) pot fi descrise ca fiind o combinaie ntre un sistem de operare i un sistem hardware. Platforma Java este o platform exclusiv software care ruleaz deasupra altor platforme bazate pe hardware. Java Virtual Machine a fost portat pe diverse platforme bazate pe hardware.

  • Crearea unei aplicaii Java presupune parcurgerea urmtoarelor etape:editarea fiierului surs (text n limbaj Java) cu extensia .java (folosind orice editor de text)fiierul surs se transmite ca i parametru n programul javac.exe (Java Language Compiler)compilatorul Java transform fiierul surs n fiiere cu extensia .class (limbaj intermediar, bytecode, ir de octei). Bytecode-ul este un cod independent de platforma spre deosebire de codul nativ (C++). Codul nativ este codul care dup compilare i link-editare ruleaz pe o platform hardware specific. Bytecode-ul se poate interpreta ca fiind instruciuni n limbaj main pentru JVM. Este portabil, acelai bytecode poate fi rulat pe orice calculator care are instalat JVM, fie c este vorba de o staie Windows, Linux, etc.

  • Pentru execuia unei aplicaii Java se folosete utilitarul java.exe (Java Interpreter) cruia i se transmite ca parametru numele fiierului rezultat n urma compilrii (fr extensia .class). Prin lansarea n execuie a acestui utilitar se pornete de fapt JVM. Poate fi folosit doar pentru execuia aplicaiilor Java stand-alone.

    Exemplul 1.

    /** Programul afiseaza textul Hello i se incheie */public class Hello{public static void main (String args[]){System.out.println(Hello);}}

  • Pentru rularea applet-urilor se folosete utilitarul appletviewer.exe. Acesta lanseaz n execuie o JVM, un browser minimal de Web care suport spre deosebire de alte browsere Web toate caracteristicile Java ale mediului JDK din care provine. Programul preia ca parametru fiierul cu extensia .html ce conine eticheta de conectare cu clasa Java.Exemplul 2// HelloWorld.javaimport java.awt.*;import java.applet.*;public class HelloWorld extends Applet { public void paint(Graphics g) { g.drawString("Hello World !", 10, 10); }}

  • 3.3 Structura JVMComponentele JVM sunt:Class Loader aduce fiierele bytecode necesare execuiei programului, fiiere ce se pot gsi pe orice calculator dintr-o reea.Bytecode Verifier verific fiierele bytecode pentru ca acestea s respecte setul de reguli Java. Dac un fiier nu se conformeaz acestor reguli este respins.Interpreter + Java RunTime analizeaz i transform fiecare instruciune Java-bytecode (cod main JVM) n instruciuni ale mainii reale.

  • JVM este un nivel suplimentar deasupra platformei de lucru (hardware + S.O.), de aceea execuia unui program Java este mai lent dect a unui cod nativ (Java lent dar portabil, C++ rapid dar neportabil). Soluia este execuia programului prin intermediul unui compilator JIT (Just in Time) care transform din primul moment ntreg programul Java n instruciuni procesor ceea ce duce la mrirea vitezei de execuie a programului.Garbage Colector este componenta ce se ocup de eliberarea zonelor de memorie alocate i care nu mai sunt utilizate de program. Specificaiile JVM nu impun un algoritm de dezalocare, lsnd la latitudinea celui ce implementeaz JVM stabilirea lui.Security Manager este componenta ce asigur respectarea unor restricii de securitate impuse de lucrul cu sistemele deschise.

  • 3.4 Tipuri de programe Java

    Aplicaiile de sine stttoare (stand-alone) sunt programe independente care ruleaz direct pe platforma Java.Applet-urile sunt programe care ruleaz n browsere Web care suport Java. n Java se pot realiza i applet-aplicaii (appletcations) care, n funcie de context pot fi tratate ca applet de ctre un browser sau appletviewer sau ca aplicaie grafic de ctre interpretorul Java.Servlet-urile sunt aplicaii asemntoare cu applet-urile prin faptul c ruleaz n interiorul unei alte aplicaii care suport mediul Java i respect regulile impuse de aceasta. Aici aplicaia este un server de Web.

  • 3.5 Limbajul Java - caracteristici

    Structura i gramatica unui program Java se aseamn foarte mult cu cea a unui program C++. De aceea pentru cei care cunosc C++ este uor s nvee Java mai ales c Java este considerat un limbaj de programare orientat pe obiecte mai simplu dect C++.Descrierea fcut de firma Sun n The Java Language: A White Paper: Java: un limbaj simplu, orientat pe obiecte, distribuit, interpretabil, robust, sigur, independent de arhitectur, portabil, de nalt performan, cu faciliti multithreading i dinamic.

  • Simplu: Fa de C++, Java aduce o serie de simplificri. Java nu admite n textul surs instruciuni preprocesor (linii care ncep cu #) i nu are fiiere header (linii care ncep cu #include). Construciile struct i union sunt eliminate. n Java nu exist motenirea multipl i suprancrcarea operatorilor. n Java nu exist pointeri. Toate obiectele Java sunt alocate dinamic (folosind new), transparent fa de programator. Programatorul nu trebuie s se ocupe de eliberarea memoriei (nu exist delete). Mecanismul de garbage collection (mecanism de colectare i eliberare a zonelor de memorie nefolosite) rezolv problema dezalocrii memoriei fr intervenia programatorului.

  • Orientat pe obiecte: spre deosebire de C++, Java este pur obiectual (n ntregime bazat pe obiecte). n Java, orice, cu excepia tipurilor de date primitive (byte, short, int, long, char, float, double, boolean) este un obiect. Clasele sunt aranjate ntr-o structur ierarhic, avnd n vrf o clas rdcin, Object. n Java se pot crea clase i instane ale acestora (obiecte), se pot ncapsula informaiile, se pot moteni atributele i metodele de la o clas la alta. ns n locul motenirii multiple, Java ofer o facilitate, numit interface care permite definirea unui anumit comportament pentru o clas de obiecte, ce poate fi altul dect cel definit de clasa de baz printr-o implementare specific a unei interfee. ntr-un fiier Java nu exist cod n exteriorul unei clase. n Java nu exist funcii i variabile globale. Rmn ns atributele i metodele statice definite n clase (sunt partajate de toate instanele unei clase). Ca extensie a conceptului de clas Java introduce conceptul de package. Un pachet este un set de clase care asigur mpreun un anumit gen de prelucrri. De exemplu, java.lang ofer clasele i metodele de baz ale limbajului. Clasa Object este definit n acest pachet.

  • Distribuit: Pachetul java.net ofer suport pentru dezvoltarea aplicaiilor Java de reea. De exemplu, clasa URL permite aplicaiilor Java s acceseze obiecte aflate n Internet. Java suport att conectivitate fiabil (TCP) prin intermediul clasei Socket ct i conectivitate nefiabil (UDP) prin clasele Datagram* (DatagramChannel, DatagramPacket).

  • Interpretabil: Compilatorul Java genereaz, pentru fiecare surs compilat, un cod echivalent care se preteaz la prelucrare prin tehnica interpretrii. Ca reprezentare intern, codul generat este format dintr-un ir de octei (bytecode). Limbajul interpretativ este unul universal, nu un cod nativ al unei anumite maini. Pentru a executa un program Java este nevoie de un interpretor care s prelucreze octeii generai de compilator. Forma de generare a codului de octei este independent (neutr) fa de o anumit main. De aceea codul poate fi executat pe orice main care dispune de un interpretor Java generic pentru un cod al unei maini virtuale, JVM.

  • Robust: Java a eliminat o serie de erori de programare tipice, ceea ce face posibil scrierea unui soft mai stabil dect al altor limbaje. Au fost eliminate o serie de deficiene ntlnite nu numai la C, dar i la C++ (motenite la rndul lor de la C). Java cere declararea metodelor, deci nu suport stilul C de declarare implicit. Cea mai semnificativ extindere este cea legat de modelele de memorie. Deoarece Java nu suport pointeri, se elimin posibilitatea suprapunerii zonelor de memorie i alterarea datelor. Java este un limbaj puternic tipizat,ceea ce permite efectuarea unei serii de controale nc din timpul compilrii. Java mrete gradul de siguran a codului. Pe lng verificarea la compilare (prezent n majoritatea limbajelor) mai exist un nivel de verificare la rulare. Accesul la tablourile Java este verificat la rulare, eliminnd astfel posibilitatea accesului accidental sau maliios n afara domeniului tabloului. Se controleaz automat i necondiionat depirea de indici n timpul execuiei. Deasemenea tablourile nu se pot parcurge prin intermediul unor pointeri ca n C++. Pointerii lipsesc din limbajul Java, mpreun cu aritmetica pointerilor, eliminndu-se astfel una din principalele surse de erori din C++.

  • n plus, eliberarea memoriei ocupate de obiecte i tablouri se face automat prin mecanismul de garbage collection evitndu-se astfel ncercrile de eliberare multipl a unei zone de memorie. n Java legarea funciilor se face n timpul execuiei i informaiile de compilare sunt disponibile pn n momentul rulrii aplicaiei. Acest mod de lucru face ca sistemul s poat determina n orice moment neconcordane ntre tipul referit la compilare i cel referit n timpul execuiei evitndu-se astfel posibile intruziuni ruvoitoare n sistem prin intermediul unor referine falsificate. n acelai timp Java detecteaz referinele nule dac acestea sunt folosite n operaii de acces. Conversiile ntre tipurile de date sunt limitate, evitndu-se astfel scrierea nepermis a unor zone de memorie. Java are pus la punct un mecanism de tratare a excepiilor i a erorilor sistem.

  • Siguran : Este unul din aspectele de baz n Java mai ales pentru faptul c permite lucrul n reea. Prin mecanismul de applet Java permite aducerea i execuia de cod aflat oriunde n Internet. Fr un mecanism de siguran, nu s-ar putea evita crearea de virui, implantarea de coduri ostile sau invadarea sistemului de fiiere local. Toate mecanismele de siguran se bazeaz pe premiza c nimic nu poate prezenta siguran. Securitatea merge mn n mn cu robusteea. Deoarece gestiunea memoriei nu este la dispoziia utilizatorului, el nu poate intra n alte zone de memorie de pe maina local. Altfel spus, mediul de execuie Java poate fi configurat pentru a proteja reeaua local, fiierele i celelalte resurse ale mainii pe care ruleaz o aplicaie Java. Java nu este perfect sigur, este un limbaj cu securitate ridicat. Java verific la fiecare ncrcare codul prin mecanisme de CRC (cyclic redundancy check) i prin verificarea operaiilor disponibile pentru fiecare set de obiecte. Variabilele protejate dintr-un obiect Java nu pot fi accesate fr a avea drepturile necesare, verificarea fiind fcut n timpul execuiei.

  • Independent de platform : Aceast independen de platform se impunea, innd cont de ideea de lucru n sisteme distribuite. De fapt un program Java lucreaz pe o singur main, maina virtual Java (Java Virtual Machine - JVM). Programele executabile Java (bytecodes) rezultate n urma compilrii surselor .java au nevoie de un interpretor (parte component a JVM) specific platformei pe care se execut (Windows, Unix). Folosirea interpretorului Java duce ns la mrirea timpului de execuie. Soluia este compilarea just-in-time (JIT) care transform ntregul program Java n program main nainte de execuia lui. Compilatoarele just-in-time lucreaz ca i interpretoarele, convertete bytecode-ul Java n cod executabil pe maina real, dar conversia nu se face pas cu pas, la nivel de instruciune ci la nivel de program, crescnd considerabil viteza de execuie a programului Java.

  • Portabil : Neutralitatea fa de arhitectur este numai unul dintre aspectele portabilitii. Un altul este acela ca limbajul s nu permit aspecte dependente de implementare (de exemplu, reprezentarea diferit a tipului int pe diverse implementri C). n acest scop, Java specific lungimea n octei a fiecrui tip de date ca i o mrime aritmetic obinuit. Mediul Java este portabil pe noile sisteme de operare, deoarece compilatorul Java este scris tot n Java, n timp ce executabilul (run time system) este scris n ANSI C (standard publicat de American National Standards Institute pentru limbajul de programare C), cu respectarea specificaiilor POSIX (Portable Operating System Interface standard specificat de IEEE pentru definirea de API pentru software compatibil cu versiuni de sisteme de operare tip Unix, standard care ns se aplic oricrui sistem de operare).

  • Performan nalt : Ca limbaj interpretativ, viteza unui program Java este mai mic dect a unui cod generat (echivalent) C sau C++. n GUI (Graphic User Interface) sau aplicaii de reea, procesorul central e absent suficient de mult ca aceast diferen de vitez s nu fie relevant per ansamblu, iar portabilitatea s ncline balana n favoarea Java. Din alt punct de vedere, toate sistemele de operare folosesc o parte interpretat (deci lent), de exemplu interpretoarele de comenzi (tip shell). Pentru situaii critice, Java, prin compilarea just in time, transform codul de octei Java ntr-un cod main nativ la fel de bun ca i similarul lui C (C++).

  • Multithreading : este cel care permite ca un program s execute mai multe sarcini aparent n acelai timp, utiliznd mai multe fire de execuie (thread-uri). ntr-o aplicaie de reea bazat pe GUI (de exemplu utilizarea unui browser Web) procesorul se ocup simultan de controlul animaiei, calcule, gestiunea memoriei, etc. Java ofer acest tip de servicii. Astfel pachetul java.lang ofer clasa Thread care suport creare, oprire, execuie, control i sincronizare thread. Operarea cu multithreading n C, C++ presupune ca programatorii s-i implementeze mecanisme proprii de blocare a unor seciuni critice i de partajare a unor resurse critice. Primitivele furnizate de Java reduc substanial acest efort.

  • Dinamic : Java este proiectat s se adapteze la mediul n care se afl. Java este un limbaj dinamic prin faptul c multe decizii privind evoluia programului se iau n momentul rulrii, la run-time. Dat fiind faptul c multe din aplicaiile Java sunt preluate de pe Internet sub form de applet-uri chiar n momentul execuiei lor, deci din reea, aceste programe pot fi actualizate s fac fa noilor cerine, utilizatorul dispunnd n orice moment de cea mai nou variant. Spre deosebire de C++, Java poate determina, n faza de execuie, crei clase aparine un anumit obiect. Este astfel posibil legarea dinamic a claselor (polimorfism dinamic). Bibliotecile de clase n Java pot fi reutilizate foarte uor. Problema fragilitii superclasei este rezolvat mai bine ca n C++. n C++ dac o superclas este modificat, trebuie recompilate toate subclasele acesteia pentru c obiectele au o alt structur n memorie. n Java aceast problem este rezolvat prin legarea trzie a variabilelor, late binding, doar la execuie. Regsirea variabilelor se face prin nume i nu printr-un deplasament fix. Dac superclasa nu a ters o parte dintre vechile variabile i metode, ea va putea fi refolosit fr s fie necesar recompilarea subclaselor acesteia. Se elimin astfel necesitatea actualizrii aplicaiilor, generat de apariia unei noi versiuni de bibliotec aa cum se ntmpl, de exemplu, cu toate celelalte ierarhii C++.

  • O alt caracteristic foarte important a limbajului Java este interconexiunea cu browsere WWW. Acesta este i unul din avantajele care a fcut limbajul Java att de popular. Multe din firmele care dezvolt browsere WWW au implementat maina virtual Java n interiorul acestor browsere. Un browser compatibil Java permite ca o categorie special de aplicaii, numite applet-uri s fie transferate de la server-ul WWW pentru a fi executate la client, adic pe maina unde se execut browser-ul WWW. Conexiunea browser-ului cu applet-urile se face prin intermediul etichetelor HTML, HTML (HyperText Markup Language) fiind limbajul de scriere a paginilor Web.Continuare: limbajul de programare Java- curs4.

  • Tehnologii de programare n Internet Curs 4- Limbajul Java -

  • 4.1 Tipuri de date n Java

    Tipul de date primitive reprezint acele date care sunt incluse implicit n limbajul Java. Specificarea unui astfel de tip de dat se face prin unul din urmtoarele cuvinte cheie:

    byte ntreg cu semn pe 8 bii cu val. min -128 i val. max. 127short ntreg cu semn pe 16 bii cu val. min -32768 i val. max. 32767int ntreg cu semn pe 32 bii cu val. min. -2147483648 i val. max. 2147483647long ntreg cu semn pe 64 bii cu val. min. -263 i val. max. 263 -1char ntreg fr semn pe 16 bii cu val. min. 0 i val. max. 65535 (reprezentare caractere UNICODE nu complement fa de 2 ca cele anterioare)

  • float virgul mobil pe 32 bii double virgul mobil pe 64 biiboolean val. boolean , 0 false, nonzero-true; intern JVM reprezint boolean ca i intNumele unei variabile de tip primitiv reprezint chiar valoarea ei.

    Tipuri de date referin : tablourile, clasele, interfeele. Numele unei astfel de variabile reprezint adresa unde se afl variabila respectiv i nu valoarea variabilei.

    Tipul de date null corespunde unei referine nule.

  • 4.2 Tipul clas

    Conceptul de clas permite programatorului crearea propriilor structuri de date, n funcie de cerinele programului i asocierea unor funcii la aceste structuri de date. Declararea unei clase:

    class nume_clasa {declaratii atribute;declaratii constructori;declaratii metode;}

  • Declaraia unui atribut:

    [modificator] tip_atribut nume_atribut [=expresie_initializare];

    Modificatorul reprezint un cuvnt cheie care specific anumite proprieti ale atributului (public, final, static, etc.).

    Exemple:

    int a;public long b=15;private PunctBidim p=new PunctBidim(5,5);

  • Declaraia unei metode:

    [modificator] tip_return nume_metoda ([lista_parametrii]){corp metoda}

    Exemplu:public int adunare(int x, int y){return x+y;}

  • Declaraia unui constructor:

    [modificator] nume_clasa([lista_parametrii]){corp constructor}

    Exemplu:

    class A{int a;public A(){a=0;}public A(int x){a=x;}}

  • La fel ca metodele constructorii pot fi redefinii.

    Pentru apelul unui constructor din altul se poate folosi cuvntul cheie this. Prin this se refereniaz obiectul curent, numele obiectului nefiind vizibil din interiorul lui.

    Corpul constructorului poate conine doar ca prim linie instruciunea:

    this(list_parametrii);

    prin care se poate apela un alt constructor cu o list de parametrii diferit de cea a contructorului curent.

  • Un obiect (instan a clasei) este o variabil de tip clasa respectiv. Pentru a putea folosi un obiect acesta trebuie declarat, instaniat i iniializat:

    [modificator] nume_clasa nume_obiect[=expresie_initializare];

    Instanierea i iniializarea unui obiect se fac simultan prin operatorul new urmat de numele clasei i parametrii constructorului ntre paranteze.

    Exemple:

    public PunctBidim p1, p2=new PunctBidim(5,5);p1=new PunctBidim();

    Dup crearea unui obiect acesta poate fi folosit accesndu-se atributele publice prin:

    nume_obiect.nume_atribut

    sau metodele publice prin:

    nume_obiect.nume_metoda(param1, param2...).

  • 4.3 Variabile n JavaO variabil reprezint un nume ce refereniaz o valoare, o locaie n care este stocat un anumit tip de dat. Tipuri de variabile: variabile atribut (ale unei clase), variabile locale (declarate ntr-un bloc de cod delimitat de {}), variabile parametru de metod (care apar n lista parametrilor din declaraia unei metode).

  • Domeniul de vizibilitate al variabilei (scope) este domeniul n care variabila poate fi accesat.

    ntr-un domeniu de vizibilitate nu pot exista dou variabile cu acelai nume. O variabil de tip atribut are domeniul de vizibilitate cel puin ntreaga clas. O variabil parametru de metod are domeniul de vizibilitate n interiorul metodei.

    O variabil local are domeniul de vizibilitate doar ntre acoladele blocului n care a fost declarat.

  • Un acelai nume de variabil poate fi utilizat pentru a referenia date diferite aflate n domenii de vizibilitate diferite.

    ntr-un domeniu de vizibilitate inclus n alt domeniu de vizibilitate nu se poate utiliza un identificator deja folosit n domeniul mai larg. O situaie special apare cnd domeniul de vizibilitate mai larg este o clas i domeniul mai mic este un domeniu inclus n clas (putem avea o variabil atribut i o variabil local cu acelai nume). Utilizarea numelui respectiv n domeniul mai mic refereniaz variabila definit n domeniul mai mic.

  • Exemplu:

    class A{int x=0; //x variabila atribut dom.viz. clasapublic int f(int y){ //y variabila parametru dom.viz metodaint z; //z variabila locala dom.viz. blocul in care e definita, metodaz=x+y; //toate variabilele sunt vizibilefor(int i=0;i

  • public void g(){int x=2;System.out.println(x);//afis. 2 refer. var. locala nu variabila atribut}

    public void h(){int x=2;for(int x=0;x

  • nainte de a utiliza o variabil aceasta trebuie s primeasc o valoare. JVM va da oricrei variabile atribut neiniializate de tip numeric valoarea 0, unei variabile atribut de tip boolean valoarea false i unei variabile atribut de tip referin valoarea null. Variabilele locale nu sunt iniializate implicit de JVM.Exemplu:

    class A{int x;public void f(){int y;System.out.println(x);//afiseaza 0System.out.println(y);//eroare la compilare}}

  • 4.4 Membrii statici ai unei claseUtilizarea modificatorului static la declararea unui atribut/unei metode face ca atributul/metoda s aparin clasei i nu unui obiect anume.Astfel atributul/metoda poate fi accesat() att prin numele clasei ct i prin numele unei obiect, instan a clasei respective.

  • Pentru un atribut static se aloc o singur dat memorie la prima iniializare a clasei, ulterior toate obiectele de tipul clasei respective vor partaja acelai membru static, aceeai referin la aceeai zon de memorie.

    Metodele statice nu pot utiliza alte atribute i metode ale clasei respective care nu sunt statice.

    Prima iniializare a clasei se petrece cnd:un obiect din acea clas este instaniat (aici, iniializarea clasei are loc naintea creerii obiectului)se apeleaz o metod static declarat n cadrul claseise acceseaz un membru static al clasei.

    Atributele nestatice se iniializeaz doar la instanierea (crearea) unui obiect dup ce au fost iniializate atributele statice (dac exist); atributele nestatice exist separat pentru fiecare obiect creat.

  • 4.5 Specificatorii de acces pentru clase, atribute, metode, constructori

  • 4.6 Package JavaUn package Java este o bibliotec de clase i interfee Java.

    Numele complet al unei clase conine i numele package-ului cruia i aparine.

    Se poate folosi doar numele clasei (fr a include i numele package-ului) cu condiia s existe instruciunea:

    import nume_package.*;

    pentru a putea utiliza ntreg package-ul sau

    import nume_package.nume_clasa;

    pentru a putea utiliza doar clasa respectiv.

  • Un package se poate crea doar n prima linie de cod a programului prin instruciunea:

    package nume_package;

    Dac nu se declar explicit un package se creeaz un package fr nume.

  • 4.7 Interfee JavaO interfa Java este o colecie de metode abstracte (fr corp) i contante.

    Interfeele Java au aprut ca soluie pentru inexistena n Java a motenirii multiple.

    Astfel o clas Java poate s moteneasc o singur clas dar poate s implementeze oricte interfee.

    Nu se poate instania o interfa (se poate declara o variabil ca fiind de tipul interfeei dar nu se poate instania cu new).

  • Declarare:

    [modificator] interface nume_interfata[extends alta_interfat_1,alta_interfata_2...]{lista_metode;

    lista_constante;}

    Modificatorul poate fi unul din cuvintele cheie public sau abstract (redundant, o interfa este abstract prin definiie).

    O interfa poate moteni mai multe interfee (extends).

    O clas care implementeaz o interfa (implements) trebuie s suprascrie toate metodele acelei interfee.

    class nume_clasa implements nume_interfata_1, nume_interfata_2..{ .}

  • 4.8 Motenirea n JavaPrincipiul motenirii
  • Prin motenire toi membrii clasei de baz se regsesc n clasa derivat care ns mai poate aduga i alii.

    Accesul la membrii motenii i la cei nou adugai e determinat de modificatorii de acces.

    Prin operaia de derivare constructorii clasei de baz nu se motenesc. Dar fiecare constructor al clasei derivate apeleaz un constructor al clasei de baz. Acest apel se poate face implicit (adugat de compilator) sau explicit.

    Apelul contructorului clasei de baz se face asemntor cu apelul altui contructor al clasei curente, folosind ns cuvntul cheie super n loc de this i doar ca prim linie n corpul constructorului:

    super (lista_parametrii);

  • Consecin: cele dou instruciuni (super i this) nu pot exista simultan.

    Dac nu se face explicit apelul super, compilatorul adaug un apel implicit al constructorului fr argumente al clasei de baz.

    La instanierea unei clase derivate dintr-o clas de baz ordinea iniializrilor este urmtoarea:iniializarea atributelor statice ale clasei de baziniializarea atributelor statice ale clasei derivateiniializarea atributelor nestatice ale clasei de bazapelul constructorului clasei de baziniializarea atributelor nestatice ale clasei derivateapelul constructorului clasei derivate.

  • O clas derivat poate declara o metod cu acelai nume i cu acelai numr i tip al parametrilor formali cu a unei metode din clasa de baz (tehnica se numete suprascriere overriding tehnica redefinirii metodelor - overloading). La apelul respectivei metode dintr-un obiect de tip clas derivat se va executa metoda din clasa derivat. Accesul la metoda clasei de baz din interiorul clasei derivate se face prin:

    super.nume_metoda();

    Metodele statice i atributele nu pot fi suprascrise. n clasa derivat poate exista o metod static sau un atribut cu acelai nume cu al unei metode sau al unui atribut din clasa de baz dar nu le substituie pe acestea din urm. Deosebirea fa de metode este c la upcasting atributul clasei de baz i nu cel al derivatei este accesat.

  • Exemplu:

    public class A{String sir="ceva";public static void main(String args[]){A oba=new A();B obb=new B();System.out.println(oba.sir); //cevaSystem.out.println(obb.sir);//altcevaoba=obb;System.out.println(oba.sir);//ceva}}class B extends A{String sir="altceva";}

  • 4.9 Modificatorul finalPoate fi utilizat att n declaraia unei clase ct i n declaraia unui atribut sau a unei metode.

    n cazul declaraiei unei clase, modificatorul final se folosete atunci cnd se dorete ca nici o alt clas s nu mai poat fi derivat din aceasta.

    n cazul declaraiei unei metode, modificatorul final mpiedic o clas derivat s suprascrie aceast metod.

    n cazul n care un atribut este declarat final, acesta odat iniializat nu va mai putea fi modificat rmnnd constant pe tot parcursul programului.

  • 4.10 Modificatorul abstractClasele declarate abstract sunt acele clase care nu pot fi instaniate. Sunt utilizate pentru a modela concepte abstracte, tipuri de date abstracte pentru care nu se justific crearea obiectelor de acel tip (de exemplu, tipul FormaGeometrica).

    O clas abstract poate fi utilizat doar ca i clas de baz ntr-o relaie de motenire.

    Nu este posibil instanierea unei clase abstracte:

    FormaGeometrica f=new FormaGeometrica();produce un mesaj de eroare la compilare.

  • Poate fi declarat o variabil ca fiind de tipul unei clase abstracte:

    FormaGeometrica f;

    i apoi la instanierea ei s folosim o clas derivat (de exemplu subtipurile Cerc, Dreptunghi, etc. ale tipului FormaGeometrica:

    f=new Cerc();

    O clas abstract poate s conin una sau mai multe metode abstracte. O metod abstract este o metod pentru care s-a declarat header-ul fr a defini ns i corpul ei:

    public abstract void nume_metoda();

    n cazul n care o metod a unei clase este declarat abstract i clasa trebuie s fie declarat abstract.Clasa care este derivat dintr-o clas ce conine o metod abstract trebuie s defineasc acea metod (corpul metodei) sau s fie declarat la rndul ei abstract.

    (completare prin lucrrile de laborator)

  • Tehnologii de programare n Internet Curs 5- Appleturi Java -

  • 5.1 Programarea interfeelor grafice n JavaPentru crearea unei interfee grafice, Java pune la dispoziia utilizatorului o serie de componente grafice.

    Acestea fac parte din pachetul java.awt (exceptnd componenta Applet).

    AWT = Abstract Window Toolkit.

    Utiliznd aceste componente, programatorul le poate combina construind n funcie de cerine o anumit interfa grafic (GUI Graphical User Interface).

  • D.p.v. al utilizatorului, componentele grafice AWT sunt caracterizate printr-o form (ceea ce se vede pe ecran) i prin faptul c rspund la aciuni ale mouse-ului, ale tastaturii, etc.

    D.p.v. al programatorului, o component mai este caracterizat de o serie de atribute interne ce conin informaii legate de starea ei.

    La aciunea utilizatorului asupra unei componente grafice, JVM, avnd n spate sistemul de operare, genereaz evenimente (obiecte Java ce conin informaii despre aciunea utilizatorului asupra componentei). Evenimentele (obiectele) sunt mai departe transmise de JVM unor metode specifice (handler-e) din cadrul programului. Aceste metode sunt scrise de programator, sunt asociate cu componentele grafice i sunt responsabile de aciunea programului la apariia evenimentelor.

  • Exist o varietate de evenimente dar o anume component grafic rspunde doar la anumite tipuri de evenimente .

    Clasele pentru evenimente (ActionEvent, ItemEvent etc.) ca i interfeele de ascultare (ActionListener, ItemListener) sunt coninute n pachetul java.awt.event, dar unele dintre superclasele acestora sunt coninute n alte pachete.

    n diagrama urmtoare a claselor, toate clasele care nu au nscris n numele lor numele pachetului apartin pachetului java.awt.event.

    Apoi n tabel se prezint evenimentele generate de diferite componente i interfeele pe care clasele delegat trebuie s le implementeze pentru fiecare tip de eveniment.

  • n cea mai mare parte a lor, componentele grafice AWT sunt derivate din clasa Component .

    Este o clas abstract care declar o serie de metode general valabile pentru componentele grafice Java. Printre acestea exist metode legate de poziionarea i dimensiunea componentei, de culorile utilizate pentru afiare, de tipurile de fonturi utilizate, de analiz a conexiunii cu alte componente, etc.

    Fiecare component grafic are asociat un context grafic definit prin clasa Graphics. Aceast clas conine o serie de metode de desenare. n cazul n care se dorete crearea altor componente dect a celor existente, programatorul poate desena componenta utiliznd contextul grafic al acesteia, suprascriind metoda paint().

  • O categorie aparte de componente de tip Component sunt componentele derivate din clasa Container. Aceste componente sunt componente grafice care ofer structura necesar pentru combinarea componentelor grafice, permind includerea altor componente n interiorul lor.

    Clasa LayoutManager implementeaz un set de reguli n vederea aranjrii unor componente grafice n interiorul unui container.

    Pachetul java.awt mai pune la dispozitia programatorului o serie de clase pentru lucrul cu meniuri: MenuComponent, MenuBar, MenuItem, Menu , CheckboxMenuItem, PopupMenu.Clasa MenuComponent este o clasa abstracta, si este radacina tuturor claselor de tip meniu. Este derivata direct din clasa Object si nu din clasa Component.

  • Pentru crearea unui handler e nevoie de implementarea unei anumite interfee (n funcie de tipul evenimentului) ntr-o anumit clas. n tabelul urmator sunt prezentate interfetele de ascultare (delegat) (si clasele adaptor corespunzatoare) precum si metodele fiecarei interfete (sau adaptor).

    Asocierea handler-component se face prin intermediul unor metode ale clasei Component n funcie de tipul evenimentului (de exemplu, addMouseListener(), addActionListener())

  • Pentru dezvoltarea interfetelor grafice AWT se parcurg mai multe etape:

    Se porneste cu crearea unuia sau mai multor containere (obiecte din clase derivate din clasa Container).Se creaza controalele (cu operatorul new; de exemplu new Button(), new Choice()).

    Controalele create se insereaza ntr-un container, folosind functii add() ale containerului.Modul de inserare a controalelor trebuie sa tina seama de administratorii de pozitionare impliciti sau noi creati ai containerului.

    Se prevede modul de tratare a evenimentelor generate de componente.

  • Pentru tratarea unui eveniment se creaz mai nti o clas care implementeaz interfaa care contine functia de tratare a acelui eveniment si se defineste aceasta functie.

    Dupa aceasta, se instantiaza un obiect din acea clasa (daca nu exista unul deja instantiat) si se asociaza cu componenta al carui eveniment trebuie sa l trateze.

    Asocierea se realizeaza prin apelul unei metode a componentei respective. Aceste metode de asociere (de delegare) sunt prevazute n clasele componentelor n functie de evenimentele pe care acestea le pot genera si au un nume compus din particula add, urmata de numele interfetei de delegare a evenimentului.

  • De exemplu, pentru asocierea unui obiect delegat cu tratarea evenimentului de apasare a unui buton se foloseste metoda (clasei Button) addActionListener(); pentru asocierea unui obiect delegat cu tratarea evenimentelor de fereastra se foloseste metoda (clasei Window) addWindowListener() etc.De exemplu, pentru tratarea evenimentului de apasare a unui buton (ActionEvent) se creaza o clasa care implementeaza interfata corespunzatoare acestui ev