Visto l'enorme successo di Android,
imparare a sviluppare per questa piattaforma può risultare
interessante per molti programmatori. Il libro “Android – Programmazione avanzata”, di Emanuele Di Saverio e Stefano Sanna, edito da Edizioni FAG, è un testo che
presenta, come suggerisce il titolo stesso, nozioni adatte ad un pubblico di esperti.
Il libro parte subito con soluzioni specifiche, dando per scontato un adeguato background.
Gli
autori hanno scelto di affrontare, nei diversi capitoli, numerose
problematiche; per ognuna forniscono soluzioni, strategie e design
pattern per creare applicazioni professionali. La cosa che più caratterizza e, sicuramente, contraddistingue questo volume è che non fornisce
le basi in forma ridotta né presenta panoramiche di alto
livello, ma parte subito con soluzioni specifiche, dando per scontato
un adeguato background sull'argomento. Questa scelta riguarda anche l'installazione e
personalizzazione dell'ambiente di sviluppo, tema affrontato
solo in parte in alcuni capitoli, come quello relativo alla creazione
di test. La scelta di presentare solo argomenti avanzati non ha
riscontro in altri libri dello stesso editore, né Edizioni FAG ha in
catalogo testi entry level per lo sviluppo di Android. Questa scelta
mi ha incuriosito molto e ho contattato gli autori per porre loro alcune domande su questa e altre scelte (o semplici
curiosità) riguardo al libro e ai suoi contenuti. Le risposte (http://webtoolsreview.blogspot.com/2013/04/alcune-domande-agli-autori-di-android.html) sono state molto esaustive e suggerisco a chi è interessato al
libro di leggerle, perché offrono interessanti spunti e
importanti chiarimenti sul libro stesso.
Il libro usa il colore in tutte le pagine
Altra cosa piuttosto inusuale per un
testo di programmazione è la scelta di usare il colore in tutte le
pagine. Prima di presentare il contenuto del testo, devo ammettere
che non sono un lettore “tipo” a cui si rivolge il libro, in
quanto la mia conoscenza della programmazione su questa piattaforma
si ferma a poche nozioni teoriche; provenendo comunque da una decina
d'anni di sviluppo di applicazioni J2EE in ambito enterprise,
dopo un breve momento iniziale di disorientamento e qualche ricerca fatta in
autonomia, ho potuto apprezzare il taglio del libro e le
soluzioni fornite.
Dopo questa doverosa premessa, ritengo
che i 30 euro che si spendono per questo libro siano decisamente
ben spesi, in quanto ciascuno degli argomenti trattati è discusso in
maniera approfondita e mai banale. Ogni capitolo è presentato in
forma di caso d'uso: si parte da un problema reale e, in modo molto
pragmatico e concreto, gli autori forniscono quelle che secondo loro
sono le strategie e le scelte più adatte a risolvere il problema.
L'impostazione del libro rivela la notevole esperienza degli autori: tutti i capitoli si leggono in maniera piacevole e con ottimi spunti
di approfondimento e di riflessione che vanno al di là della soluzione
concreta fornita.
Ho apprezzato anche il fatto che gli
autori abbiano creato un sito dove poter scaricare gli esempi e dove
poter trovare eventuali aggiornamenti (http://www.androidavanzato.it). Ho notato che questo sito non risulta
aggiornato, ma mi rendo conto che farlo comporterebbe un notevole sforzo
in termini di tempo e impegno, cosa che degli autori che lavorano
“sul campo” in aziende affermate difficilmente riescono a
trovare. A tal proposito suggerirei agli autori di coinvolgere i lettori stessi, in perfetto stile Web 2.0, per
portare avanti l'aggiornamento del sito, mantenendo solo un ruolo di
supervisione e moderazione sui nuovi contenuti proposti.
Gli esempi forniti sono davvero efficaci e con particolare attenzione alla velocità e fluidità.
Ma veniamo ai contenuti. Il primo capitolo, “Activity e Service”, analizza il
ciclo di vita di Activity e Service. Questo ciclo di vita viene
descritto, cercando di spiegare i motivi che stanno dietro alle
scelte implementative e architetturali, con particolare attenzione
agli aspetti di gestione della concorrenza e nel garantire una
corretta cooperazione con altre applicazioni attraverso l'uso di
appropriati pattern.
Il capitolo 2, “Grafica e interfaccia
utente”, presenta utili suggerimenti sulla realizzazione di
interfacce utente. Anche qui si analizzano aspetti e dettagli che
guidano l'utente alla creazione di interfacce flessibili e
ottimizzate; gli esempi forniti sono davvero efficaci e con
particolare attenzione alla velocità e fluidità.
Il capitolo 3, “Honeycomb e Tablet”,
illustra le caratteristiche della release 3 di Android, analizzando alcune applicazioni di esempio. Anche in questo caso è posta molta
cura nel presentare i design pattern e le novità architetturali che
hanno un forte impatto sullo sviluppo di applicazioni, con
particolare attenzione al rendering 3D, presentando soluzioni “reali”
e affrontando problemi concreti.
Non poteva mancare un capitolo su
“Networking”, il capitolo 4, per realizzare applicazioni su
dispositivi che sfruttano le connessioni di rete, analizzando in
quali scenari certe soluzioni architetturali sono da preferire ad
altre. Gli autori ci aiutano a capire come la disponibilità di una
connessione, sporadica o “sempre connessa”, tanto per citare gli
estremi, portino a soluzioni architetturali molto diverse, ma sempre
con molta attenzione a non “congelare” il funzionamento del
dispositivo e a mantenere una buona user experience. Nella parte del
libro dedicata alla decodifica dei dati vengono anche analizzate
alcune soluzioni per l'utilizzo di JSON e XML utilizzando,
rispettivamente, le librerie Jackson (http://jackson.codehaus.org) e Simple XML (http://simple.sourceforge.net).
Un po' particolare e, in un certo senso
una scommessa degli autori sul futuro, è il capitolo 5: “NFC”
(acronimo di Near Field Communication). Qui si parla di tag NFC/RFID
e di come leggere e scrivere i tag da applicazioni che girano su
hardware adatto allo scopo.
Il capitolo 6 (“Push notification”)
illustra come realizzare applicazioni che facciano uso di SMS o di
Android Cloud to Device Messaging per inviare dati, mostrando in
quali contesti una simile soluzione è, di fatto, l'unica realmente
efficace. Il capitolo 7 conclude le modalità di connessione
wireless con la tecnologia “Bluetooth” e spiega perché, ancora
oggi, potrebbe aver senso ricorrere a questo tipo di connessione
nello sviluppo di applicazioni. In chiusura di capitolo viene
descritto come le release 3 e 4 di Android abbiano introdotto alcune
novità nell'uso del Bluetooth.
Il capitolo 8 sarebbe stato, a mio avviso, la
conclusione naturale del libro: “qualità del software”. Anche
in questo capitolo la problematica viene affrontata con un taglio molto
pragmatico e fornendo dettagli e consigli su quello che per la
metodologia TDD (Test Driven Design) è il cardine della garanzia di
qualità del software: i test. Qui non ci si ferma ai soli test di
modulo, ma si analizzano anche altri tipi di test e relativi tool per
automatizzarli o, per lo meno, agevolarli. È in questo capitolo che
si nota una preferenza degli autori per le metodologie agili.
Il capitolo 9 affronta le principali
novità portate dalla release 4.0 di Android (“Ice Cream Sandwich:
la riconciliazione”). Rispetto agli altri capitoli, questo è un
po' meno concreto e presenta, per lo più, una panoramica su quanto
c'è di nuovo.
La lettura del testo mi ha lasciato un'ottima impressione.
Concludo rimarcando l'ottima
impressione che mi ha lasciato la lettura del testo; molto spazio è
dedicato al codice e a soluzioni utilizzabili in problemi concreti,
senza che manchi un quadro architetturale che permetta di comprendere a
fondo le scelte sottese alle diverse soluzioni. Un libro non facile e
non adatto a chi è alle primissime armi, e qui si nota una mancanza
di “prerequisiti” espliciti per capire se si è in grado di
affrontare o meno questa lettura (la risposta a questo mio appunto si trova nell'intervista agli autori), ma molto
utile e stimolante per chi un po' di esperienza ce l'ha e vorrebbe
fare un salto di qualità rispetto a tutorial di base o ad esempi poco
utili per creare applicazioni complesse.
In conclusione segnalo anche una presentazione del libro fatta dagli autori: http://www.slideshare.net/gerdavax/android-programmazione-avanzata
Nota del recensore: Edizioni FAG ha
fornito gratuitamente una copia cartacea del testo per la recensione
e, in passato, il recensore ha pubblicato libri con lo stesso
editore.
0 commenti :
Posta un commento