17 aprile 2013

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 :