Sunteți pe pagina 1din 24

Mediile de dezvoltare Java

Codul sursă Java poate fi scris în orice mediu şi poate fi compilat în


felul descris în lecţia precedentă. Am menţionat, totuşi, că editoare
simple precum Notepad, nu permit programatorului suficientă intuiţie
în realizarea unor aplicaţii Java mai complexe.

De aceea există medii specializate pentru scrierea unor astfel de


programe. Două dintre cele mai populare, când e vorba de Java, sunt:
NetBeans, Eclipse și IntelliJ IDEA. Ambele medii sunt scrise în Java
şi de aceea nici nu vor funcţiona fără acesta. De asemenea, aceste
medii sunt Open Source, ceea ce înseamnă că le putem folosi şi în
scopuri comerciale, şi necomerciale fără a plăti pentru ele şi că putem
participa la dezvoltarea lor.

Niciunul dintre aceste medii nu este specializat în mod strict numai


pentru Java, ci sunt editori excelenţi şi pentru alte limbaje. De
exemplu: PHP, C, C++, etc.

NetBeans

În continuarea cursului vom folosi NetBeans. Acest program este, de


câţiva ani încoace, unul dintre cele mai puternice instrumente pentru
gestionarea limbajului Java, fiind susţinut de marea parte a comunităţii
Java.

NetBeans a început ca un proiect studenţesc a doi studenţi cehi, în


