"Android - programmazione avanzata" offre contenuti eccellenti e notevoli approfondimenti. Dalla lettura del libro e relativa recensione sono nate alcune domande e curiosità su ciò che ha portato alla nascita di questo volume.
Le ampie risposte fornite dagli autori, Emanuele Di Saverio e Stefano Sanna, possono essere utili sia a quanti vorrebbero conoscere il libro, sia a chi lo ha già acquistato o a chi è interessato allo sviluppo su Android.
Le ampie risposte fornite dagli autori, Emanuele Di Saverio e Stefano Sanna, possono essere utili sia a quanti vorrebbero conoscere il libro, sia a chi lo ha già acquistato o a chi è interessato allo sviluppo su Android.
Non c'è un vero e proprio
ordine nelle domande; la numerazione serve solo come riferimento per eventuali commenti.
Domanda 1: Ho
trovato che “Android – Programmazione avanzata” sia un testo un
po' particolare rispetto agli altri titoli editi da Edizioni FAG:
presuppone già conoscenze non superficiali di Android e della sua
programmazione, senza che ci siano altri titoli dello stesso editore
che affrontino la programmazione di base per questa piattaforma.
Mi sarei aspettato un
doppio volume: uno con le tecniche di base e questo, avanzato. È
stata una scelta vostra o dell'editore? C'è una motivazione
strategica dietro la decisione di fare solo questo volume?
Risposta: Più che una strategia,
direi che c'è una constatazione di fondo: il web, a partire dal
portale ufficiale di Google (developer.android.com), è ricchissimo
di specifiche, tutorial ed esempi di codice che introducono alla
programmazione su Android. Non mancano anche libri (in PDF, ndr)
completamente gratuiti. Ci è sembrato, invece, che mancasse un testo
di approfondimento su alcuni temi specifici, che andasse oltre ciò
che si trova normalmente sui blog o sui forum. Io ed Emanuele
volevamo fare un libro diverso dagli altri; non ultimo, fare un testo
avanzato in Italia ci sembrava una bella sfida. L'editore ha sposato
il nostro progetto, dimostrando sicuramente coraggio rispetto allo
scenario editoriale complessivo nazionale, che vede i numeri in
costante contrazione. Il riscontro è stato buono, dunque possiamo
dirci tutti soddisfatti della scelta.
Domanda 2: Quali possono essere i prerequisiti per poter trarre il meglio da questo volume?
Potete esplicitare quali sono le conoscenze minime che avete
presupposto in un vostro potenziale lettore? Quali eventuali risorse
potete consigliare per raggiungere tali basi, prima di affrontare la
lettura del vostro testo?
Risposta: è necessario conoscere
Java e le buone pratiche di programmazione ad oggetti, avere un po'
di confidenza con i design pattern e, ovviamente, aver fatto un
minimo di sperimentazione con la piattaforma Android. Il libro non
spiega cosa sia una Activity o a cosa servano gli Intent, concetti
fondamentali e imprescindibili, ma introducendo gli argomenti nuovi
(ad esempio, NFC) guida il lettore passo passo senza dare nulla per
scontato. Ci sono altri capitoli (ad esempio, quello sui Service) che
possono essere “gustati” solo dopo essersi scontrati con problemi
reali.
Domanda 3: la
stampa del volume è avvenuta a febbraio 2012 e nel volume descrivete
la versione 4.0 della piattaforma. Secondo voi, quali sono le novità
più importanti nelle versioni successive? Avete pensato di inserire
sul vostro sito aggiornamenti su alcune novità? Potete consigliare
altre risorse per approfondire i nuovi argomenti?
Risposta: Jelly Bean (Android 4.1
e 4.2) segna la maturazione della piattaforma, dopo la
“riunificazione” operata da Ice Cream Sandwich. Le novità sono
tante, ma a nostro avviso una in particolare merita attenzione, perché
segna – per così dire – una discontinuità rispetto alle
modalità di utilizzo dei tablet rispetto al passato: la multiutenza.
In ambito professionale è una rivoluzione e una affermazione di
Android come alternativa all'uso di sistemi desktop. Si pensi, ad
esempio, a tutte le situazioni in cui un tablet è condiviso da più
commessi all'interno di un negozio, oppure dagli operai di un
cantiere, dalle forze dell'ordine in servizio, dai medici di un
ospedale: la gestione di più utenti non è più a carico delle
singole app, ma è il sistema operativo che si occupa di isolare (e
proteggere) i dati di ciascun utente. Più in generale, l'API di
Jelly Bean si è arricchita, le prestazioni migliorano continuamente,
le risoluzioni diventano elevatissime. Resta solo da chiedersi quale
altre novità arriveranno con Android 5.0! Sicuramente il lavoro
iniziato con il libro continuerà ma, come detto prima, trattandosi
di argomenti avanzati abbiamo bisogno di tempo (e maturare
esperienza) prima di avere qualcosa da condividere con i lettori. A
tutti, ovviamente, consigliamo di tenere d'occhio il sito ufficiale e
soprattutto i video che Google pubblicherà a valle della Google I/O
di maggio.
Domanda 4: Nel
capitolo 8, "Qualità del software", affrontate vari argomenti legati
al Test Driven Design e descrivete l'uso di strumenti che agevolano
la scrittura del codice secondo certe metodologie agili. Avete
applicato tali metodologie in progetti reali? Potete dirci le vostre
esperienze in tale ambito?
Risposta: Purtroppo, non tutti i
clienti le apprezzano e pochissimi, pur apprezzandole, le richiedono.
Volendo parafrasare un noto proverbio, potremmo dire che “le
metodologie sono come i sentieri: se non ci si passa regolarmente,
crescono le erbacce”. C'è da dire, però, come sottolineato anche
nel testo, che il supporto sulla piattaforma Android è ancora acerbo
e lontano dalla qualità e complessità degli omologhi strumenti per
le applicazioni di backend (si pensi, ad esempio, a quanto sia
strategico e “vitale” un tool come Robolectric e il fatto che non
sia ufficialmente parte della piattaforma).
Domanda 5 Una
curiosità: mi sarei aspettato, da esperto Java (ma non di Android),
un meccanismo di build che facesse uso di Maven o qualcosa di analogo
e non solo di Ant. Ci sono novità/evoluzioni in questo senso per i
tool di build?
Risposta: Quando abbiamo scritto
il libro il supporto Maven per Android era ancora acerbo. Ora la
situazione sta migliorando, ma c'è ancora qualche problema
nell'integrazione con l'IDE. Non escludo che nel breve futuro ci sia
una accelerata in tal senso, l'esigenza è forte.
Domanda 6: Da tutte
le pagine traspare evidente la vostra grande esperienza nello
sviluppo di applicazioni in campo mobile. Potete raccontare
brevemente la vostra storia e se è legata in qualche modo anche ad
una vostra passione per questo tipo di applicazioni?
Risposta: Il mio primo contatto
con un dispositivo mobile programmabile è avvenuto nel 1999: si
trattava di un PSION 5MX, con sistema operativo EPOC e un prototipo
di Java Virtual Machine compatibile con l'API 1.1.6. Quel sistema
operativo sarebbe poi diventato Symbian, leader per circa un lustro
della telefonia mobile, prima dell'avvento di iOS e Android. Lavoravo
nel gruppo Network Distributed Applications del CRS4, un centro di
ricerca presso Cagliari, ad un progetto che aveva come obiettivo
l'erogazione multicanale (termine oggi scontato, ma al tempo
assolutamente pionieristico!) di servizi. I “canali” erano il
browser, le applicazioni native (Java), gli SMS, le interfacce vocali
e la TV interattiva (ovvero, la porzione programmabile del digitale
terrestre che nessuno utilizza!). I palmari (o PDA) programmabili
costituivano uno dei nuovi canali. In seguito arrivano nuovi sistemi,
nuovi ambienti (ad esempio, Java Micro Edition), nuovi dispositivi.
La vera promozione da mercato di nicchia a leader del mercato ICT,
però, è arrivata con il lancio dell'iPhone prima (2007), che ha
rivoluzionato hardware e software, e dell'App Store poi (2008), che
rivoluzionato il meccanismo di distribuzione delle applicazioni. Dopo
circa 14 anni spesi in questo settore, credo il bilancio personale
sia assolutamente positivo. Non ci si annoia mai, c'è un continuo
(ma non troppo rapido) susseguirsi di novità e opportunità che
rendono molto piacevole questo lavoro.
Domanda 7: Al
giorno d'oggi esistono molte applicazioni acquistabili a pochi euro.
Secondo voi, che modello di business permette agli sviluppatori di
avere degli introiti da simili applicazioni? È solo una questione di
“sperare” di vendere tante copie o c'è dell'altro?
Risposta: “Vivere di sole app”
è piuttosto difficile. Al lancio dell'App Store per iPhone, molti
sviluppatori brillanti colsero l'occasione ed effettivamente
realizzarono dei guadagni lusinghieri (parliamo sempre di
sviluppatori singoli, non di software house); con l'aumentare degli
sviluppatori, delle aziende specializzate e delle applicazioni
disponibili, tutto è diventato più complesso. Nel mondo Android,
poi, i dati dicono che gli utenti scarichino tante app, ma che siano
più restii a pagarle (mentre tollerano di buon grado un po' di
pubblicità). Avere delle buone app sull'application store, però, è
un ottimo biglietto da visita: “questa l'ho fatta io” spesso vale
più di tante sigle roboanti sul CV (che comunque deve essere
solido!).
Domanda 8: è
interessante, nel capitolo 7, "Bluetooth", il riferimento ad Arduino.
Avete sperimentato soluzioni basandovi su tale board?
Risposta: Abbiamo
fatto parecchia sperimentazione, soprattutto quando il supporto a
Bluetooth era ancora primordiale. Ora stiamo lavorando sul profilo
Low Energy del protocollo, purtroppo non ancora esposto attraverso
una API pubblica. Sicuramente l'accoppiata Android + Arduino
rappresenta una formidabile opportunità per realizzare prototipi e
dare ampio spazio alla creatività. Ne è prova l'estensione ADK,
nata proprio attorno ad una specializzazione di Arduino. In un certo
senso, è mancata quella “proliferazione di accessori” che ci
sarebbe aspettati, ma forse il limite è proprio nel fatto che si
tratti di un dispositivo “wired” (USB): un futuro ADK basato su
Bluetooth LE e una board Arduino con modulo omologo a bordo (cioè,
senza necessità di ulteriori shield) potrebbe aprire la strada a
nuovi oggetti integrabili con Android (peraltro, tardano ad arrivare
le board ADK2 con Bluetooth).
Domanda 9: com'è
stata l'esperienza di scrivere un libro come questo? Come mai
insieme? Da dov'è nata l'idea? Avete in cantiere altre iniziative
editoriali?
Risposta: Abbiamo lavorato
assieme per un paio d'anni presso un'azienda romana, mettendo le mani
sulla primissima versione di Android, alcuni mesi prima che arrivasse
in Italia. Provenendo entrambi da una lunga esperienza su Java Micro
Edition, abbiamo ovviamente accolto con molto entusiasmo il
formidabile salto generazionale di Android. Accanto ai progetti
“ufficiali”, abbiamo iniziato a fare della sperimentazione per
conto nostro; in particolare, abbiamo scritto la prima (ed unica?)
libreria Bluetooth per Android 1.x, che non offriva una API pubblica
per gli sviluppatori (esposta poi da Google a partire dalla versione
2.0, ndr). Abbiamo avuto un contatto con l'editore e l'idea del libro
focalizzato su temi avanzati si è via via consolidata e raffinata,
sino a giungere al prodotto finale. Curiosamente, abbiamo scritto la
maggior parte del testo dopo aver cambiato entrambi lavoro e vivendo
in due città diverse. In questo momento non abbiamo altre iniziative
editoriali in corso, ma scrivere e condividere esperienze fa parte
del nostro modo di approcciare questo lavoro, dunque non escludo che
Domanda 10: Quali
sono, secondo voi, le letture che non possono mancare a chi vuol
affrontare la programmazione di Android? Che consigli date a chi
vorrebbe avvicinarsi a questo tipo di attività ma ha, come unico
bagaglio, qualche conoscenza di programmazione su sistemi
tradizionali?
Risposta: Una solita base di Java
e di programmazione ad oggetti, una padronanza di design pattern e di
buone pratiche di design delle applicazioni; è poi importante
conoscere bene i protocolli di comunicazione e le metodologie per
testing automatico e continuos integration. Quali testi? Ne esistono
diversi, alcuni più datati, altri più moderni; moltissimi in
inglese, qualcuno disponibile in traduzione. L'invito che facciamo è
consultare un book store, leggere le recensioni e poi prendere un
testo per ogni argomento e poi, da ciascun testo, trovare spunti per
nuovi approfondimenti. Ciascuno trovi il suo percorso formativo e di
specializzazione. Segnalare qui i “soliti testi famosi” di fatto
tarpa le ali agli autori meno conosciuti, ma non meno validi.
Domanda 11: avete
avuto feedback dal vostro libro? Che genere di “consigli”
potrebbero dare i vostri lettori per aiutarvi nel vostro lavoro
editoriale?
Risposta: I feedback sono stati
molto positivi. I consigli vertono essenzialmente su due fronti:
trattare altri argomenti avanzati e aggiungere una sezione
introduttiva (che ci riporta alla prima domanda!). Non siamo
onniscienti, dunque gli argomenti che sono fuori dal nostro ambito
professionale (per esempio, i giochi) non potremo mai trattarli.
Sugli altri, valuteremo a tempo debito.
Domanda 12: il
vostro è uno dei pochi libri a colori. C'è una motivazione dietro
questa scelta, accanto all'ovvia piacevolezza estetica?
Risposta: è innegabile che un
libro a colori consenta agli autori di arricchire di grafici e
screenshot il testo, a tutto vantaggio del lettore. Come detto in
apertura, questo lavoro non è frutto solo del nostro lavoro, ma del
coraggio dell'editore, che ha deciso di dare una ulteriore impronta
differenziante al testo, stampandolo a colori.
Domanda 13: qual è la proporzione tra libri cartacei ed ebook
venduti per il vostro libro?
Risposta: Più che di
proporzione, bisognerebbe parlare di sproporzione: gli ebook
rappresentano pochi punti percentuale della versione cartacea. Non so
se si tratti di un gap culturale, di una questione di oggettiva
difficoltà a leggere libri tecnici (con codice) su schermi piccoli o
altro. Sta di fatto che i nostri lettori preferiscono il libro
cartaceo, magari da tenere sempre a portata di mano sulla scrivania
(magari da rivendere usato quando uscirà la nuova edizione...).
Concludo ringraziando ancora gli autori per il tempo che hanno dedicato a rispondere alle domande. Chi volesse leggere una recensione del libro, la può trovare a questa pagina: http://webtoolsreview.blogspot.com/2013/04/recensione-libro-android-programmazione.html
0 commenti :
Posta un commento