ABONAMENTE VIDEO REDACȚIA
RO
EN
Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 10
Abonament PDF

Recenzia cărții: Thinking in Java de Bruce Eckel

Silviu Dumitrescu
Line manager@Telenav



PROGRAMARE

Această recenzie va fi un pic altfel. Cartea pe care o voi descrie este "un clasic". Pentru ea voi scrie… altfel. Este, dacă-mi permiteţi, prima mea mare dragoste informatică. De când mă ştiu sunt pasionat de informatică. Legăturile mele cu acest domeniu al ştiinţei şi tehnologiei au rădăcini în găsirea algoritmilor de rezolvare a problemelor matematice, dar nu numai. Poate că le-am pus în valoare atunci când am intrat la liceul cu profil informatic, dar atractivitatea a fost, aşa precum am spus, mult mai veche.

În domeniul la dezvoltarii de soft am lucrat în multe limbaje, de la Asiris, Fortran, Cobol pâna la mai modernele Pascal sau C. Fiecare a avut frumuseţe şi utilitate la un anumit moment.

Spre sfârşitul anului 1998 descoperisem plăcerea utilizării Delphi-ului. Cred că începusem să mă modernizez… Numeroasele tool-uri vizuale pe care le oferea, posibilitatea utilizării formularelor de completare a proprietăţilor sau acţiunilor mi se păreau fascinante. M-am mai răzgândit apoi, când mi-am dat seama cât de puţină flexibilitate ofereau aceste tool-uri.

Fiind dornic de a fi în temă cu noutăţile în domeniul informatic am citit un articol despre noul limbaj Java şi de buna impresie pe care o lăsase în lumea dezvoltatorilor de soft. Nu ştiu de ce am încercat să dezvolt prima aplicaţie în Java. Nu îmi recomandase nimeni asta şi nici nu ştiam pe cineva care lucra în Java. Niciodată nu am ştiut să explic de ce am fost atras de anumite lucruri sau persoane, poate este doar rezultatul unui impuls. Editam în Notepad, compilam şi rulam în linia de comandă. Atracţia a fost totală şi de atunci au trecut 14 ani şi atracţia continuă şi se intensifică.

Nu pot spune că nu am mai lucrat şi în alte limbaje de programare: PHP, Symfony, Smarty, JavaScript, Ruby on Rails, C, C++ sau chiar Delphi, poate şi în altele de care nu îmi aduc aminte acum, dar plăcerea a fost unidirecţională: Java.

Şi totuşi, de ce Java? Mulţi dintre noi ştim că Java a adus unele schimbări faţă de limbajele de programare ale vremurilor respective. Spre exemplu, Java permitea doar moştenirea simplă, Java elimina pointerii, şamd. Dar, întreaga construcţie a limbajului Java a fost orientată spre programator. Java permite implementări de aplicaţii complexe, cu flexibilitate sporită, implementări ale punctelor de extensie, scalabilitate şi multe altele. Există studii prin care s-a dovedit că timpul de dezvoltare al unei aplicaţii în Java este de două ori mai mic decât în cazul folosirii limbajului C++. Mulţi însă, pot aduce ca minus al limbajului Java timpul de rulare al aplicaţiilor. Este adevărat, interpretorul Java face multe operaţii până când codul compilat este executat. Acestea ţin printre altele de portabilitatea limbajului. Deşi s-au făcut progrese importante în acest sens, pentru aplicaţiile stand alone timpul de execuţie este uşor mărit faţă de al aplicaţiilor C++. Pentru aplicaţii enterprise însă, acest timp este comparabil acelaşi cu al altor limbaje ce permit dezvoltarea de aplicaţii enterprise.

Thinking în Java de Bruce Eckel, a fost prima carte cu adevărat completă pe care am citit-o despre Java. De prima ediţie am făcut rost, după multe căutări, de la un prieten din Germania în format… pe hartie de copiator şi expediată printr-o cunoştintă. Cred că versiunea de Java de atunci era 1.2, maxim 1.3. Platforma enterprise nu apăruse încă, dar se putea programa în reţea.

Citind-o mi-am dat seama că nu ştiam nimic despre Java. Au fost frustrări maxime, dar am parcurs-o toată şi multe dintre conceptele prezentate le-am şi înţeles. Ca urmare am şi scris o carte despre Java, cu un prieten, în martie 2002. Voiam să transmitem şi altora ce am înţeles noi.

Uitându-mă în spate, cartea scrisă atunci are o abordare simplistă, dar eu sunt mândru că este, probabil, printre primele din România pe această tehnologie.

