0%(2)0% au considerat acest document util (2 voturi) 900 vizualizări18 paginiAtac La Java PDF
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră,
reclamați-l aici.
Formate disponibile
Descărcați ca PDF sau citiți online pe Scribd
Trateaza si Java 5.0
rotor AEC la
fac diferenta!
Cum sa retii
ce este important
dongleaza
cu biblioteca Java
Evita erorile A
din POO
42 de probleme
Creeaza interfete grafice
de Java, RS yi
4
atractive si utile
REIL Kathy Sierra && Bert Bate:Cuprins (pe seunf)
Introducere xix
1 Saspargem gheata: incepem atacul ta Java 1
2 Ocalitorie in lumea obiectelor: da, vor apiirea yi obiectete 27
3 Cunoaste-ti variabilele: primitive si referinte 49
4 Cum se comporta obiectele: stared obiectelor afecteastt compartamentul metodetor 71
5 Metode superputernice
6 — Utilizarea bibliotecii Java
in) mai bund in lumea obiectelot
8 — Polimorfisrmul lua
conttrolul fh
nut trebuie s
wilt, operatii si multe altele 95
sevti tw chiar tot 125.
danuni pentru viitor 165
1 se fetetor si clasetor abstracte 197
2 exploaterea inte
9 Viata si moartea unui obi
constructori $i gestionarese memoriei
10 Numerele conteaza: matematictt, formatare, impachetare si weriabile stetice
11 Un comportament riscant: traterrea exceptiilor
12 Opoveste
13 U
14 Salvarea obicctelor: seriatizam: si operatié de intrame/iesine
: despre interfete grafice cu utilizatorul, tratarea evenimentetor si clase interne
izarea bibliotecii Swing: administratar’ de machete si componente
conexiuni: socluri de retea yi fire de execufie multipt
16 Structuri de date
colectii sé tipuri generice
7 — Distribuirea codului: impachetare si distribuine
18 Calculul distribuit: RMI, plus citeva cuvinte despre miniservere, EJB si fini
A Anexa A: buciitdria de cod finals
B Ane rimele xece ducruri care nu au incaput in cartea propriw
Index
Cuprins (versjunea complefa)
6 Introducere
Focalizeaza-ti creierul pe Java. Aiciincerci sa invericeva,in timp ce creierul tau vrea s8-ti facd 0
favoare, asigurandu-se ca nu ramane nimic in memorie. Creierul tau se gandeste: Ar fi bine sa pastrez spatiul
disponibil pentru lucruri importante, cum ar fi animalele salbatice pe care trebuie sa le evit si faptul cd nu trebuie sd
schiez in pielea goala.” Si atunci, cum iti faci creierul sa creada ca viata ta depinde de cunoasterea limbajului Java?
Cui ii este d atch asta carte!
Cum gandeste creierul tu
creierul sa te asculte
aceasta carte
nevoie per
Redactori de specialitate
jultumiri
viiSa spargem gheata
Java te ajuta s4 cunosti locuri complet noi. incepand cu lansarea umila a versiunii
(pray padite) 1.02, Java a atras Programatorii printr-o sintaxa Prietenoasa, caracteristici orientate spre obiecte,
gestionarea memoriei i, mai mult decat orice ~ tentafia portabilitatii, Vom scrie imediat ceva cod, il vam compila
siel vom rula. Vom discuta despre sintaxa, cicluri, ramificari si despre tot ce face din Java un limbaj atat de atractiv.
Nuezita.
Cum functionea 2
Structura codulul in Java 7
Anatomia unei clase 8
Metoda main() 9
Cicluri W
Ramific: a (teste if) 13
Codul sursi al aplicatiei .99 de sticle de bere* 4
Phrase-O- 16
Povesti la gura sobei: compilatorul si masina virtual 18
Exercitii si enigme 20
O calatorie in lumea obiectelor
Mi s-a spus ca voi intalni obiecte. in capitoiu! 1 am pus tot codul in metoda main().Nu este chiar
6 tehnica orientata spre obiecte. Asa cd acum vom lasa in urma lumea procedurilor si vom incepe s4 cream
propriile obiecte, Vom vedea de ce este atat de distractiva dezvoltarea orientata spre obiecte (OO) in Java. Vom
discuta despre diferentele dintre clase si obiecte. Yom vedea cum iti pot face obiectele viata mai buna.
Razboiul scaunelor (Brad, programatorul OO, contra lui Larry,
adepuil procedurilor) 28
- Mostenirea (o introducere) 31
mene oclasa teres wietidelor to intvoducete :
rasa Suprascricrea metodelor (o introducere) 32
fume Ce cor (metode, variabile de in 34
area primului obiect propriu 36
Utilizarea metodei main() 38
Codul jocului de ghicit 39
Exercitii si eni 42
viiiCunoaste-ti variabilele
jn Java existé doud categorii de variabile: primitive si referinte. cu siguransa,
variabilele nu pot filimitate numai la intregi, siruri de caractere si matrice. Ce se intampla daca ai un obiect
ProprietarDeAnimale, cu 0 variabila de instanta Caine? Sau un obiect Masina cu o variabila Motor? In acest capitol
vom dezvalui enigma tipurilor de date din Java si vom vedea ce putem declara ca variabild, unde putem pune o
variabila si ce putem face cu 0 variabila. Si, in sfarsit, vam vedea ce se intampla de faptin memoria heap cu
colectarea gunoiului
Declar 0
. vi rog")
Cavite chei
Re te (telecomanda unui obiect)
‘a obiectelor
Referinta Caine
Cum se comporta obiectele
Starea afecteaz4 comportamentul, comportamentul afecteaza starea. stim
ca abiectele au stare si comportament, reprezentate de variabile de instanta si metode. Acum vom vedea care
este legdtura dintre stare si cComportament. Comportamentul unui obiect se bazeaza pe starea unica a obiectului.
Cualte cuvinte, metodele folosesc valorile variabilelor de instanga. De exemplu, putem spune intr-o metoda
ceva de genul,Daca greutatea cainelui este mai mica de 10 kilograme, scheaund, altfel...". Haideti sd schimbam
cétevastari.
Metodele folo a obiectului (laura diferit) 3
transmitere prin valoare Argumentele si tipurile returnate de metode “4
i — Transmiere prin va bila este copiatd intotdeanna) 7
eae Metode de tip get gi set 79
transmitere Prin oople. copie (fico sau risea sii fii umilit) 80
Cela tay y 83
as = 38
int
f00.g0 (x) void go(int z) {}O viata mai buna in lumea obiectelor
Proiecteaza-ti programele gandindu-te la viitor. ce-ai spune de o modalitate dea scrie
cod pe care ar putea sd-| extinda cu ugurinta altcineva? Te-ar interesa o metada de a scrie cod suficient de flexibil
pentru a nu fi afectat de acele enervante modificari de ultima ord ale specificatiilor? Daca participi la Planul
Polimorf, vei invita cei cinci pasi pentru proiectarea mai bund a claselor, cele trei trucuri ale polimorfismului, cele
opt cai de obtinere a codului flexibil si, daca te inscrii chiar acum, ai acces la o lectie suplimentara care iti va oferi
patru sugestii de folosire a avantajelor mostenirii.
legerea mostenirii (relatia dintre superclase si subelase) 168
Projectarea arborelui de mostenire (simularea unui Animal) 170
Evitarea codului duplicat (folosirea mostenirii) 71
Suprascrierea metodelor 172
N si ARE-UN (fata din cada de baie) a7
Ce mostenesti din supercla: 180
1, de fapt? 182
Polimorfism (fol de un supertip pentrt
un obiect al une 183
Reguli pentru iere (nu te atinge de tipurile argumentelor
si valorilor rewurnate!) 190
Supraincdrcarea metodelor (nimic altceva decat refolosirea numelor
de metode) 191
Ex 192
Polimorfismul luat in serios
Mostenirea nu este decat inceputul. Pentru a beneficia de avantajele polimorfismului, avem
nevoie de interfete. Trebuie s4 depasim nivelul mostenirii simple si sa ajungem la un nivel de flexibilitate si
extensibilitate pe care-l poti obtine numai prin proiectarea si scrierea codului in conformitate cu specificatiile
[Link] este o interfata? Este clas 100% abstract’. Ce este o clasd abstracta? Este o clasa care nu poate fi
[Link] ce este utilé o asemenea clasa? Citeste capitolul...
Ar trebui ca unele clase sa nu poata fi instar 200
Object o = [Link] (id): ase abstracte (nw pot fi instantiate) 201
Caine d = (Caine) o; Metode abstracte (trebuie sa fie implementate) 203
[Link](); Polimorfismul in actiune 206
Object 208
Extragerea obiectelor dino list ist (in referinte de tip Object) 211
Compilatorul verifica tipul ref te de a-ti permite
cle) 213
a4
Obiect Caine
Cum pofi ajunge la acel Object in
Referinte polimorfe 2
ei unui obiect (coborind in arborele de mostenire) 216
nirilor multiple) 223
lor (cea mai buna solutie!) 204
230
Transform,
'd ob Conversia re:
h obiec typ cane Object Conversia refe
4 58 afd egy, “Te StimViata si moartea unui obiect
Obiectele se nasc si mor. tu esti la comands. Tu decizi cand si cum le construiesti-Tu decizi cand le
[Link] de gunoi recupereaz [Link] acest capitol vei afla cum sunt create obiectele, unde isi
duc ele viata si cu sa le pastrezi sau s le abandonedi intr-un mad eficient. Aceasta Inseamna ca vom varbi despre
zona heap, despre stiva, domeniu de valabilitate, constructori, superconstructori, referinte nule si eligibilitatea
pentru colectarea gunoiului.
Sti
atuncl cand as . Metode in stiva
mel : : :
zone get Rota EMS Unde iriese vara
_ Singuia
ona heap, acolo unde tadiesc obiectele si variabilele
Unde triiese va
Miracolul nasterii obiectelor
ctorii (codul rule Ane scrii new)
izarea starii unui nou obiect Rati
rainedecati
(inl
Apelarea constructorilor supraincai
Constructori suy
Constructorii superclas a constructorilor)
i folosind metoda this()
rigbiei .d 7 este atrbut un nou oblect Ral’.
Sbandoncnd obiectul Rata origmal. Din acest Viata unui obiect
moment, prima Raté este ca 3! prajMa. Colectarea gunoiului (si eligibi
Exercitii si enigme
jatea unui obiect)
10 Numerele conteaza
Operatii matematice. Biblioteca Java API contine metode pentru valoarea absoluta a unui numar,
rotunjire, valoarea minima/maxima dintre doud numere etc. Dar ce spui despre formatare? Poate vrei sa afisezi
numerele cu exact doua pozitii zecimale sau s4 separi grupurile de mii. Sau poate vrei $4 afisezi date calendaristice
ori $4 le manipulezi. Ce parere ai despre transformarea unui object String intr-un numar? Sau despre transformarea
unui numar intr-un obiect String? Vom incepe prin a Invata ce inseamna ca 0 variabila sau o metoda sa fie statice.
Variabitele statice sunt partajate Clas Math (ehiar ai nevoie deo instan a
de toate instantele unei clase vee sealioe : 7
‘ariabile statice
arpa mghetata Conk hetenl Constante (variabile statice finale) 282
punart Metode din clasa Math (random), round(), abs() etc.) 286
Clase de impachetare (Integer, Boolean, Character etc.) 287
Autoincasetarea 289
Formatarea numerclor 204
Formatarea $i manipularea datelor calendaristice 301
Importuri statice 307
Exercitii si enigme 310
xiiUn comportament riscant
Se fntampla oricui. Fisierul nu mai exists. Serverul a cazut. Indiferent cat esti de bun ca programator, nu
poti controla totul. Atunei cand scrii o metoda riscanta, ai nevoie de cod care sd se ocupe de lucrurile neplacute
care pot aparea. Dar de unde sti cd o metoda este riscanta? Si unde pui codul care va trata situatiile exceptionale?
in acest capitol vom construi un Player MIDI care foloseste clase riscante din
bine sé afli aceste lucruri.
ioteca API JavaSound, asa ca ar fi
316
ebuie si apelezi o metoda riscanta? 319
A -Sa intimplat ceva nephicut..." 320
8 INAPO! O excep wn 1% Fas ’ *
hie Compilatorul garanteaza cA (verified dacét) esti constient de riscuri 321
Interceptarea exceptiilor folosind un bloc try/catch
(biiatul pe skateboard) 322
Controlul fluxului in blocurile try/eatch 326
Blocul finally (indiferent ce se intampla, nu uita si stingi cuptorul 327
opeleari 0 Interceptarea exceptiilor multiple (ordinea conteazi) 329
metoda riscanta ' Bae a s
clasd cuo Deelar xceptii (evito!) 335
metoda riscanté :
Th c lege!) 337
Bu de cod (producerea sunetelor) 339
Exercitii si cnigme 348
O poveste grafica
Nu ai ce face - trebuie sa te ocupi si de interfetele grafice. chiar daca iti place sa
crezi cd tot restul vietii vei scrie cod pe parte de server, in care interfata client este 0 pagina web, mai devreme sau
mai tarziu vei fi nevoit s4 dezvolti instrumente de lucru, pentru care vei avea nevoie de o interfatd grafica. Ne vor
trebui doud capitole pentru a discuta despre interfetele grafice cu utilizatorul (GUI - Graphical User Interface) sia
invata concepte cheie ale limbajului Java, inclusiv tratarea evenimentelor si clase interne. In acest capitol vor
pune un buton pe ecran si-l vom face sa execute ceva atunci cand este apasat. Vom picta ecranul, vom afisa 0
imagine jpeg si chiar vorn adauga imaginilor ceva animatie,
Prima interfatd grafi 355
class ClasaMearxterna { Obtinerea unui eveniment generat de utilizator 357
Implementare nei interfete Listener 358
Obtiner venimentului ActionEvent al unui buton 360
Addugarea elementelor grafice in GUI 363
ne distram cu mponeni() 365
Obiectul Graphies2D 366
Obiectele interne si cele externe mult de un buton pe ecran 370
au acum o legdtura intima. asele interne ne vin in Listener devine interna) 376
af) je (mut, pice A Al, muti, picteazil...) 382
eee ae gberte ye itraul muuzicii) 386
legatura specials, Obiectyl | € 304
intern poate folosi
varisbilele obiectuui extern
(5i mers).
extern
xiiiComponentele
din
est primes
\atimea
preferata,
Componentele
din
nord primese,
‘mal
preferata,
xiv
Utilizarea bibliotecii Swing
Biblioteca Swing este usor de folosit. asta daca nu-ti pasa unde ajung lucrurile pe care le pui
pe ecran. Codul Swing pare simplu, dar atunci cand il compilezi si rulezi, te uiti la rezultate site gandesti: ,Hei,
chestia asta nu trebuia sa apara acolo!” Ceea ce face mai usoard scrierea codului este si ceea ce-l face, in acelasi timp,
mai greu de contralat ~ administratorul de machete (Layout Manager). Dar cu putin efort, pati face ca
administratorul de machete s8-ti respecte [Link] acest capitol vom lucra cu biblioteca Swing si vom afla mai
multe despre elementele grafice.
vest 5i
sud si
ttimea
Componente Swing
Administratorii de machete (ci controleaza dimensiunea
Trei administrator de machete (cher
BorderLayout ¢
r, flux, cast
teresat de cele cine’ regiuni)
FlowLayout (interesat de ord
BoxLayout (ca si FlowLayout, d:
pe vertical)
‘JYextField (pentru introducerea textului pe o singura linie)
JTextArea (pentru text pe mai multe lin
|. cul derulare)
JCheckBox (este selec
[List (Hi
Bucatari
i eu sclectie si derulare)
ia de cod
Exercitii si enigme
mensiunea preferata a obieetelor)
poate dispune componentele
400
401
403,
404
408.
ail
413.
tlt
116
417
118
424
Salvarea obiectelor
Obiectele pot fi aplatizate si apoi readuse la starea normala. obiectele au stare si
comportament. Comportamentul este definit de clasd, dar starea este specifica fiecdrui abiect individual. Dacé
programul tau trebuie sa salveze starea obiectelor, poti sd mergi pe calea mai grea, interagand fiecare obiect si
scriind intr-un fisier, intr-un format creat de tine, valoarea fiecarei variabile de instanta. Sau poti sa alegi calea OO
(programarea orientata spre obiecte), mai simpla — pur si simplu aplatizezi obiectul (il serializezi), apoi il reconstitui
(il deserializezi) pentru a-| readuce la forma initial.
serialzat
G
ang
intr ebari? deserializ at
Salvarea starii unui obiect
Scrierea unui obiect serializat intrun fisier
Fluxuri de intrare si de iesire in Java (conexiuni si inlantuiri)
Serializarea obiectelor
izable
interfetei Ser
Implemer
bilelor tranzitc
rea unui obiect
de text
in atomi lexieali cu metoda split()
Exercitii si enigme
431
432
437
439
441
47
452
454
458.
462
466.Crearea unei conexiuni
Conecteazé-te cu restul lumii. Toate detaliile de nivel scazut sunt rezolvate de clasele din
biblioteca [Link]. Unul dintre marile avantaje ale limbajului Java este faptul ca transmiterea si receptianarea
datelor prin retea sunt operatii de intrare/iesire care folosesc un alt flux de conexiune la capatul inlantuirii. In acest
capitol vom crea socluri client. vom crea sacluri server. Vom crea client si servere. inainte de sfarsitul capitolului vom
avea un client de chat complet functional, cu fire de executie multiple. Tocmai am spus cu fire de executie multiple?
umului de chat 473
Conexiune SEK iterea si receptionarea 474
Pe portul S000 cu Socluri cle retea 475
ode de Ia Porturi TCP 476
68a I96.l6u.1.103 fatclor de la un soclu (folosind un flux BufferedReader) 478
Scrierea datelor citre un soclu (folosind un flux PrintWriter) 479
Scrierea programului DailyAdviceClient 480
Serierea unui server simplu 483
Codul programului DailyAdviceServer 484
Serierea unui client de chat 486
Stive multiple pentru apeluri 490
Lansarea unui nou fir de executie (creare si pornire) 492
Interfata Runnable (sarcinile firului de executie) 494
Cele trei stari ale unui obiect Thread (nou, executabil, in executic) 495
Ciclul executabil-in executie 496
Planificatorul firclor de executie (decizia e a Ini, nu ata) 497
501
~Adormirea* unui fir de execut
Crearea si lansarea a dowd fire de executie
Probleme de concuren
poate fi salvat acest cuplu’
Ryan gi Monica; o problemi de concurenta in cod
Blocarea pentru atomizarea exect
Oni
ingrozitoarea problema a actual
¢ obiect are un sistem de blocare
pierdute*
Metode sincronizate (prin blocare)
Blocaj!
Codului clientului de chat cu fire multiple de execu
Cod gata pregatit pentru serverul de chat
Exercitii
cnigmeStructuri de date
Sortarea in Java este floare la ureche. ai la dispozitie toate instrumentele pentru colectarea si
manipularea datelor fara s3 scrii algoritmi proprii de sortare. Java Collections Framework are o structura de date
care ar trebui sa fie suficienta pentru, practic, orice ai avea de facut. Vrei sa pastrezio lista in care sa pati adduga cu
usurinta noi elemente? Vrei sa gasesti ceva dupa nume? Wei sd creezi o lista care elimina automat elementele
duplicate? $a ordonezi colegii de birou dupa frecventa cu care te sapa? Sa sortezi animalele de companie dupa
numiéarul de trucuri pe care le-au invatat?
eo be : Colect
F Sortarea unei liste ArrayList cu metoda [Link]
Liste Tipuri generice si ve
area tipurilor
Sortarea obiectelor ca
¢ implementeaza interfaya Comparable
byte Sortarea obiectelor cu un Comparator propriu
5 Biblioteca API pentru colectii = liste, seturi gi harti
rea duplicatelor cu HashSet
Seturi Evi
Suprascrierea metodelor hashCodle() si equals()
3 yt a HashMap
a caracterelor de inlocui
pentru polimorfism
si enigme
1 Este timpul sa dai drumul zmeilor. aiscris codul. Ai testat programele. Ai rafinat codul. Ai spus
tuturor ca totul ar fi perfect daca nu ar trebui s4 te mai uiti vreadata la o linie de cod. Dar, in final, ai creat o opera de
arta. Ceva care chiar functioneaza! Dar acum ce faci? in aceste ultime doud capitole ale cartii vom discuta despre
organizarea, impachetarea si distribuirea codului Java. Vom vedea care sunt optiunile de distribuire locala,
semilocala si la distantd, inclusiv arhive jar executabile, Java Web Start, RMI si miniservere (Servlets).Relaxeaza-te.
Cateva dintre cele mai interesante lucruri pe care le poti face in Java sunt mai simple decat ai putea s4-ti inchipui.
Optiuni de distribuire a codului S82
Pastreaza separat fisicrele cu cod sursa si cu clase 584
AR executabile
area unei a
uneiz
Pune clasele in pachete!
Pachetele trebuie sii aibi o structura de directoare corespunziitoare
mpi rularea cu pachete
yronser| | ie mpilarea cu optiunea —d
hive JAR executabile
[Link] rea unel arhive JAR execu
Java Web Start (JWS) pentru distribuirea din web 597
a distribuirea unei aplicatii JWS 600
i enigme 601Calculul distribuit
] A fila distanta nu este intotdeauna ceva rau. sigur, lucrurile sunt mai simple atunci cand
toate componentele unei aplicatii se afla intr-un singur loc, intr-o singura zona heap, gestionate de aceeasi masina
JVM. Dar acest lucru nu este intotdeauna posibil, Sau de dorit. Imagineaza-ti ca ai o aplicatie care face calcule
masive. Sau cd aplicatia are nevaie de date dintr-o baza de date protejata. In acest capitol vei invata sd folosesti
uimitor de simpla tehnolagie Java de apelare a metodelor la distanta (RMI - Remote Method Invocation). De
asemenea, vom discuta pe scurt despre miniservere (Servlets), Enterprise JavaBeans (EJB) si Jini.
Tehnologia Java RMI (Remote Method Invocation), in detaliu 614
g Client Bp Server Miniservere (0 prea ila)
= Enterprise vans (E]B), foarte pe scurt 631
RACORD RMT (scHELET am Jini, cel mai frumos true posibil 632
O O ao Constru rowser de servici 636
sae 648
‘oviect
Piece ag
Anexa A
Proiectul final din bucdtdria de cod. Intregu! cod pentru aplicatia BeatBox client-server cu
functie pentru discutii online. Sansa ta de a deveni o stea rock.
BeatBoxFinal (cadul aplicatiei client) 650
BeatBoxServer (codul apl ver) 657
Anexa B
Primele zece lucruri care nu au incaput in cartea propriu-zisa. inca nu te putem
lasa sa-ti iei zborul, Mai trebuie s-ti spunem cateva lucruri, dar acesta chiar este sfarsitul cartii, Serios,
Lista cel 660
Index
xviiintroducere
lata ce poti face pentru a-ti obliga ereierul sa te asculte
Noi ne-am facut datoria
de plecat
Incearca lucrur
Restul depinde de tine. Aceste sugestii sunt doar un punct
4 intelegi ce este potrivit pentru tine si ce nu.
urmareste-ti creierul si ineeare
Decupeaza aceasta parte si tipeste-o pe frigider,
--------$¢ --------------------------------------------------
@ Redu ritmut. Cu cat intelegi mai mut © Bea apa. muita.
atat trebule s memorezi mai putin. Creierul fanctioneaza cel mai bine atunci cind
c afl intr-o baie de fuide. Deshidratarea (cat
poate aparea inaintea senzatiei de sete) rec
Nu te mull
intrebare, nu
ni doar sé citesté. Cand ajungi lao
imediat la raspur
Imaginears ai in fat o perso functia cognitivi.
acea intrebare. Cu cat iti fortezi
pune ace: intrebare. Cu cat iti fortezi ¢ Qe Vorbeste deapre ceea ce citestl. Cu glas
gindeasc prof este mai re.
probabil sa inveti si sa retii ceva. ‘ . ‘= : . ¥
' Vorbirea activearii o alta portiune a creierului.
© Rezoiva exercifille. Scrie propriile notite. Daca incerci sa tntelegi ceva sau vrei s4 cres
Am inclusin i rezolvirile probabilitatea de a memora un anumitlucru,
i mai buns
lor, d: ra iti oferd altcineva solutiile este ca si spune-l cu glas tare. O metoda
cum cineva ar face flotiri in locul iu. Si nu este sa incerci si-l explici alteuiv:
de- ajuns doar 84 fe wifi la excrcitii. Foloseste un repede si este posibil sa aduci la Jumind idei
) multime de devezi care arata ca despre care nici nu stia a
in Hmprl inva citeai acel lucru,
itatea fiz!
eficienta aceste © Ascuita-ti creierut.
6 Citeste sectiunile ,nu exista intrebari Sesizeaza momentul in care creierul este
stupide“, ‘at. Daca
Ac i a toate intrebarile
spun sau s
te de text supliment ici o pauza. Dincolo de un
nutul de baza! Uneori, invrebarile inv mai repede daca incerci
.este timpul
mit punct, 1
a acumulezi pre
surile, Nu sunt
parte din con
sunt mai utile decat raspunsurile, multe informatii, ba chiar poti afecta procesul de
© Nu citi totut in acetasi toc. invatare.
Ridica-te, intinde-te, schimbi scaunul, schimbi fo] Incearca s& simti ceva!
mera. Schimbarile ajuti creierul s& siméa ceva Creierul tau trebuie sd ste cai aceste lucruri sent
conectarea prea stransd a informatiilor importante, Implica-te in povestirile din carte,
acumulate de un anumit loc, Serie propriile notite in dreptul imaginilor. Un
@ Fain aga fel ca acesta sa fie ultimul lucru mormait de nemultumire proasti este
pe care-I citesti inainte de culeare. Sau cel mai bun deca&t sf mu simti r
putin ultimul lucru care te obliga sa ®D Scrie $i ruleaz codul.
gandesti. 5 : 7
Scric si ruleazi exemplele de cod. Poti apoi si
O parte 4 procesului de invatare (in special
transferarea informatiilor in memoria pe termen
lung) se desfisoara dupé ce lasi cartea jos. Creie-
rul are nevoie de timp in care si fad propriile
preluecrari, Daca afli ceva nou inainte de ase
i ACESte pi © parte din ccea c
invatat se pierde,
experimentezi, modificind si imbundtaitind codul
(sau fiedndicd praf—uncori cea mai bund cale de
a intelege cum functioneaz’ ceva). Pentru
exemplele lungi sau codul gata pregatit, poti
descarea fisierele sursa de pe sitesul
headfirstjav:
com,
estiaiciy xxvcum sa folosesti aceasta carte
De ce ai nevoie pentru aceasta carte:
Nuwai nevoie de nici un alt instrument de dezvoltare, cum any a IDE
(Integrated Development Environment — mediu de dezvoltare integrat). Mai mult, iti
recomandam sa. nt folose: mic altce -cit un simplu editor de text pana tern
aceasta carte (si mai ales nu inainte dea termina capitolul 16). Un mediu de
dezyoltare integrat te poate impiedi
este mult mai bine sa inveti folosind linia de comanda si, dupa ce intelegi cu adevarat
ce se intimpla, un instrument care automati parte a procesului,
y— CONFIGURAREA MEDIULUI JAVA
= Dacd nu ai deja versiunea 1.5 a setulul de dezvoltare Java 2 Standard Edition SDK (Software
Development Kit), vei avea nevoie de ea, Daca lucrezi sub Linux, Windows sau Solaris, poti ebtine
gratuit acest pachet de la adresa [Link] (site-ul web al companiei Sun pentru dezvoltatoril Java).
De obicei, nu este nevoie de mai mult de daua clicuri de mouse pentru a ajunge de la pagina principala
la pagina de descarcare a J2SE. Descarca ultima versiune non-beta publicata. Setul SDK oontine tot ce
ai nevoie pentru compilarea si rularea programelor Java.
Daca folosesti sistemut de operare Mac OS X 10.4, setul Java SDK este deja instalat. Face parte din
OS X si nu ai navoie de nimic altceva. Daca folosesti o versiune OS X mai veche, ai o versiune Java in
care functioneaz’ 95% din codul din aceasta carte.
Nota: Aceasta carte se bazeaza pe versiunea Java 1.5, dar, din motive inca neclare, legate de
marketing, la putin timp dupa lansare, Java a schimbat numele versiunii in Java 5, pastrand numarul de
versiune ,1.5° pentru setul de dezvoltare. Ca urmare, daca intdlnesti numele Java 1.5, Java 5, Java 5.0
‘sau Tiger” (numele de-cod original al versiunii 5), refine ca toate reprezinté aceeas! versiune, Nu au
existat niciodata versiunile 3.0 si 4.0 - Java a sarit direct de la versiunea 1.4 la §.0, dar inca pofi intalni
locuri unde este numité 1.5 In loc de 5. Nu intreba de ce. (Oh, si pentru a face lucrurile si mai
interesante, atat Java 5, cat gi Mac OS X 10.4 au purtat acelast nume de cod, respectiv . Tiger’, gi
deoarece OS X 10.4 este versiunea Mac OS de care ai nevoie pentru a rula Java 5, este pasibil 8 auzi
pe cineva vorbind despre Tiger sub Tiger’. Nu inseamna altceva decal Java 5 sub OS X 10.4),
Setul SDK nu include documentatia API, de care vei avea cu siguranta nevoie! Viziteaza din nou site-ul
[Link] gi descarca dacumentatia J2SE API, Poti avea acces la documentatia API si on-line, fara
s& 0 descarci local, dar este un adevarat chin. Crede-ne, merit s8 descarci intregul pachet.
= Ainevoie de un editor de text. Practic, poti folosi orice editor de text (vi, emacs, pico), inclusiv
editoarele cu interfata grafica furnizate Impreuna cu cele mai multe sisteme de operare. Notepad,
Wordpad, TextEdit etc. pot fi folosite, cu conditia sd te asigun cd nu adauga extensia txt" la numele
figierelor cu codul sursa
upd ce descarci si despachetezildezarhivezifdecomprimi (In funcfie de versiune si de sistemul de
operare) pachetele Java, trebuie s& adaugi in variabila de mediu PATH o Inregistrare care s& indice
subdirectorul /bin din directorul raddcina Java. De exemplu, dacé pachetul J2SDK a creat pe disc un
director numit j2sdk1.5.0°, uité-te in directorul respectiv si vei gasi subdirectorul ,bin’, unde se afl
figierele binare (instrumentete) Java. Directoru! bin este cel catre care ai nevoie de 0 cale de acces
(PATH), astfel inet atunci cand seri:
% javac
In linia de comand, terminalul pe care lucrezi sa stie unde gaseste compilatorul javac.
Nota: daca ai probleme cu instalarea, iti recomandam sa vizitezi site-ul [Link] gi sa te inscri la
forumul Java-Beginning! De fapt, ar trebui sé faci acest lucru indiferent daca ai probleme sau nu.
Nota: o parte din codul sursa din aceasté carte poate ‘i descrcal de pe site-ul [Link].
xxvi_ introducereCateva lucruri pe care tile spunem in ultimul minut:
Conside:
aceastd carte 0 experienta cognitiva, nu un ghid de refe Am eliminat in
mod deliberat orice te-ar putea impicdica sd fnvefi ceea ce considera important in
punctul respectiva n plus, ar trebui sa incepi cu inceputul, deoarece cartea se
bazeaz pe anumite presupuneri privind ccea ce ai t deja.
Am folosit diagrame simple de tip UML
Daca am fi folosit UML (Unified Modeling Language) pur, ai fi vazut ceva ce seamand cu
Java, dar cu o sintaxa complet gresitd. Ca urmare, am folosit o versiune UML.
mplificata, care m cl spre limbajul
UML, muti face griji c
Nu te gandi la organizarea si impachetarea codului propriu
decat la sfarsitul cartii.
in aceasta carte ne putem ocupa de
lor orgar e sau acini
nsistam asupra
te de dezvoltarea programelor
ile vor
n Kaisat pentru sfirsitul ertii (capitolul 17).
usor pe calea de in alimbajul
la urmare,
Exercitiile de la sfarsitul capitolelor sunt obligatorii;
enigmele sunt optionale. Raspunsurile, pentru ambele,
le gasesti la sfarsitul fiecarui capitol.
‘Trebuie sa retii un lucru legat de enigme — acestea sunt enigme. La fel ca problemele de
logica, ghicitorile si cuvintele incrucisate, Exerriféile sunt incluse pentru a te ajuta sa
i cea ce ai invatat si ar trebui si le rezolvi pe toate. Enigmele sunt o poveste
diferita si unele dintre ele sunt destul de dificile, int-un mod specific enigmelor. Acestea
sunt destinate celor carora le pla
dintre aceste persoane, Dae
indiferent de rezultat, nu fi descur
ai suficient timp sa descoperi tox
si probabil suii deja da
rezolvi caiteva, dar,
daca nu reusesti sa rezolvi o problema sau daca nu
urile,
Nu toate exercitiile ,Ascute-ti creionul* au raspunsuri.
Pentru uncle dir
fu trebuie si decizi ¢
Je nut exist un raspuns c
4 rispunsurile sunt core
, In timp ce pentru altele, fapt
te face parte din experienta cognitiv:
Exemplele de cod sunt cat mai simple posibil
Este frustra
tebuie sa le in
minime
Ca urmare, nu te astepta ca prog
fi exercitiul fan, dupii ce termini ca
invéiere, asa cA nu sunt intotd
i cae a
si pareurgi 200 de linii de cod ca
egi. Cele mai
text, astfe!
siruictiuni pe care
de ce
tea. Exemplele din carte sunt scrise spec
tuna complet functic
pentru
le
introducere
am forest 2 vemos
aie".
fatra()
mananca()
aleargaDupaPisica()
Tego OY
ar trebui 56 rezoWl
toate exercitile
scuteti creionul.
RegQueute si crejonul
“A,
Activitatite im
Ca exerci (c,
‘aginea nor
ore.
yoate
Pantofi de sport)
Sunt ob}
ligatoril! Wy.
Sar peste ele dacg
Exereitii
Activitatie marcate
¢a enigme (cu o
piesa de puzzle) sunt
optionale si, daca
nui plac problemele
de logic& sau
cwintele ncrucate,
probabit nui vor
placea nici acestea,
esti aici»
wxviiredactare tehnica: Jessica si Valentin
Redactori de specialitate
.Felicitirile sunt pentru toti, iar greselile sunt responsabilitatea
exclusiva a autorului...* Crede cineva acest lucru? li vezi pe cei
doi de pe aceasta pagina? Daca descoperi o problema tehnica, Valentin Crettaz
probabil este vina for. +) Ll
Jessica Sant
Cravata tut Valentin
Valentin Crettaz are un masterat in
culatoare, obtinut la Federal Institute of
Technology (EPFL), Lau:
luerat ca inginer software la SRI International
Jess tucreazi la Hewlett-Packard, in echipa (Menlo CA) si ca inginer sef la Software
Sel-Healing Services. A obtinut 0 diploma in Engine tboratory, EPEL,
ingineria ealeulatoarelor (Computer
gineering) la Universitatea Villanova, detine
certificate SCP] 1.4 si SCWCD si mai are foarte
in pana la obtine asteratului ca inginer
is
Vi ‘alentin este cofondator si Director tch
companiei Condris Technolog
in dezvoltarea soluti
software.
conduce masina MINI Cooper §, Jess isi disputii
cu pisicile firele pe care le foloseste pentru
impletit sau crogetat (vrea cineva o pala
‘igine, este Salt Lake C Utah (nu,
Liu, tocmai
1 prezent locuieste in apropi
udelph cu sotul
doua pisi
si proiectare,
re. Pe ling’ faptul cd-si ingrijeste sotia gi
. citeste, face putin sport, Valentin
modereaza forumurile SCBCD si SCDJWS pe
site-ul [Link]. Detine certificate SCJP,
SCJD, SCBCD, SCWCD si SCDJWS. De
‘ia de a fi coautor al
SBCD Exam Simulator.
: | . asemenea, a avut oc
forumurile tehnice pe programului Whislabs St
le modereaza pe site-ul [Link].
Poti
care
ti de faptul c& Fam vazut
purtand eravata.)
xxviii introducereintroducere
felicitate
Alte persoane care trebuie intpQyite unt drive expert
si revizuire Jef Cumps
Corey MeGlone
De ta Editura O'Reilly:
Nenumarate multumiri merita Mike Loukides de la O'Reilly, pentru.
faptul ca a acordat o sansa acestei carti si ne-a ajutat sa transformam
conceptul Head First* int-o carte (si apoi intro serie). In momentul in
care aceasta carte era trimisa la tipar, seria cor
ituri. Multumiri lui Tim O’Reilly, pe
cu care a acceptat lansarea unui proiect camplet nou si diferit.
multumim lui Kyle Hart pentru inteligenta cu care si-a dat seam:
este locul cartilor ,,Head First" in lume si pentru kansa
sfarsit, multumiri lui Edie Freedman pentru faptul
capul de pe cope cirtilor din a Hal serie.
ne-a fost mereu a
Intreprinzditoarei echipe de testare $t revizuire:
Principalele merite si multumiri se cuvin directorului echipei de verificare
tchnica de la javaranch, Johannes de Jong. Este a cincea oara cand ne
ajuta cu o carte din aceasta serie si suntem uimi ined mai vorbeste cu.
noi. Jeff Cumps este ide noi si cauta ira odihna.
subiectele care necesita mai multa claritate sau eorecti
udine.
Corey McGlone, esti beton, Si dai cele mai clare explicatii de pe site-ul
javaranch. Probabil ai observat ca am ,,imprumutat” cateva dintre ele.
Jason Menard ne-a sustinut tehnic cue multime de detalii, iar Thomas
Paul, ca intotdeauna, ne-a ajutat cu raspunsuri de exper i
evidenta aspecte Java subtile pe care noi, ceilalti, leam trecut cu
vederea. Jane Griseti stic o multime de lucruri despre Java (plus cate
ceva despre scrierea unei edrti) si a fost un ajutor nemaipomenit pentru
© a cartii, impreuna cu Barry Gaunt, care are o indelungata
javaranch.
Jason Menard
i, iar Chris Jones, John Nyquist, James Cubeta, Terri Cubeta si
Ira Becker ne-au ajutat foarte mult la prima editie. Marilym de:
. Queiroz
Multumiri speciale catorva persoane care ne-au ajutat de la primii pasi
ai acestei Angelo Celeste, Mikalai Zaikin si Thomas Duff
([Link]). De asemenea, multumim extraordinarului nostru agent,
David Rogelberg de la StudioB (serios vorbind, ce facem cu drepturile
nyquet Chris Jones
John
tra Becher A
Rodney J.
Woodruff
estiaiciy xxixalte multumiri
Tocmai cand credeam ca s-au terminat multumirile*
Alti experti tehnici Java care ne-au ajutat ta prima editie (intr-o ordine aproape aleatorie):
niko Hori, Michael pitz, Mike Gallihugh, Manish Hatwalne, James Chegwidde)
Mathur, Mohamed Mazahim, John Paverd, Joseph Bih, Skulrat Patanavanich, Su
Suddhasatwa Ghosh, Ramki Srinivasan, Alfred Raouf, Angelo Celeste, Mikalai 2
Zoetebi ry Gaunt si Mark Dielen.
Echipa care a luerat la enigmele din prima editie:
Dirk Schreckmann, M:
Jason Menar
Leners — Campion JavaCross*, Rodney J. Woodruff, Gavin Bong si
Este un norec pentru javaranch c: oferiti ajutorul.
Alti couspiratori edrora vrem sd le multumin:
Paul Wheaton, pentru sprijinul acordat in forumul javaranch miilor de persoane care vor sa
invete. -
Solveig Haugland, ,stapana* a J2 Dating Design Patterns*,
Autorilor Dori Smith si Tom Negrino ([Link]), pentru ca ne-a
in lumea cartilor tehnice.
ajutat sa navig
Complicilor nostri in ac ii »Head First
Design Patterns”), pent
‘a seric, Eric Freeman si Beth Freeman (autorii
cd ne-au dat Bawls™ ca sa terminam cartea la timp.
Sherry Dorris, pentru toate lucrurile care conteaza cu ade
Curajosilor care au adoptat ined de la inceput seria , Head First
Joe Litton, Ross P. Goldberg, Dominic Da Silva, honestpuck, Danny Bromberg, Stephen Lepp,
on Hughes, Erie Ch Nguyen, Mark Nathan Oliphant,
Michael Bradly, Alex Darrow, Michael Fischer, Sarah Nottingham, Tim Allen, Bob Thomas si
Mike Bibby (primul)
* Am multumit unui numar mare de oameni deoarece verificam teoria conform careia toti cei mentionat| pe
paginile de multumiri vor cumpéra cal putin un exemplar, poate chiar mai multe, dacd ne gandim la rude si
prieteni, Daca vrei s4 te regasesti pe pagina de multumini din urmatoarea noastra carte si ai a familie
numeroasa, scrie-ne.
xxx — introducereaval
ate de a
tea unui
a stabilesti cat
de-bine te invataé ceva. Atac
Ja Java exceleaza din acest
punet de vedere."
aprec
slashdot.
4
»- este cu siguranta timpul
sd, lansezi un Atac la Java.“
Scott McNealy, Sun Microsystems,
tand CEO
Thairman, Presi
Atac la Java aduce pagina
tiparita mai aproape ca
r& ingenioasa
nteles, autorii
ansformaé invatarea,
limbajului Java intr-o
experienta in care te intrebi
t timpul oare ce mai
Warren Kenujjet,
ware Development Magazine
Cartea are un ritm aler
este ireverentioa:
amuzanta ¢ trenanta.,
Ai grija — s-ar putea chiar
sd inveti ceva!“
Ken Arnold, coautor (alaturi de james
Gosling, ceatorul timbajului fava)
= The Java Programming L:
il
| 781
59496.
Wl
961175
594
Atac la Java
Atae la Java este o metoda completa pentru programarea orientata spre
obiecte (OO) gi Java. Conceputa in confor
prietenoase pentru creierul uman, aceasta carte acopera toate aspectele
te cu prineipii de invatare
limbajului Java, de la elemente fundamentale la notiuni avansate, inclusiv fire
de executie, socluri c
ejea si programare distribuita. Mai important decét
atat, vei it Andesti orientat spre obiecte
vga
Parcurgerea acestei carti nu se rezuma la o simpla lectura te vei juca,
vei rezolva enigme, vei juca rolul unui detectiv si vei interactiona eu limbajul
nat. In acelasi t
Java in moduri pe care nici nu qi le-ai imagi
cod Java, deloc putin, inclusiv un joc si un client de chat muzical in rejea.
np, vei serie
Abordarea
fica procesulni de invatare din cartea-Atac ta fava te-ajuta siti
intiparesti rapid in memorie cunostintele de care ai nevoie. Pregateste-te siti
deschizi mintea si sa lasi sa intre, pentru totdeauna, informatii
. precum
* Limbajul Java
* Dexvoliarea orientata spre obiecte
* Scrierea, testarea si distribuirea aplicatiilor
* Utilizarea bibliotecii Java APL
* Tratarea exceptiilor rs
* Executia multifilara a
* Progr
marea interfetelor grafice cu clase Swing
cu RMI si socluri
nerice
* Utilizarea rewele
* Colectii si tipur
Daca vrei sa inve'
Java, ai nevoie de cartea Atac ta fa
Kathy Sierra a lucrat ca programator si ca profesor pentru
instructorii Java, invatindu-i cum sa predea ultimele tehnologii.
Este autorul majoritatii examenelor Sun de certificare Java
Este fondatoarea celei mai importante (si mai prietenoase)
comunitati Java (bazata numai pe voluntariat), [Link],
Bert Bates lucreaza de 20 de ani ca prog
amator, instructor
6Ll
Java si autor pentru multe dintre examenele de certificare Java
ale companiei Sun, A luctat o perioada indelungata in
domeniul intel:
entei artificiale. Impreuna cu Kathy Sierra,
a creat seria Atac
S-ar putea să vă placă și