Tutorialul Java 6 este structurat astfel incat sa acopere toate notiunile importante si sa ii permita unui programator sa invete elementele de sintaxa si conceptele limbajului Java. De asemenea,articolele insista si pe acele elemente importante care se regasesc in testul pentru certificarea SCJP.
1. Tutorial Java 6 – #1 Premise
Aceasta serie de tutoriale, care incepe cu acest post, are ca obiectiv sintetizarea elementelor limbajului Java 1.6 pentru invatarea programarii orientate obiect (POO) in limbajul Java 1.6.
2. Tutorial Java 6 – #2 Concepte de baza
În acest post sunt prezentate regulile de baza, componentele si structura programelor Java.
2.1 Tutorial Java 6 – #2.1 Cum sa definesti comentarii JavaDoc
In acest post sunt prezentate regulile de editare a comentariilor care sa permite generarea autoamata a documentatiei de tip JavaDoc.
2.2 Tutorial Java 6 – #2.2 Cum sa generezi JavaDoc in Eclipse sau NetBeans
In acest post sunt prezentate posibilitatile de generare autoamata a documentatiei de tip JavaDoc in Eclipse sau NetBeans.
3. Tutorial Java 6 – #3 Definire variabile de tip primitiv
In acest tutorial Java 6 vom vedea care sunt tipurile primitive de date, cum se definesc variabile, care sunt valorile implicite si ce nume putem da acestor variabile.
4. Tutorial Java 6 – #4 Vectori
In acest topic vom vedea cum definim si cum prelucram structuri de date de tip vector sau matrice in Java.
4.1 Tutorial Java – #4.1 Cum se adauga in Java un element nou la un vector existent
In acest post vedem care este solutia la problema adaugarii unui element nou la un vector existent.
4.2 Tutorial Java – #4.2 Cum se copiaza in Java elementele unui vector in alt vector
In acest post sunt descrise modalitatile prin care se poate copia un vector in alt vector, la nivel de valori.
4.3 Tutorial Java – #4.3 Matrice si masive multidimensionale (numai in Engleza pentru moment)
In acest post sunt descrise solutii de implementare in Java a structurilor de date de tip matrice si masive multidimensionale.
5. Tutorial Java 6 – #5 Structuri de control
In acest este descris cum se implementeaza in Java, structurile de control fundamentale:
- structuri decizionale: if – then, if – then – else,switch
- structuri de ciclare for, do-while,while – do, for imbunatatit (enhanced – for)
- instructiuni de control: break, continue;
6. Tutorial Java 6 – #6 Clase si obiecte
Clasele reprezinta principiile de baza ale programarii orientate obiect. Clasele reprezinta notiuni abstracte, povesti, modele (blueprints), ce descriu:
- caracteristicile, atributele unui obiect; reprezinta ceea ce stie sau ce este obiectul;
- ce stie sa faca obiectul, comportamentul acestuia descris de metodele sale;
7. Tutorial Java – #7 Variabile de tip referinta (only in English)
8. Tutorial Java – #8 Stiva metodelor si memoria Heap
Pentru a avea o intelegere profunda a progamarii orientate obiect in Java sau in orice alt limbaj orientat obiect (cum ar fi C #),trebuie sa stii cum sunt gestionate lucurile intern de catre procesul Java si de JVM (Java Virtual Machine). Desigur, sintaxa si implementare principiilor POO (Programare Orientata Obiect) in Java sunt importante, dar vei avea o imagine mult mai clara cu privire la resursele necesare, memorie, performanta, transferul parametrilor, fire de executie si de eliberare a memoriei sau colectare a gunoiului (garbage collection), daca ai iti pui intrebari dincolo de Cum fac asta ? sau Cum scriu asta ?. Intrebari reale trebui sa fie Cum sau De ce se intampla asa ? (desigur, de la un punct, trebuie sa iei lucrurile asa cum sunt si sa mergi mai departe).
9. Tutorial Java – #9 Managementul memoriei, Garbage Collector si memory leaks
O problema importanta de performanta a fost si inca este, dimensiunea spatiului de memorie disponibil si modul de gestiune al acestuia. In ciuda faptului ca astazi tehnologia hardware ofera resurse mari de memorie virtuala, Random Access Memory, dezvoltatorii de software trebuie sa acorde atentie modului in care aplicatiile gestioneaza memoria, deoarece pot fi implementate solutii gresite, care vor bloca procesul sau sistemul de operare, deoarece nu mai este suficienta memorie virtuala.
10. Tutorial Java SCJP – #10 Domeniul de vizibilitate al variabilelor
Multe erori de compilare sunt generate de programatori deoarece nu au o imagine clara cu privire la domeniul de vizibilitate al variabilelor, cat sunt disponibile si când pot fi accesate. Conceptul de domeniu de vizibilitate descrie viata unei variabile, sau zona de disponibilitate, dupa ce aceasta a fost definita.
11. Tutorial SCJP Java – #11 Cum se utilizeaza String, StringBuilder si StringBuffer
In limbajele de programare, majoritatea tipurilor de date utilizate pentru variabile sunt valorile booleene, valorile numerice si sirurile de caractere (sau vectori de caractere terminati cu ‘\0’). In contrast cu C sau C++, in Java modul de gestiune a sirurilor de caractere este diferit, deoarece:
- in Java fiecare char reprezinta o valoare Unicode pe 16 biti, si nu 1 octet;
- in Java, valorile de tip siruri de caractere sunt gestionate de obiecte String;
- in Java, sintaxa va permite sa utilizati String asemenea unui tip primitiv de date (puteti folosi operatorul = pentru a le initializa)
- in Java, String sunt obiecte imuabile (immutable), in sensul ca odata ce sunt create, ele nu isi pot schimba valoarea.
12. Tutorial SCJP Java – #12 Immutable: String si Integer
Obiecte immutable (imuabile) sunt obiecte care nu isi pot schimba valoarea, odata ce acestea sunt create. Obiectul immutable cel mai cunoscut in Java este String. In afara de String, exista si alte obiect imuabile, iar unul dintre acestea este Integer (clasa si nu tipul primitiv), care are un comportament interesant pentru valori intre -128 si 127.
13. Tutorial Java SCJP – #13 Pachete si modificatori de acces pentru clase
Doua concepte importante ale Programarii Orientate Obiect impun separarea entitatilor (claselor) pe baza functionalitatii sau semnificatiei lor (modularizare) si ascunderea datelor si comportamentului în cadrul unei clase (încapsulare). Pentru a atinge aceste obiective se folosesc clase pentru a defini entitati care au atribute si un comportament (metodele lor). La un nivel superior, pentru o buna organizare a modulelor aplicatiei Java puteti utiliza pachete (packeges) pentru a separa modulele realizate de programatori diferiti sau pentru a grupa clasele în module in functie de utilitate, functie, logica.
14. Tutorial Java SCJP – #14 Methods and passing variables into methods (only in English)
14.1 Tutorial Java SCJP – #14.1 Ce inseamna sa ascunzi (shadow) o variabila
Conceptul de shadowing se produce atunci cand se defineste o metoda cu parametri de intrare care au nume identice cu variabile statice sau variabile de instanta (atribute).
14.2 Tutorial Java SCJP – # 14.2 Cum se definesc metode cu numar variabile de argumente – var-args
Incepand cu Java 5.0, puteti defini metode cu liste variabile de argument (var-args). Aceste metode pot fi utilizate in situatii cand nu este cunoscut numarul exact de argumente. Aceasta posibilitate este, de asemenea, disponibila si in alte limbaje de programare si chiar daca nu este folosit intensiv, este un subiect pentru examenul de SCJP.
15. Tutorial Java SCJP – #15 Clase wrapper pentru tipurile primitive
In Java exista 2 categorii importante de tipuri de date: referinte si primitive. De cele mai multe ori, valorile numerice, caracterele si valorile logice sunt utilizate ca primitive, deoarece sunt mai eficiente, ca viteza de procesare, sintaxa si efecte asupra memoriei. In ciuda acestui fapt, exista scenarii (cand folosesti Collections), cand este necesar sa stochezi valori primitive in interiorul unor obiecte. Pentru aceasta nevoie, Java ofera un set de clase folosite la ambalarea (wrap) valorilor primitive intr-un obiect.
16. Tutorial Java SCJP – #16 Constructori
Intr-o clasa se pot defini metode, dar exista un tip special de metode care sunt folosite pentru a rezolva o anumita problema, aceea de a construi obiecte. Constructori sunt metode speciale datorita rolului lor si pentru ca au o multime reguli privind declararea si utilizare.
17. Tutorial Java SCJP – #17 Modificatori de acces pentru metode si variable, atribute
Modificatorii de acces reprezinta modalitati prin care programatorul poate controla (acorda sau restrictioneaza) accesul la metodele si atributele definite intr-o clasa. Un motiv pentru a utiliza acesti modificatori de access este conceptul POO numit incapsulare, care cere ca atributele sa nu poata si accesate (citire/scriere) direct, ci doar prin metode accesor (cele prefixate cu get si set). Un alt motiv este necesitatea de a controla cum este folosita clasa si cum si ce valori ajung sa fie stocate in variabilele de instanta (atribute). De exemplu, daca se implementeaza clasa Persoana care defineste atributul varsta, nu este de dorit ca un alt programator sa poata initializa direct (cu orice valoare) acest atribut, deoarece poate folosi o valoare negativa.
18. Tutorial Java SCJP – # 18 Blocuri de initializare
Pentru a face prelucrari si pentru a obtine rezultate este nevoie de date. Si aceste valori de intrare sunt de obicei stocate in variabile statice, variabilele locale (definite în metode) sau variabile de instanta (variabile nonstatice definite în clase). Pentru a initializa o variabila o poti face la definitia sau mai tarziu intr-o metoda (constructor sau nu). In ciuda acestor doua solutii comune, exista o alta cale folosind blocuri de initializare.
Blocurile de initializarea sunt blocuri de cod definite intre { si }. Din acest punct de vedere, ele seamana cu blocuri/corpuri de metode, dar principala diferenta este ca blocurile de initializare nu au un nume. Ele sunt ca metodele, insa fara antet/header (tip returnat, nume metoda, lista de parametri).
19. Tutorial Java SCJP – # 19 Enumerari de tip enum
Incepand cu Java 5.0, framework-ul permite programatorilor sa defineasca un set predefinit de valori, o enumerare sau enum (cuvant cheie in Java). In plus, programatorii pot defini variabile care pot lua valori doar din enumerare, iar compilatorul va valida acest lucru prin generarea de erori in situatiile in care programatorul va incerca sa initializeze variabila cu o valoare din afara enumerarii. Enumerarile (enums) pot fi interpretate ca un nou tip de date, pentru care se defineste o restrictie cu privire la valorile sale.