EliteHackers
SALUT 2022!! NE-AM MUTAT PE DISCORD ! Vrei să inviți un prieten? [T]eoria [H]aosului [C]ontrolat - https://discord.com/invite/U4HBCHzm7r Acesta aste link-ul oficial al acestui server.
Lista Forumurilor Pe Tematici
EliteHackers | Reguli | Inregistrare | Login

POZE ELITEHACKERS

Nu sunteti logat.
Nou pe simpatie:
Dulceata_ta36 pe Simpatie.ro
Femeie
19 ani
Galati
cauta Barbat
28 - 53 ani
EliteHackers / Programare / JAVA Moderat de Ad_Infinitum, AntiKiler, Puscas_marin, r3v
Autor
Mesaj Pagini: 1
kooze
Moderator

Inregistrat: acum 17 ani
Postari: 57
DOWNLOAD =>>

                                                                         Introducere

Scurt istoric
Ce este Java?
Despre această carte
Convenţii utilizate în această carte
Sugestii şi reclamaţii
Alte surse de informaţii
Mulţumiri

              Scurt istoric

              Limbajul Java împreună cu mediul său de dezvoltare şi execuţie au fost proiectate pentru a rezolva o parte dintre problemele actuale ale programării. Proiectul Java a pornit cu scopul declarat de a dezvolta un software performant pentru aparatele electronice de larg consum. Aceste echipamente se definesc ca: mici, portabile, distribuite şi lucrând în timp real. De la aceste aparate, ne-am obişnuit să cerem fiabilitate şi uşurinţă în exploatare.

               Limbajul luat iniţial în considerare a fost C++. Din păcate, atunci când s-a încercat crearea unui mediu de execuţie care să respecte toate aceste condiţii s-a observat că o serie de trăsături ale C++ sunt incompatibile cu necesităţile declarate. În principal, problema vine din faptul că C++ este prea complicat, foloseşte mult prea multe convenţii şi are încă prea multe elemente de definiţie lăsate la latitudinea celor care scriu compilatoare pentru o platformă sau alta.

               În aceste condiţii, firma Sun a pornit proiectarea unui nou limbaj de programare asemănător cu C++ dar mult mai flexibil, mai simplu şi mai portabil. Aşa s-a născut Java. Părintele noului limbaj a fost James Gostling care vă este poate cunoscut ca autor al editorului emacs şi al sistemului de ferestre grafice NeWS. Proiectul a început încă din 1990 dar Sun a făcut publică specificaţia noului limbaj abia în 1995 la SunWorld în San Francisco.

                Numele iniţial al limbajului a fost Oak, numele unui copac care creşte în faţa biroului lui James Gostling. Ulterior, s-a descoperit că numele fusese deja folosit în trecut pentru un alt limbaj de programare aşa că a fost abandonat şi înlocuit cu Java, spre deliciul programatorilor care iubesc cafenelele şi aromele exotice.

                 Ce este Java?

                 În primul rând, Java încearcă să rămână un limbaj simplu de folosit chiar şi de către programatorii neprofesionişti, programatori care doresc să se concentreze asupra aplicaţiilor în principal şi abia apoi asupra tehnicilor de implementare a acestora. Această trăsătură poate fi considerată ca o reacţie directă la complexitatea considerabilă a limbajului C++.

               Au fost îndepărtate din Java aspectele cele mai derutante din C++ precum supraîncărcarea operatorilor şi moştenirea multiplă. A fost introdus un colector automat de gunoaie care să rezolve problema dealocării memoriei în mod uniform, fără intervenţia programatorului. Colectorul de gunoaie nu este o trăsătură nouă, dar implementarea acestuia în Java este făcută inteligent şi eficient folosind un fir separat de execuţie, pentru că Java are încorporate facilităţi de execuţie pe mai multe fire de execuţie. Astfel, colectarea gunoaielor se face de obicei în timp ce un alt fir aşteaptă o operaţie de intrare-ieşire sau pe un semafor.

               Limbajul Java este independent de arhitectura calculatorului pe care lucrează şi foarte portabil. În loc să genereze cod nativ pentru o platformă sau alta, compilatorul Java generează o secvenţă de instrucţiuni ale unei maşini virtuale Java. Execuţia aplicaţiilor Java este interpretată. Singura parte din mediul de execuţie Java care trebuie portată de pe o arhitectură pe alta este mediul de execuţie cuprinzând interpretorul şi o parte din bibliotecile standard care depind de sistem. În acest fel, aplicaţii Java compilate pe o arhitectură SPARC de exemplu, pot fi rulate fără recompilare pe un sistem bazat pe procesoare Intel.

              Una dintre principalele probleme ale limbajelor interpretate este viteza de execuţie, considerabil scăzută faţă de cea a limbajelor compilate. Dacă nu vă mulţumeşte viteza de execuţie a unei astfel de aplicaţii, puteţi cere mediului de execuţie Java să genereze automat, plecând de la codul maşinii virtuale, codul specific maşinii pe care lucraţi, obţinându-se astfel un executabil nativ care poate rula la viteză maximă. De obicei însă, în Java se compilează doar acele părţi ale programului mari consumatoare de timp, restul rămânând interpretate pentru a nu se pierde flexibilitatea. Mediul de execuţie însuşi este scris în C respectând standardele POSIX, ceea ce îl face extrem de portabil.

              Interpretorul Java este gândit să lucreze pe maşini mici, precum ar fi procesoarele cu care sunt dotate aparatele casnice. Interpretorul plus bibliotecile standard cu legare dinamică nu depăşesc 300 Kocteţi. Chiar împreună cu interfaţa grafică totul rămâne mult sub 1 Moctet, exact ca-n vremurile bune.

               Java este orientat obiect. Cu el se pot crea clase de obiecte şi instanţe ale acestora, se pot încapsula informaţiile, se pot moşteni variabilele şi metodele de la o clasă la alta, etc. Singura trăsătură specifică limbajelor orientate obiect care lipseşte este moştenirea multiplă, dar pentru a suplini această lipsă, Java oferă o facilitate mai simplă, numită interfaţă, care permite definirea unui anumit comportament pentru o clasă de obiecte, altul decât cel definit de clasa de bază. În Java orice element este un obiect, în afară de datele primare. Din Java lipsesc funcţiile şi variabilele globale. Ne rămân desigur metodele şi variabilele statice ale claselor.

              Java este distribuit, având implementate biblioteci pentru lucrul în reţea care ne oferă TCP/IP, URL şi încărcarea resurselor din reţea. Aplicaţiile Java pot accesa foarte uşor reţeaua, folosindu-se de apelurile către un set standard de clase.

              Java este robust. În Java legarea funcţiilor se face în timpul execuţiei şi informaţiile de compilare sunt disponibile până în momentul rulării aplicaţiei. Acest mod de lucru face ca sistemul să poată determina în orice moment neconcordanţa dintre tipul referit la compilare şi cel referit în timpul execuţiei evitându-se astfel posibile intruziuni răuvoitoare în sistem prin intermediul unor referinţe falsificate. În acelaşi timp, Java detectează referinţele nule dacă acestea sunt folosite în operaţii de acces. Indicii în tablourile Java sunt verificaţi permanent în timpul execuţiei şi tablourile nu se pot parcurge prin intermediul unor pointeri aşa cum se întâmplă în C/C++. De altfel, pointerii lipsesc complet din limbajul Java, împreună cu întreaga lor aritmetică, eliminându-se astfel una din principalele surse de erori. În plus, eliberarea memoriei ocupate de obiecte şi tablouri se face automat, prin mecanismul de colectare de gunoaie, evitându-se astfel încercările de eliberare multiplă a unei zone de memorie.

              Java este un limbaj cu securitate ridicată. El verifică la fiecare încărcare codul prin mecanisme de CRC şi prin verificarea operaţiilor disponibile pentru fiecare set de obiecte. Robusteţea este şi ea o trăsătură de securitate. La un al doilea nivel, Java are incorporate facilităţi de protecţie a obiectelor din sistem la scriere şi/sau citire. Variabilele protejate într-un obiect Java nu pot fi accesate fără a avea drepturile necesare, verificarea fiind făcută în timpul execuţiei. În plus, mediul de execuţie Java poate fi configurat pentru a proteja reţeaua locală, fişierele şi celelalte resurse ale calculatorului pe care rulează o aplicaţie Java.

             Limbajul Java are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de execuţie, inclusiv primitive de sincronizare între firele de execuţie. Acest suport este independent de sistemul de operare, dar poate fi conectat, pentru o performanţă mai bună, la facilităţile sistemului dacă acestea există.

             Java este dinamic. Bibliotecile de clase în Java pot fi reutilizate cu foarte mare uşurinţă. Cunoscuta problemă a fragilităţii superclasei este rezolvată mai bine decât în C++. Acolo, 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 târzie variabilelor, doar la execuţie. Regăsirea 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ă fără să fie necesară recompilarea subclaselor acesteia. Se elimină astfel necesitatea actualizării aplicaţiilor, generată de apariţia unei noi versiuni de bibliotecă aşa cum se întâmplă, de exemplu, cu MFC-ul Microsoft (şi toate celelalte ierarhii C++).
       
             Despre această carte

            Această carte a fost scrisă pentru a veni în sprijinul acelora care doresc să programeze în limbajul Java. Spre deosebire de majoritatea cărţilor existente la ora actuală pe piaţa internaţională, nu prea multe de altfel, cartea de faţă se focalizează asupra facilităţilor pe care le oferă noul limbaj, lăsând pe planul al doilea descrierea bibliotecilor standard, impresionante de altfel, definite de către Sun şi colaboratorii acestuia. Alegerea a fost făcută din convingerea că bibliotecile vin şi trec, se dezvoltă, în timp ce limbajul rămâne.

                 Cartea se adresează în acelaşi timp începătorilor şi programatorilor profesionişti. Începătorii vor găsi în prima parte noţiuni fundamentale necesare oricărui programator. Profesioniştii, în schimb, vor găsi o referinţă completă a limbajului Java.

                  Prima parte a cărţii îşi introduce cititorul pas cu pas în fundamentele funcţionării şi programării calculatoarelor tratând la un nivel accesibil noţiuni precum memoria şi procesorul, datele şi instrucţiunile, clasele de obiecte împreună cu trăsăturile fundamentale ale programării orientate obiect.

                   Partea a doua a cărţii prezintă limbajul Java în detaliu împreună cu o serie de exemple simple. Această parte este concepută pentru a fi în acelaşi timp o introducere în sintaxa Java pentru cei care au programat deja şi o introducere în constrângerile sintactice şi semantica unui limbaj de programare pentru începători.

                  Partea a treia a cărţii prezintă câteva dintre aspectele fundamentale ale programării în Java precum aplicaţiile, apleturile, pachetele de clase, firele de execuţie şi tratarea excepţiilor. Această parte este concepută de sine stătătoare şi poate servi ca exemplu de programare în Java. Fiecare secţiune din această parte conţine exemple extinse de aplicaţii scrise în Java, comentate în sursă şi în afara acesteia.

                 Cititorul începător în ale programării trebuie să parcurgă cartea de la început până la sfârşit pentru a putea intra treptat în tainele programării în general şi ale limbajului Java.

                 Pentru cititorii avansaţi, prima parte nu constituie un interes major şi poate fi sărită fără implicaţii majore în înţelegerea materialului din părţile următoare. Aceşti cititori pot să treacă direct la partea a treia pentru a urmări exemplele şi abia după aceea să revină la partea a doua pentru informaţii detaliate asupra sintaxei şi facilităţilor Java. Partea a doua poate fi folosită şi pe post de referinţă.

                  O singură excepţie: ultima secţiune din prima parte introduce noţiunea de interfaţă, puţin cunoscută programatorilor în alte limbaje decât Java. Este util ca această secţiune să fie consultată de către toţi cititorii, indiferent de nivelul de pregătire în care se află.

                  Convenţii utilizate în această carte

                  Pentru descrierea sintacticii limbajului Java, am apelat la următoarele convenţii obişnuite de reprezentare a regulilor gramaticale:
