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/)