anul 1996, fiind primul mediu de programare pentru Java, scris chiar în
Java. Aplicaţia a fost suficient de utilă pentru a interesa comunitatea de
programatori Java într-o asemenea măsură încât au început să
contribuie singuri la dezvoltarea ei, scriind Plug-in-uri. În 1999
NetBeans a devenit mediul oficial de dezvoltare pentru Java, acceptat
de compania Sun Microsystems. (O istorie mai detaliată a NetBeans
se află pe adresa următoare: http://netbeans.org/about/history.html).
În acest moment proiectul NetBeans a fost transferat ca proiect open
source către Apache. Versiunea actuală a lui Apache NetBeans este
9.0, şi poate fi descărcată din:
https://netbeans.apache.org/download/index.html
Downloadarea, instalarea și pregătirea pentru lucru

Pentru a putea folosi NetBeans, trebuie să-l downloadăm de la adresa


următoare:

https://netbeans.org/downloads/.

Imaginea 5.1 Downloadarea installer-ului NetBeans

Versiunea Java SE (primul download) vă va fi suficientă până la


sfârșitul acestui curs. În plus, nu trebuie să decidem acum ce pachete
vom folosi, deoarece toate pachetele pot fi adăugate sau înlăturate din
aplicație ulterior.

După instalarea și activarea programului, se va deschide următoarea


fereastră:

Selectând opțiunea: File-New Project, ne vom muta în spațiul de


creare a noului proiect, unde vom alege ce tip de proiect vrem să
creăm:
Imaginea 5.2 Crearea unui nou proiect în NetBeans

Imaginea 5.3 Selectarea tipului de aplicație în NetBeans

După ce selectăm una dintre opţiunile oferite, mediul va crea şablonul


necesar pentru funcţionarea proiectului în forma dorită. Va încărca
bibliotecile necesare şi va defini controalele, dacă proiectul le cere.

De exemplu, dacă dorim să creăm o aplicaţie desktop, ne va fi necesar


setul de biblioteci care fac posibilă gestionarea controalelor şi altele.

Pentru acest prim proiect, vom selecta opţiunea Java Application,


respectiv, vom lăsa opţiunea deja selectată (Next).

Fereastra următoare (Name and Location) oferă câteva opţiuni,


împărţite în două categorii. O categorie se referă la managementul
fişierelor şi folderelor. Aici setăm numele proiectului, locaţia (folderul în
care se va afla proiectul) şi folderul proiectului (folderul care va conţine
proiectul). După creare, pe sistemul de fişiere va fi creată structura
fizică definită prin setările acestea.

Cealaltă categorie (Name and Location) a ferestrei oferă setările care


se referă la însuşi şablonul proiectului. Dacă activăm opţiunea: Use
Dedicated Folder for Storing Libraries, se va mai crea un folder
suplimentar în proiect, pentru biblioteci (nu este obligatoriu să activați
această opţiune).
Imaginea 5.4 Introducerea denumirii proiectului în NetBeans

Opţiunea Create Main Class creează în mod automat o clasă Main în


interiorul proiectului. În acest moment nu ştim prea multe despre
modelul obiectual Java, astfel că ne vom opri asupra faptului că
programele Java nu pot funcţiona fără un punct de intrare. Acest punct
este localizat în metoda statică main a aplicației, care se află doar într-
un singur loc în aplicație. Fiindcă pentru funcţionarea programului o
astfel de structură este necesară, mediul ne oferă posibilitatea de a o
crea în mod automat.

Vom dezactiva opţiunea Create Main Class pentru a avea un proiect


complet vid. Prin apăsarea tastei Finish, proiectul va fi creat.

În mod implicit, toate proiectele se stochează în folderul:

C:\Users\USER\Documents\NetBeansProjects\,

iar în cazul nostru, am creat folderul JavaPractice în sistemul de fișiere,


pe calea:

C:\JavaPractice.

După ce terminăm crearea proiectului din acest exemplu, în acest


folder (dacă nu aţi declarat altfel) se va afla subfolderul
MyJavaProgram, care, pe lângă folderul src în care se vor afla fişierele
sursă ale programului nostru Java, mai conţine câteva foldere şi
documente care reprezintă proiectul actual. Folderul dist conţine
versiunea-pachet a aplicaţiei, cu extensia .jar, iar build conţine
bibliotecile traduse (Bytecode-urile) ale proiectului. În folderul
nbproject se află datele despre proiect legate de mediul NetBeans. În
manifest.mf se află datele despre pachetele .jar, iar build.xml conţine
configuraţia pentru traducere, respectiv pentru construirea proiectului.

Fiindcă nu am creat clasa Main, proiectul nostru este complet vid. Vom
crea o aplicaţie identică cu aplicaţiile din lecţia precedentă, dar de data
aceasta cu ajutorul lui NetBeans.
Vom crea o clasă în interiorul proiectului. Toate clasele din Java trebuie
plasate într-un pachet (packages). Pachetele servesc pentru gruparea
claselor înrudite, iar despre ele vom vorbi mai târziu. Pentru moment,
ajunge să învățăm cum să creăm un pachet nou. Dând clic dreapta pe
Source Packages, va apărea un nou meniu drop-down, în care
trebuie să selectăm New - Java Package. În continuare se va
deschide o fereastră în care va trebui să introducem numele pachetului
și, apăsând butonul Finish, confirmăm crearea noului pachet. Vă
sfătuim să scrieți numele pachetelor cu minuscule pentru a evita
conflictul cu denumirile claselor și ale interfețelor. De asemenea, vă
sfătuim ca în general să folosiți doar litere mici, deoarece pachetele
reprezintă foldere create în sistemul de fișiere și nu toate sistemele de
operare tratează la fel utilizarea majusculelor în denumirea folderelor.

Imaginea 5.5 Crearea unui pachet


Acum putem crea o clasă, iar pentru a realiza acest lucru, dăm clic
dreapta pe pachetul nou creat și activăm opțiunea New - Java Class.

Imaginea 5.6 Crearea unei clase în NetBeans

Se va deschide o fereastră aproape identică cu fereastra pentru


crearea unui pachet. Introducem numele clasei și apăsăm butonul
Finish ca să confirmăm crearea clasei. Regula general valabilă este că
numele claselor sunt scrise cu majuscule. În caz că numele clasei este
format din mai multe cuvinte, numele se scrie într-un cuvânt, iar
fiecare cuvânt începe cu literă mare, ca în exemplu.
Imaginea 5.7 Introducerea numelui clasei în NetBeans

Cu excepţia câtorva linii adiţionale, vedem că mediul a generat un cod


asemănător cu codul pe care l-am scris singuri în lecţia precedentă.
Toate rândurile dintre marcajele /* şi */ sunt, de fapt, doar comentarii
şi le putem şterge pentru că nu afectează în niciun fel executarea
programului. Aceasta înseamnă că, momentan, întregul program este
alcătuit din:

package test;
public class TestClass {
}

Fiecare aplicație scrisă în Java trebuie să conțină o metodă main.


Această metodă reprezintă punctul de intrare al aplicației și trebuie să
existe într-una dintre clasele din aplicație. Așa că atunci când aplicația
este interpretată, mediul de execuție apelează metoda main pentru a
rula aplicația. Dacă metoda main nu este definită, interpretorul va
raporta o eroare dacă aplicaţia va fi executată ca una stand-alone. Așa
că, următorul nostru pas este să definim metoda main.

package test;
public class TestClass {
public static void main(String[] args)
{

}
}
După ce am definit metoda main, putem scrie primul cod care
efectuează niște funcții.

package test;
public class TestClass {
public static void main(String[] args)
{
System.out.println("Hello");
}
}

Codul pe care l-am scris este gata de executare și rezultatele


procesării sunt gata să fie afișate. În următorul capitol vom discuta
despre compilarea unui proiect și despre rularea lui în mediul de
dezvoltare NetBeans.

Interpretarea, executarea și distribuția unei aplicații

Pentru a activa o aplicație, trebuie să interpretăm și să rulăm proiectul.


În NetBeans, putem realiza acești pași separat sau împreună, în funcție
de faptul dacă vrem doar să creăm un proiect sau să-l creăm și să-l și
rulăm.

Dacă vrem doar să-l interpretăm, adică să compilăm un proiect, putem


face acest lucru astfel. Dăm clic dreapta pe numele proiectului din
stânga ecranului și selectăm Build din meniul drop-down. Build poate
fi inițializat şi cu scurtătura F11.
Imaginea 5.8 Opțiunea build

Ar trebui să menționăm că atunci când pornim opțiunea Build, se


adaugă doar părți ale proiectelor modificate de la ultima inițializare a
opțiunii Build. Dacă vrem să pornim Build asupra unui proiect început
„de la zero”, putem face acest lucru cu opțiunea Clean and Build.

Cu siguranță ați observat că în acest capitol am folosit termenul


compilare și opțiunea Build în contextul mediului de dezvoltare
NetBeans. Build este un concept puțin mai amplu decât compilarea,
așa că putem spune că procesul de compilare este un subset al
comenzii Build.

După cum am menționat deja, putem compila și rula proiectul în


NetBeans cu o singură comandă. În cazul nostru, vrem să-l
interpretăm, dar și să-l rulăm, lucru pe care îl vom face astfel: de pe
toolbar-ul din partea de sus a ferestrei, selectăm Run Project
(săgeata verde), sau folosim scurtătura F6.

Imaginea 5.9 Rularea proiectului

Fiindcă nu are clasa main definită, mediul întreabă care dintre clasele
disponibile poate să le folosească drept clasă main. Deoarece, în cazul
nostru, în proiect există doar o singură clasă, TestClass, o alegem pe
aceasta.

Imaginea 5.10 Selectarea clasei main a proiectului

Rezultatul final se afişează în fereastra Output, în partea de jos a lui


NetBeans.
Imaginea 5.11 Fereastra Output pentru afișarea rezultatelor
programului

De asemenea, modesta aplicație pe care am creat-o poate fi rulată din


afara mediului de dezvoltare integrat NetBeans. Trebuie să deschidem
Command Prompt și să accesăm folderul \dist din cadrul folderului în
care este localizat proiectul nostru. În cazul nostru, acesta este:
C:\JavaPractice\MyJavaProgram\dist. Apoi, trebuie să introducem
următoarele în linia de comandă:

java -jar MyJavaProgram.jar

unde MyJavaProgram este numele proiectului pe care l-am definit în


IDE (Integrated development environment) NetBeans. Aplicația
este rulată apoi și ieșirea consolei afișează:

Hello

Utilizarea mediului de dezvoltare NetBeans

Fiecare mediu de dezvoltare, pe lângă faptul că există pentru a


interpreta, executa și distribui mai ușor o aplicație, există și pentru a
simplifica la maximum procesul de codare. Același lucru se aplică și
mediului de dezvoltare NetBeans, care oferă un număr de opțiuni
pentru a ajuta programatorul în munca sa.
Câteva dintre noțiunile pe care le vom discuta în continuare vă pot fi
puțin neclare, deoarece vor fi explicate detaliat în modulele ce
urmează. Vă sfătuim să citiți lecția până la capăt dacă sunteți
începător, și apoi, după ce dobândiți mai multe cunoștințe despre
limbaj, să reveniți la această parte și să o studiați din nou, deoarece
conține câteva tehnici de lucru utile în NetBeans.

Smart Code Completion

Una dintre cele mai utile opțiuni ale mediului NetBeans este așa-
numita funcție Smart Code Completion. Se reflectă în faptul că
mediul de dezvoltare este capabil să genereze anumite secvențe ale
codului, economisindu-vă astfel timp atunci când scrieţi codul. Smart
Code Completion poate fi folosit în diverse situații. Vom ilustra în
continuare câteva dintre cele mai importante utilizări ale acestei
opțiuni.

Probabil ați observat atunci când am scris exemplul din lecția


precedentă care afișează pe ecran mesajul Hello, că în momentul în
care introduceți semnul punct după cuvântul System sau out pe
ecran, obțineți un anumit meniu drop-down. Acesta este de fapt Smart
Code Completion.

Imaginea 5.12 Smart Code Completion


În imaginea de mai sus, putem vedea meniul Smart Code Completion
cu metodele și proprietățile oferite, care se referă la clasa pentru care
au fost afișate. Introducând mai multe litere, lista va fi redusă în
funcție de intrarea dvs.

Dacă ați introdus litera p, opțiunile oferite ar fi limitate la cele care


încep cu litera p. Dacă în acest moment apăsați tab și editorul va
introduce în mod automat cuvântul complet print. Apoi puteți tasta
litera l, apăsaţi tab și editorul va introduce în mod automat println.
Apăsând din nou tab, confirmați că doriți această metodă și editorul va
adăuga întregul apel al metodei.

Atunci când adăugați o nouă variabilă în codul dvs., puteți folosi și o


scurtătură pentru a finaliza codul, astfel încât să selectaţi o denumire
care corespunde cel mai bine tipului de câmp sau variabilei. Cel mai
bine este să introduceți prefixul denumirii și apoi să inițializați această
funcție, în aşa fel încât denumirea tipului să fie adăugată prefixului
introdus. Dacă introduceți în editorul NetBeans:

String my

unde my este un prefix pe care îl puteți defini singuri, în funcție de


utilitatea variabilei, și apoi apăsați CTRL-Space, denumirea tipului va
fi adăugată în mod automat prefixului specificat, iar codul va fi
următorul:

String myString.

Astfel, ați fost ajutați să denumiți o variabilă. Puteți utiliza acest ajutor
fără să specificați un prefix, inițializând scurtătura CTRL-Space imediat
după specificarea tipului de variabilă.
Imaginea 5.13 Denumirea automatizată a variabilei

Numele oferite vor apărea în meniu sub denumirea tipului.

De asemenea, editorul vă poate ajuta să alegeți parametrii unei


metode, arătându-vă sugestiile într-o mică fereastră pop-up.

Imaginea 5.14 Revizuirea parametrilor metodei

În timpul acestui curs și al activității dvs. viitoare, veți vedea că


aceasta poate fi o opțiune utilă uneori, în special atunci când folosiți
metode încorporate sau metode scrise de alții.

Javadoc

Javadoc reprezintă un mod de a activa generarea automată a


paginilor web cu documentația programului. De asemenea, toate
clasele care există în JDK sunt explicate cu Javadoc, așa că este o
modalitate excelentă de a cunoaște clasele încorporate și metodele și
atributele lor.

Pentru a activa afișarea documentației pentru clasele, metodele și


atributele lui JDK în NetBeans, trebuie să selectați IDE Tools din
meniul drop-down și apoi Javadoc Documentation. În partea de jos
a ecranului, veți vedea o fereastră javadoc unde vor fi afișate
informațiile. Putem efectua un test dând clic pe metoda prinln din
exemplul nostru. Vom obține următoarele informații în secțiunea
javadoc.

Imaginea 5.15 Fereastra Javadoc

După cum putem vedea, am obținut o descriere completă a metodei.


Putem trage concluzia din textul anterior că această metodă este
utilizată pentru a afișa la ieșire Stringul. După afișarea Stringului,
metoda va inițializa un nou rând. Poate că acum acest lucru nu vi se
pare foarte util, dar cu siguranță veți ajunge într-un moment al carierei
dvs. de programator în care veți folosi această documentație foarte
intens.

Cum utilizăm hint-urile

În timp ce tastați un text în NetBeans, editorul Java verifică constant și


în mod automat intrările dvs. și vă sugerează cum să corectați erorile
și să îmbunătățiți codul. Hint-urile sunt afișate în marginea stângă a
editorului. Dacă, de exemplu, scrieți următoarea linie de cod:

a = 3;

Editorul va detecta că nu ați definit tipul variabilei (cannot find


symbol). Iconița va fi afișată în marginea stângă și dând clic pe ea,
vedeți toate indiciile pe care le oferă mediul.

Imaginea 5.16 Utilizarea hint-urilor

Selectând opțiunea Create local variable "a", putem defini o


variabilă locală denumită a:

int a = 3;

Să privim următorul exemplu. Dacă introducem următoarea linie de


cod:

System.out.println("hello")

Editorul va recunoaște că a avut loc o eroare și va afișa iconița erorii în


marginea stângă.
Imaginea 5.17 Afișarea unei erori de sintaxă

În mesajul afișat de mediu, putem vedea foarte clar că trebuie să


adăugăm punct și virgulă la finalul rândului:

System.out.println("hello");

Formatarea codului

Pentru a efectua formatarea codului în cel mai simplu mod posibil,


utilizăm scurtătura de pe tastatură Alt-Shift-F sau selectăm Source >
Format din meniu.

O altă opțiune utilă a lui IDE este gruparea codului. Această opțiune
facilitează revizuirea unui cod mare, simplificând mentenanața codului.
Blocurile de cod care pot fi comprimate sau extinse sunt marcate cu
linii gri care au semnele plus/minus lângă marginea stângă a
editorului.

Imaginea 5.18 Formatarea codului

Marcarea și colorarea codului


Mediul de dezvoltare integrat, NetBeans, prezintă diferite elemente ale
codului cu diferite culori. Pe lângă colorare, mediul marchează de
asemenea elementele similare. Această opțiune de marcare poate fi
percepută ca o opțiune de căutare, deoarece marchează fiecare
apariție în cod a unui element specific, facilitându-ne astfel găsirea
elementului respectiv în cod.

Următoarea imagine ilustrează modalitatea în care mediul de


dezvoltare colorează diferite elemente din cod.

Imaginea 5.19 Colorarea elementelor din cod

Marcarea codului este afișată în imaginea de mai jos. Este suficient să


dăm clic pe un anumit element și fiecare apariție a sa în cod va fi
marcată.
Imaginea 5.20 Marcarea codului

Cum testăm și efectuăm procesul de debugging al unei


aplicații

Una dintre cele mai importante caracteristici ale acestui mediu este
gestionarea erorilor, respectiv, recunoaşterea lor. Sistemele de
recunoaştere a erorilor uşurează şi accelerează considerabil lucrul și
sunt o parte constitutivă a oricărui mediu de programare mai serios. În
general, în programare există două tipuri de erori: sintactice și logice.
Erorile sintactice se văd uşor şi de obicei nu permit traducerea
programului, însă erorile logice nu au nicio indicaţie sintactică -
programul, pur şi simplu, nu funcţionează bine.

Mediul de dezvoltare integrat, NetBeans, posedă un instrument de


debugging foarte puternic care ne permite să executăm programul cu
ajutorul punctelor de întrerupere, a watch-urilor și a executării
aplicației în debugger. Folosind debugger-ul, un program poate fi
executat linie cu line, monitorizând astfel modificările valorilor unor
anumiți parametri, în scopul de a detecta erorile logice din program.

Un punct de întrerupere reprezintă un marcaj în codul sursă, poziționat


în marginea stângă a editorului şi care marchează faptul că executarea
codului este pe pauză în linia pentru care a fost definit punctul. Atunci
când programul este pe pauză într-un punct definit, putem inspecta
valorile curente ale variabilelor din program sau putem continua
executarea programului, linie cu linie. Pentru a seta un punct de
întrerupere, trebuie doar să dăm clic în marginea stângă a liniei unde
vrem să poziționăm punctul de întrerupere. Editorul va marca linia cu
roșu și va seta un pătrat roșu pe marginea stângă.

Pentru a exemplifica o execuție debugged, vom edita codul pe care l-


am folosit până acum, astfel încât acum să aibă două linii cu un mesaj:

public class Test {


public static void main(String[] args)
{
System.out.println("hello 1");
System.out.println("hello 2");
}
}

După cum am menționat deja, mai întâi trebuie să accentuăm unde


vrem să suspendăm executarea programului setând un punct de
întrerupere (breakpoint) în locul dorit:
Imaginea 5.21 Adăugarea unui punct de întrerupere

Setăm un punct de întrerupere dând clic dreapta pe marginea stângă a


editorului (partea unde sunt numerotate rândurile) pe linia unde vrem
să suspendăm aplicația. Dacă setăm punctul de înterupere cu succes,
va apărea un pătrat roșu.
Pentru a porni aplicația în Debug Mode, ar trebui să dăm clic pe
butonul Debug Project (Ctrl + F5) :
și aplicația se va opri în
poziția specificată:

Imaginea 5.22 Executarea în Debug Mode

Odată executarea programului oprită, putem continua inspectarea


folosind controalele:

-
Step Over (F8) – execută o linie de cod; dacă linia este apelul
metodei, execută metoda fără să intre în codul metodei;
-
Step Into (F7) – execută o linie de cod; dacă linia este apelul
metodei, executarea intră în codul metodei și se oprește la prima linie
din metodă;
-
Step Out (Ctrl + F7) – execută o linie de cod; însă, dacă linia de
cod se află în metodă, codul complet al metodei va fi executat și
executarea se oprește pe poziția de pe care a fost apelată metoda;

-
Run to Cursor (F4) – execută programul până la linia unde este
localizat cursorul;
-
Continue (F5) – execută programul până la următorul punct de
întrerupere, dacă există, dacă nu, până la finalul programului.

Mai multe din această lecţie

Metoda Main

public static void main(String[] args)


{

Să explicăm mai întâi cuvintele care apar în codul de deasupra.

Cuvântul public înseamnă că metoda main poate fi apelată de orice


obiect. Este un modificator de acces, iar acești termeni vor fi explicați
în detaliu în modulele următoare.

static înseamnă că metoda main este o metodă de clasă. Acest lucru


înseamnă că nu trebuie să creăm o instanță a clasei pentru a apela
metoda.

Cuvântul void înseamnă că o funcție nu returnează nicio valoare.

Singurul lucru care a mai rămas de explicat este String[] args, dintre
parantezele rotunde ale metodei main. Parametrii de intrare ai unei
metode sunt închiși între paranteze rotunde. String[] reprezintă un şir
de stringuri căruia i s-a atribuit numele args. Este de fapt un şir de
argumente cu care sistemul de executare poate să transmită anumite
informații programului, de pe linia de comandă. Acest lucru ne permite
să transmitem diferite comenzi aplicației fără să trebuiască să o
compilăm de fiecare dată. De exemplu, să spunem că avem o aplicație
de sortare a unui text. În acest caz, am putea specifica un criteriu de
sortare de pe linia de comandă, de exemplu:

-descending

S-ar putea să vă placă și