Cuvintele rezervate ale limbajului Java sunt scrise în caractere îngroşate, ca: while, do, final.
Cuvintele care ţin locul construcţiilor reale ale programului sunt scrise cu caractere oblice, ca în:
if(Condiţie) Instrucţiune1 else Instrucţiune2

                Condiţie, Instrucţiune1 şi Instrucţiune2, care apar în descriere, trebuiesc înlocuite cu condiţiile adevărate, respectiv cu instrucţiunile adevărate care trebuiesc executate în funcţie de condiţie. De exemplu, o construcţie reală, care respectă descrierea de mai sus ar putea fi:
if( i < j )
min = i;
else
min = j;
O listă de termeni separaţi prin caractere |, se poate înlocui cu oricare dintre termenii listei.

De exemplu:
public | private | protected

înseamnă că în locul acestui termen poate să apară oricare dintre cuvintele rezervate specificate în listă, public, private sau protected.
Un termen pus între paranteze pătrate este opţional. De exemplu, în descrierea:

Tip NumeVariabilă [Iniţializator] ;

Partea de Iniţializator poate să lipsească.
Dacă, după un termen apare caracterul *, acesta reprezintă faptul că termenul se poate repeta de un număr arbitrar de ori, eventual niciodată. De exemplu, în:

class NumeClasă ClauzăImplements*

