[an error occurred while processing this directive]
diff logo Informatica e sistemi alternativi
su questo sito sul Web
    Home   Chi siamo    Contattaci    Scrivi per diff    Proponi un argomento 27/02/17
    Cos'è diff    Come accedere    F.A.Q.    Promuovi    Dicono di diff    Amici di diff    
AmigaOS
Linux
FreeBSD
BeOS
OpenSource
Java
Database
Informatica
Hardware
E-Commerce
Narrativa

Thinking in Java
recensione di Giuseppe Sacco

cover
Titolo: Thinking in Java - seconda edizione, 2000
Autore: Bruce Eckel
Editore: Prentice Hall
ISBN: 0-13-027363-5
Prezzo: 44.99 USD
Pagine: 1128 pp + CDROM
Lingua: inglese.
Rilegatura: brossura.

Premessa

Questo volume nasce in realtà per la distribuzione via internet e continua ad avere una vita propria presso il sito dell'autore. È un testo in continua evoluzione che ha già avuto il riconoscimento di una grande quantità di lettori. La versione su carta arriva dopo una reiterata richiesta di vari lettori che trovano più utile una versione cartacea del testo. Oltre al testo è fornito anche un CD con il testo del libro (quello della prima edizione), tutti i sorgenti degli esempi e il testo dell'altro volume scritto dallo stesso autore: Thinking in C: Foundations for C++ & Java. Non è presente la licenza per la redistribuzione del testo (in formato elettronico), ma è specificato che il contenuto del CD -- e quindi forse anche del testo -- è soggetto alla licenza EULA di Microsoft, che viene riportata in appendice al testo.

L'autore è ormai specializzato in corsi su Java. Molte parti di questo testo sono state raffinate alla luce dei suoi corsi. Per saperne di più fate riferimento al sito dell'autore.

Involucro

Cominciamo dall'aspetto esteriore: il libro è decisamente spesso, pesante e poco maneggevole, inoltre è scritto con caratteri che avrebbero certamente potuto essere più piccini. Questa scomodità va decisamente contro lo scopo primo del libro, cioé fornire uno strumento di facile consultazione cartacea contrapposto alla versione elettronica già disponibile e meno economicamente onerosa. La versione PDF fornita all'interno del CD è impaginata allo stesso modo e quindi l'unico modo per ridurre il tutto è quello di stampare più pagine in un solo foglio; ma a quel punto il tutto diventa illegibile.

Trattazione dei capitoli

Il testo affronta l'insegnamento di Java a chi già conosce la programmazione, anche solo teorica o con linguaggi non ad oggetti, e presenta una serie di paragoni con il solo C++. Non si tratta comunque di un testo che richieda grosse conoscenze: il primo capitolo fa egregiamente il suo lavoro e i successivi sono organizzati secondo una complessità crescente. Spesso inoltre gli argomenti sono affrontati più volte, rivisitandoli successivamente all'introduzione di nuovi concetti.

Uno degli aspetti maggiormente interessanti del libro è che non si tratta del solito libro che presenta prima le regole di Java e poi tutte le classi e tutti i metodi. Non si tratta quindi una "reference guide," ma di una prosa nella quale si parla delle tecniche utilizzabili tramite il linguaggio Java. I capitoli del testo seguono più che altro un ordine dato dalla elementarità degli argomenti: in prima istanza le basi e successivamente il resto.

I problemi che l'autore vuole aiutare a risolvere non sono quelli ben conosciuti dall'informatica pratica, come quelli legati alle basi di dati relazionali nelle quali la complessità sta nella scelta dello schema relazionale, ma quelli per i quali non esistono precedenti soluzioni. Per questo motivo la focalizzazione non è sulle classi della libreria Java, ma su problematiche generali e sugli strumenti (spesso con particolare riguardo alle classi abstract) che il linguaggio Java fornisce.

Prima metà del libro

Il primo capitolo Introduction to Objects è un compendio di ingegneria del software che spiega, applicate a Java, le tecniche di sviluppo del ciclo a cascata. Il tutto passando da metodologie come UML o la programmazione in coppia. Si tratta in pratica di un capitolo che fa montare certamente l'entusiasimo in tutti quelli che sono o sono stati programmatori. Le tecniche presentate vengono confrontate alle attuali utilizzate in america, come quella di racchiudere ogni persona tra tre pareti e un corridoio in modo che non sia distratta da altri. Credo proprio che anche chi non voglia leggersi il libro dovrebbe egualmente dare un'occhiata a questo capitolo, scaricandolo da Internet.

