Prese_TIJ_IT.fm Page vii Tuesday, September 30, 2003 8:22 PM PRESENTAZIONE Thinking in Java è un libro particolare. Certamente lo è per l’accuratezza tecnica e la profondità con cui i concetti sono esposti. Ma ciò che nettamente stacca Thinking in Java da quasi ogni altro libro è il processo evolutivo che ha portato alla sua realizzazione. Conosco personalmente Bruce Eckel da molti anni e tra le altre cose ho collaborato a questo testo, per cui ho scritto una appendice; al seminario tratto dal libro, che insegno da anni negli Stati Uniti; e ad un capitolo di Thinking in Enterprise Java, attualmente in lavorazione. Una caratteristica peculiare di Bruce Eckel è la capacità di pensare ed agire al di fuori degli schemi, ed è questa una delle componenti che rende i suoi testi così diversi dalla massa. In Thinking in Java, come in ogni altro suo libro, ogni concetto esposto fa parte di una nitida visione personale e complessiva sull’intero argomento – in questo caso, il linguaggio Java. L’autore persenta il linguaggio Java con rigore logico e fluidità pedagogica. Illustra come è fatto, ma chiarisce prima di tutto perché è stato progettato in un certo modo. Prende il lettore per mano e senza fretta lo accompagna in un territorio più vasto, quello dell’ingengeria del software. Ne illustra la storia, la morfologia, le leggi che lo governano, le asperità che lo caratterizzano, e solo a quel punto spiega come Java sia stato progettato per risolvere particolari problemi. Nessun concetto viene presentato prima che al lettore siano state fornite le basi necessarie per capirlo. Anche in questo Thinking in Java è diverso da tanti altri testi che, volendo catturare l’attenzione del lettore con “effetti speciali”, propongono fin dalle prime pagine degli esempi solo in parte comprensibili. Ma Thinking in Java è prima di tutto un libro speciale per l’enorme apporto collettivo che lo ha portato alla sua forma finale. Diversi anni fa, mentre stava lavorando alla prima edizione, Bruce Eckel decise di mettere il testo integrale pubblicamente disponibile sul suo sito Web. Forse nessuno, a quel tempo, aveva mai fatto una cosa del genere, e sembrava un suicidio editoriale. Colleghi, amici e specialmente l’editore facevano notare che nessuno avrebbe acquistato un libro che poteva essere ottenuto gratuitamente. In realtà, come l’autore stesso racconta, fu la sua mossa migliore e il successo di Thinking in Java dipende in parte da quella decisione. Accadde che il testo, che già godeva della reputazione di Bruce Eckel, fu sotto gli occhi di migliaia di persone mentre era ancora in lavorazione. Molti iniziarono a segnalare sviste e lacune, ad inviare commenti e suggerimenti, e gran parte di questi consigli furono integrati nella versione finale del libro. Fu come se Thinking in Java avesse avuto centinaia di revisori tecnici estremamente competenti e pignoli. Per la realizzazione di questa terza edizione alcuni capitoli, come quello fondamentale sul multithreading, sono stati completamente riscritti, altri di completamente nuovi sono stati aggiunti e tutti gli esempi sono stati aggiornati alla più recente versione del linguaggio. Inoltre il meccansimo di feedback da parte dei lettori è stato ulteriormente perfezionato al punto che, nella versione per il Web, alla fine di ogni paragrafo è presente un link per Prese_TIJ_IT.fm Page viii Tuesday, September 30, 2003 8:22 PM viii PRESENTAZIONE inviare automaticamente commenti riguardo a quella parte del libro. Il risultato finale è un testo maturo, di altissima qualità ed estremamente diffuso. Oggi Java e le tecnologie su esso basate si stanno rapidamente affermando sulla scena informatica. Troviamo Java in una gamma di impieghi che va dal firmware di stampanti, al software per dispositivi palmari; da semplici Applet su una pagina Web, a complesse applicazioni sul lato server, integrate con massicci database aziendali. Per chi inizia ad avventurarsi in un territorio così vasto diventa essenziale avere una guida esperta e capace, e Thinking in Java ha dimostrato di essere una della migliori. Sono dunque particolarmente felice che Apogeo abbia messo a disposizione del pubblico italiano questo testo fondamentale. Sia il novizio, che il programmatore esperto in altri linguaggi, non potranno che trarre grande beneficio dal lavoro di Eckel e di quanti vi hanno partecipato. Auguro a tutti buona lettura. Andrea Provaglio http://andreaprovaglio.com Nota dei curatori Prendendo in mano questo libro fra i tanti di una libreria, il potenziale lettore attratto dalla copertina si starà quasi certamente chiedendo: “perché dovrei scegliere proprio questo?”. Naturalmente la scelta di un libro è qualcosa che implica anche decisioni non razionali (anche se nel caso di un manuale tecnico questi fattori dovrebbero essere meno importanti) e sicuramente non possiamo dare risposta a questi fattori. Il processo di decisione, però, si basa anche su qualità oggettive del libro e questa è la sede adatta per presentarle. In primo luogo, questo libro tratta di Java, uno dei linguaggi di programmazione maggiormente utilizzati al giorno d’oggi. Questo potrebbe essere un buon motivo per impararlo, specie se associato al fatto che, secondo alcune studi, in Italia vi è una carenza strutturale di programmatori in questo linguaggio (siamo costretti a importare programmatori dall’Europa dell’Est). In secondo luogo, a differenza di tanti altri testi, questo libro presenta il Java in modo “filologicamente corretto”, insistendo costantemente sull’approccio Object-Oriented alla base del linguaggio. Le caratteristiche del linguaggio illustrate comprendono i fondamenti del linguaggio (e allo stesso tempo le caratteristiche della programmazione Orientata agli Oggetti) ma si spingono oltre fino a presentare argomenti avanzati come i meccanismi di concorrenza, le collection e i fondamenti per lo sviluppo di interfacce grafiche. Nonostante la presenza di questi argomenti avanzati, la trattazione rimane semplice da seguire e da capire. La presenza di esempi e di esercizi (il cui codice o la soluzione è scaricabile da Internet) costituisce un importante complemento del testo che, com’è dimostrato dai commenti dei lettori, lo rende certamente uno dei migliori libri sull’argomento. Inoltre, i contenuti metodologici del libro includono l’insegnamento di una metodologia di progetto e di test utilizzata sistematicamente durante la trattazione e presentata in dettaglio nel Capitolo 16. In qualche modo potremmo dire che, come effetto collaterale, il testo propone un’introduzione graduale ad alcune caratteristiche dell’Extreme Programming, uno dei più attuali processi di analisi e progetto del software. Prese_TIJ_IT.fm Page ix Tuesday, September 30, 2003 8:22 PM THINKING IN JAVA ix Detto questo potremmo individuare almeno tre classi di potenziali lettori di questo libro: Studenti: obbligati dai propri docenti che hanno adottato Thinking in Java come libro di testo del proprio corso. Sia che siate direttamente interessati al linguaggio Java che nel caso in cui non lo siate, certamente non vi pentirete di avere acquistato questo libro. Come ricordavamo in precedenza, questo libro affianca a dei precisi contenuti tecnici anche dei contenuti metodologici. Leggendo questo libro imparerete comunque qualcosa al di là dei fondamenti di Java, sia in termini di meccanismi mentali della programmazione Orientata agli Oggetti (programmaticamente il titolo del libro è Pensare in Java) sia in termini di buone metodologie per lo sviluppo del software. Docenti: che stanno scegliendo il libro per il proprio corso o per una serie di seminari. A nostro parere questo libro è l’ideale per un corso sui fondamenti del linguaggio Java ed ha uno stile molto vicino alle dispense di un docente. I fondamenti del linguaggio sono trattati in modo completo ed approfondito e gli argomenti aggiuntivi sono di immediato interesse per lo sviluppatore e sono trattati in modo sufficientemente dettagliato per diventare immediatamente operativi. La metodologia di buona programmazione permea l’intero libro che diventa, in aggiunta, un manuale sulla buona scrittura e sulla verifica del codice. Professionisti o curiosi: con nessun obbligo di acquisto o di valutazione. Indubbiamente questo libro è adatto anche a chi intenda imparare da solo il linguaggio Java. Le caratteristiche di progressività nella trattazione del linguaggio lo rendono sicuramente adatto anche all’autoistruzione. Inoltre, la presenza di esempi ed esercizi il cui codice è disponibile online, sicuramente facilita l’attività di apprendimento. Nella cura di questa edizione italiana abbiamo cercato di mantenere ed esaltare queste caratteristiche e di preservare lo stile colloquiale e diretto dell’originale inglese. Speriamo di essere riusciti in questa impresa e di potervi annoverare fra le persone entusiaste di questo testo e fra i futuri programmatori in linguaggio Java. Udine, 29 settembre 2003 Luca Di Gaspero (http://tabu.diegm.uniud.it/~digasper) Gianluca Franco (http://onorio.cepo.uniud.it/gianlucafranco/)