/dev/random

Google Android: uscito il SDK

Pubblicati gli strumenti di sviluppo di Google per Android.

Ieri è uscito il SDK (Software Development Kit) per il nuovo progetto di Google per conquistare il mondo: Android (di cui ho parlato al momento della presentazione, qualche giorno fa). In rete si è iniziato a parlarne molto, sia per la curiosità, sia perché Google l'ha supportato con un concorso, con in palio un montepremi di 10 milioni di dollari.

Java

Ebbene sì: il nuovo Android si programma in Java. Anzi, no! Si programma in Dalvik. Non l'avete mai sentito? Nemmeno io. Stando a un paio di articoli che ho trovato in giro (su Stefano's Linotype e sul blog di Ian Skerrett) è una nuova virtual machine, che ha in comune con Java solo il linguaggio, e che attinge da Harmony (un progetto della Apache Foundation) alcune librerie di base. Con questa mossa mancina Google ha fregato la Sun, che ha reso open source Java ma si è tenuta stretta Java ME, la versione per cellulari, in modo da poterla vendere ai produttori di cellulari. Invece Dalvik (sembra) è totalmente open source.

Forse questo è il motivo per cui giganti del calibro di Motorola sono saliti di corsa sul treno di Google (milioni di cellulari venduti = milioni di royalties alla Sun). Forse non è solo per quello, ma anche per poter sfruttare una piattaforma molto più flessibile e malleabile (Linux) di altri (Windows Mobile, per non fare nomi), da adattare a dispositivi con caratteristiche sempre diverse: schermi di risoluzione diversa, con o senza touchscreen, con o senza pennino, con slider hardware, tastiere da cellulare o qwerty complete, ecc.

Cosa significa questo per Java? Se lo stanno chiedendo in molti. La mia opinione è che sicuramente darà al linguaggio una bella botta, in tutti i sensi. Purtroppo (a me Java non piace) la compatibilità a livello sorgente significherà che chi ha programmato in Java fino a oggi potrà continuare a sfruttare il linguaggio che conosce anche su Android, e che chi non lo conosce o non l'ha mai usato ora avrà uno sprone in più, e non indifferente, per impararlo. Inoltre i tool di sviluppo sono basati su Eclipse (scritto in Java), e per di più non sono compatibili con GCJ (la versione libera di Java made in GNU), quindi sarà necessario usare il JRE/JDK di Sun. Fortunatamente è open source e presente ormai in tutte le distribuzioni Linux.

Dall'altra parte potrebbe spingere Sun a rendere libero il codice della Java ME, per contrastare questa “concorrenza sleale”. Sun comunque non brilla per prontezza da questo punto di vista. Ha ignorato la comunità Linux per molti anni, lasciando spazio a linguaggi come PHP, Python, Ruby e Perl da un lato, e C/C++ dall'altro, a cui vanno aggiunte le new entry C# (con Mono) e D (sia Digital Mars che GNU). Il problema è: come guadagnerà Sun? Si adatterà ai modelli open source, proponendo migliorie personalizzate di Java, o magari assistenza per il porting su altre piattaforme? Ma quanto potrà durare, contro un progetto che nasce già community driven? Chi vivrà, vedrà.

Il concorso a premi

La scelta di una virtual machine basata su Java consente anche ai produttori di applicazioni di distribuire, a loro scelta, dei precompilati in bytecode (di fatto closed source) invece di pubblicare il sorgente dei loro software. E sicuramente le prime applicazioni distribuite dai costruttori saranno di questo tipo. Ma Google ha pensato anche a questo, indicendo un concorso a premi per gli sviluppatori che scriveranno o proporranno di scrivere applicazioni per Android. Una delle clausole è che i software siano open source. Ogni progetto verrà valutato da una commissione e, se meritevole, premiato con un finanziamento per completarne lo sviluppo. Un po' come il Summer of Code, ma non riservato agli studenti. Viste le cifre in ballo sembra più orientato verso le piccole aziende e gli sviluppatori freelance. Un'ottima idea che colpisce molti bersagli: allarga la comunità, genera codire riusabile da altri progetti futuri, fa parlare di Android e di Google e soprattutto accontenta gli sviluppatori open source e quelli che cercano una discreta fonte di reddito per qualche mese di sviluppo.

Accontenta QUASI tutti perché noi italiani siamo esclusi dal concorso, grazie alla nostra bellissima legge sui concorsi, che obbliga a registrarlo al ministero e a depositare il montepremi a garanzia, ma anche a designare un ente no profit che riceverà tutti i premi non consegnati per qualsiasi motivo. Grazie ancora, governo italiano (rigorosamente minuscolo).

Conclusioni

Questo nuovo Android SDK sembra ben fatto. Troppo ben fatto, a dire il vero. In meno di una settimana dall'annuncio Google ha creato un canale su YouTube con video tutorial, un sito con esempi, tutorial, schemi tecnici, un concorso a premi. Naturalmente non l'ha fatto in una settimana, ma onore al merito: sono stati bravi a tenerlo nascosto per così tanto, lasciando trapelare solo il poco che basta per creare l'aspettativa. Sicuramente ci lavorano da almeno un anno, se non due.

Personalmente continuo a preferire OpenMoko, lo vedo più “libero” (hardware compreso), ma non credo di avere il prosciutto sugli occhi: avrà vita molto dura adesso. Se fosse riuscito a rispettare i tempi previsti l'hardware sarebbe già sul mercato da un mese abbondante, e questo Android avrebbe trovato una base di utenti più solida. Invece ora la comunità di sviluppatori si spaccherà, e buona parte tenderanno a Android più che a OpenMoko.

Purtroppo noto anche molta disorganizzazione e defezioni all'interno di OpenEmbedded/Angstrom: gli sviluppatori stanno abbandonando diverse piattaforme (Zaurus in particolare) per concentrarsi su altre (Nokia e HTC), ma non si vede l'ombra di una versione stabile di Angstrom all'orizzonte. Inoltre spesso gli utenti vengono trattati a pesci in faccia sui forum (a volte a ragione, a volte a torto, ma indiscutibilmente vengono allontanati dal progetto). Diversi sviluppatori di OpenEmbedded sono anche sviluppatori OpenMoko, quindi questa disorganizzazione si riflette tra i due progetti. Speriamo si diano una regolata.

Dalla parte di Google c'è l'hype che genera, gli accordi coi produttori hardware. Un gigante composto da oltre 30 aziende, a cui ogni settimana che passa se ne aggiungono un paio almeno, contro una sola azienda hardware e una trentina di sviluppatori in buona parte hobbysti. Sarà dura, ma è già successo che un gigante cadesse. Io preferirei che il gigante che cade questa volta inizi per “M” e finisca per “icrosoft”. Nulla vieta di sfruttare Android anche con altri linguaggi, in fin dei conti. ;)