Thinking în Java a fost întotdeauna categorisită ca o carte entry, maxim middle level. Eu însă, nu am putut vreodată să o recomand cuiva care nu ştie nimic despre Java. Îl dezarma!

Cartea este foarte completă pe aproape toate topic-urile platformei standard. Din core-ul Java cred că lipsesc doar JDBC, parsarea XML-urilor şi programarea în reţea.

Din păcate versiunile pentru platforma standard ale cărţii nu au fost urmate şi de unele, la fel de reprezentative, pentru platforma enterprise.

De-a lungul timpului am citit toate ediţiile acestei cărţi, iar în ultimii ani mi-am petrecut mult timp actualizând exemplele acestora la versiunea Java Standard 7.

Cel mai important sfat pe care pot să îl dau persoanei care citeşte această carte este: dacă topicul care vă interesează, şi de care nu ştiţi mai nimic, se află la pagina 410, spre exemplu, nu vă duceţi acolo, nici măcar la începutul capitolului, ci la pagina 23, prima a acestui material. Nu săriţi paginile, implementaţi toate aplicaţiile sugerate şi răspundeţi multelor întrebări ataşate, până la pagina cerută. Dacă vi se pare mult căutaţi altă sursă bibliografică. Totuşi, ajunşi la pagina 410 veţi avea un bagaj de cunoştinţe însemnat, pe care veţi clădi cu siguranţă topicul dorit.

Rămân la părerea că, dacă aţi parcurs întregul material al acestei cărti, poate mai puţin partea de interfaţă utilizator, care poate fi în cazul unui dezvoltator enterprise mai puţin interesantă, aţi dobândit cu adevărat un nivel ridicat de cunoştinţe pentru dezvoltarea de aplicaţii utilizând platforma Java Standard 6.

Nu toate lucrurile sunt roz. Bruce Eckel îşi creează o grămadă de pachete, pline de instrumente pe care le foloseşte în exemplele cărţii. Rolul lor este important în ingineria softului, dar pentru cineva care se grăbeşte să găsească informaţia cerută este destul de enervant. Repet, dacă aveţi timpul necesar şi vă recomand să-l găsiţi, citiţi şi înţelegeţi instrumentele folosite de autor.

Cartea abundă, de asemenea, în pattern-uri. Acesta nu este un lucru rău. Folosirea pattern-urilor este următorul pas important pentru un dezvoltator soft, după acela al implementării unei aplicaţii sub ideea "să iasă". Este recomandat să înţelegeţi aceste pattern-uri, să vedeţi utilitatea lor şi să le adaptaţi aplicaţiilor voastre.

Multe dintre pattern-urile prezentate sunt deja implementate în platforma enterprise. Container-ul se bazează pe aceste implementări. Veţi înţelege ceea ce a implementat container-ul şi veţi fi în stare să creaţi o aplicaţie cu o calitate internă a softului ridicată.

Sunt multe lucruri de spus despre această carte din punct de vedere tehnic. Organizată în 22 de capitole, acestea se întrepătrund ca topic-uri, completându-se. Primele sunt relativ de bază şi probabil simple (generalitati OOP, sintaxa limbajului, fluxuri de control), dar ştiţi oare să răspundeţi la întrebarea: Care este ordinea în care se face iniţializarea atributelor unei clase în momentul instanţierii, dacă avem constructor, iniţializare la declarare şi context de iniţializare? Sunt foarte multe astfel de provocări. Dincolo de aceste "basics" se discută amănunţit probleme precum: reflecţia, colecţiile, firele de execuţie, inner şi nested classes, manipularea erorilor, io şi nio, genericele, anotaţiile, garbage collector.

Revin cu sfatul: faceţi rost de timp pentru a citi întregul material! Chiar dacă aveţi impresia că ceea ce aveţi nevoie a fost spus într-un anumit loc, în cele mai multe cazuri există dezvoltări, optimizări şi discuţii pe soluţiile anterioare.

Îmi doresc ca fiecare dintre cei care citesc această carte să găsească ca şi mine plăcerea lucrului în Java. Este dificil şi anevoios, dar reuşita este cu adevărat plină de satistacţii.

Sunt multe altele de adăugat şi de aceea aştept cu mare plăcere comentariile şi discuţiile pe această carte.

Lectură placută!

LANSAREA NUMĂRULUI 149

Marți, 26 Octombrie, ora 18:00

sediul Cognizant

Facebook Meetup StreamEvent YouTube

NUMĂRUL 147 - Automotive

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects