0% au considerat acest document util (2 voturi)
849 vizualizări18 pagini

Atac La Java PDF

Încărcat de

David Hoff
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
0% au considerat acest document util (2 voturi)
849 vizualizări18 pagini

Atac La Java PDF

Încărcat de

David Hoff
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
Sunteți pe pagina 1/ 18
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 vii Sa 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 viii Cunoaste-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 interfetelor.Ce este o interfata? Este clas 100% abstract’. Ce este o clasd abstracta? Este o clasa care nu poate fi instantiata.La ce este utilé o asemenea clasa? Citeste capitolul... Ar trebui ca unele clase sa nu poata fi instar 200 Object o = al.get (id): ase abstracte (nw pot fi instantiate) 201 Caine d = (Caine) o; Metode abstracte (trebuie sa fie implementate) 203 d.latra(); 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 Stim Viata si moartea unui obiect Obiectele se nasc si mor. tu esti la comands. Tu decizi cand si cum le construiesti-Tu decizi cand le abandonezi.Colectorul de gunoi recupereaz memoria.in 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 xii Un 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 xiii Componentele 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 vointa.In 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 java.net. 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 cnigme Structuri 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 Collections.sore 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 MyApa.class rea unel arhive JAR execu Java Web Start (JWS) pentru distribuirea din web 597 a distribuirea unei aplicatii JWS 600 i enigme 601 Calculul 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 xvii introducere 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 xxv cum 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 java.sun.com (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 java.sun.com 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 javaranch.oom 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 wickediysmart.com. xxvi_ introducere Cateva 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» wxvii redactare 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 javaranch.com. 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 javaranch.com. Poti care ti de faptul c& Fam vazut purtand eravata.) xxviii introducere introducere 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 (wwduff.com). 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 xxix alte 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 (backupbrain.com), 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 — introducere aval 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), javaranch.com, 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