L'utilizzo di UML è qui limitato alla presentazione grafica delle classi e delle relazioni tra classi. In questo caso, come in molti altri, l'autore adotta una politica molto libera: non è richiesta e neppure proposta al lettore una totale adesione ad UML, ma semplicemente proposta una via da adottare finché se ne tragga vantaggio.

I capitoli immediatamente successivi sono facili da leggere e ricchi di esempi esaustivi -- a volte gli esempi sono anche troppo esaustivi perché presentano tutte le possibile combinazini dell'argomento dell'esempio, mentre potrebbero essere studiati per un pubblico che più maturo --. Inoltre ogni capitolo presenta una serie di esercizi, di varia difficoltà, per il lettore.

Gli argomenti trattati in questi capitoli sono la gestione del flusso, l'inizializzazione e la terminazione degli oggetti, il nascondere l'implementazione, la strutturazione della classi affinché siano riutilizzazbili, il polimorfismo.

Si arriva poi ad un capitolo molto ben fatto, soprattutto nella sua prima parte, sulla gestione di oggetti omogenei tramite liste, insiemi e mappe. Questo argomento, che è centrale per la programmazione in qualsiasi linguaggio, è qui affrontato con i potenti strumenti di Java. Inoltre sono presentate alcune classi di un package fatto dall'autore e distribuito sul CD.

L'ottima spiegazione di questo capitolo fa sì che il lettore prenda piena confidenza con gli strumenti offerti da Java in proposito. Inoltre c'è anche un confronto tra le varie classi da un punto di vista delle performance. Si tratta, come scrive l'autore, dei tempi della macchina virtuale fornita con il Java Runtime Environment della SUN per piattaforma MS-Windows.

Seconda metà

La seconda metà non è evidenziata tipograficamente e neppure in altra maniera esplicita dall'autore, ma troviamo che gli argomenti trattati dal testo siano decisamente diversi da quelli, più generici, della prima parte. In particolare si ha che il lettore non è più trattato da "programmatore alle prime armi," ma da professionista del settore.

I capitoli dall'11 in poi seguono il tracciato dei principali package di Java: Input/Output, Riflessione, Grafica (UI), Thread, Networking.

Anche in questo caso la trattazione è molto leggibile e non si tramuta in un elenco di classi e metodi. Anzi viene spesso preposto alla trattazione tecnica un breve cappello storico che riporta la genesi del package in SUN. Spesso inoltre ci sono riferimenti alla personale opinione dell'autore. In particolare l'autore mostra una certa stizza, per altro condivisibile, per la struttura di tutta la parte di Input/Output; mentre invece fa tanto di cappello per la nuova libreria grafica Swing e dei Beans di Java2.

Questa seconda parte del libro è quella più interessante: l'autore si sbizzarrisce in brevi programmi che mostrano ciò che serve sapere e fanno capire che c'è anche dell'altro. Ci sono anche riferimenti ad approfondimenti su testi specifici. Questa seconda parte vale veramente il prezzo del libro.

Il modo di esporre gli argomenti cambia notevolmente: viene prima mostrato il codice e poi spiegato il significato del tutto, così il lettore è invitato a leggere la prima parte e può cercare di comprenderla, mettendosi alla prova, prima di arrivare alla spiegazione. Nella parte relativa alle interfacce grafiche si ha che alcune classi non siano neppure spiegate perché autoevidenti.

Conclusioni

Sicuramente il libro vale la pena d'essere letto. Non ci riuscirete in treno, o la sera a letto, a causa della sua mole; ma non avrete alcun problema se siete forniti di una salda scrivania sulla quale poggiare il tutto.




Vedi anche recensione a cura di Roger Cassatella

JAVA


Giuseppe Sacco è laureato in Scienze dell'Informazione presso l'Ateneo di Pisa. In passato si è occupato di Amiga (è uno dei fondatori di IPISA) e di Interfacce Utente Grafiche. Attualmente lavora nell'ambito dei prodotti ERP e si sta specializzando in amministrazione di sistema con Oracle, Informix, Unix e Windows NT. Da sempre ha tenuto sott'occhio il movimento attorno a Linux con un particolare riguardo alla distribuzione Debian della quale è coordinatore della traduzione del sito web in italiano.

Puoi contattare l'autore scrivendo a:
gsacco@diff.org


Articoli dello stesso autore:
Introduzione ad Oracle8i
Il modello entità - relazioni
Pagine web dinamiche


 


La tua opinione su quest'articolo ci sarà utile per la scelta dei contenuti dei prossimi articoli, per cortesia lasciaci un tuo parere su quello che hai letto:
nome:
email:
eta:
Professione
Commento:
Gradimento:
Utile Interessante Continuate con quest'argomento

© 1999,2000,2001,2002 NonSoLoSoft di Ferruccio Zamuner (Italia)- tutti i diritti sono riservati