caracterul * reprezintă faptul că termenul notat prin ClauzăImplements se poate repeta de un număr arbitrar de ori, eventual niciodată.

Pe marginea din stânga a paginii, veţi întâlni o serie de simboluri grafice, cu specificaţie precisă, care vă vor permite să navigaţi mai uşor în interiorul cărţii. Iată semnificaţia acestora:

Semnul din stânga reprezintă faptul că în paragraful marcat introduce definiţia unui nou termen. Termenul nou introdus este reprezentat în interiorul semnului şi este scris cu caractere oblice în textul paragrafului. În cazul de faţă cuvântul nou introdus este cuvântul definiţia. Atunci când găsiţi o trimitere la un paragraf pentru explicaţii, căutaţi acest semn pe margine pentru a găsi mai repede definiţia noţiunii dorite.

Semnul din stânga reprezintă o trimitere înapoi către o noţiune deja prezentată în partea de fundamente. Această trimitere conţine deasupra simbolului grafic numele noţiunii pe care trebuie să îl căutaţi într-un simbol de definiţie, şi sub simbolul grafic numărul paragrafului unde se află definiţia. Cititorul începător ca şi cel avansat poate urma aceste trimiteri pentru a-şi împrospăta cunoştinţele sau pentru a se familiariza cu cuvintele sau expresiile folosite pentru a desemna noţiuni greu traductibile.

Semnul din stânga reprezintă o referire în avans a unei noţiuni care va fi introdusă mai târziu. Acest semn este destul de rar în interiorul cărţii, dar este totuşi nevoie de el pentru a face referire la anumite facilităţi care îşi găsesc cel mai bine locul în paragraful în care apare semnul. Puteţi sări fără probleme aceste precizări la prima citire a capitolului şi să le luaţi în seamă doar atunci când folosiţi cartea pe post de referinţă pentru limbajul Java.

Semnul din stânga reprezintă referirea unei noţiuni care nu este descrisă în carte. Acest semn apare atunci când se face o referinţă la una din clasele standard ale mediului Java. Puteţi găsi informaţii exacte despre clasa respectivă la adresa, sau puteţi încărca din Internet o documentaţie completă prin ftp de la adresa, directorul /docs.

Semnul din stânga reprezintă o trimitere către altă carte, în care noţiunile din paragraf sunt prezentate mai pe larg. Am folosit acest semn doar de două ori, pentru a trimite către o carte disponibilă la aceeaşi editură cu cartea prezentă, despre HTML, scrisă de Dumitru Rădoiu. O puteţi găsi pe prima poziţie în bibliografie.

(...)


pus acum 14 ani
   
Pagini: 1  

Mergi la