| 28 gennaio 2012 | 12 Commenti

Android Design: perché programmare su Android

Un po’ ovunque sulla rete leggiamo che sempre più sviluppatori si avvicinano alla piattaforma Android, e la cosa non ci stupisce più di tanto: vediamo quali sono i motivi di questa scelta e perché solo dopo l’avvento di Ice Cream Sandwich Google abbia cercato di portare un po’ di ordine, “dettando le sue regole“ con Android Design.


Come avrete letto sulle nostre pagine, Google e Oracle sono ai ferri corti ormai da qualche tempo, ma per quale motivo? È presto detto: l’azienda di Mountain View ha deciso di usare per il proprio sistema operativo un linguaggio famoso sia tra gli addetti ai lavori che tra i “profani”, il Java, creatura della Sun, azienda acquisita esattamente 2 anni fa da Oracle (l’acquisto è stato formalizzato il 27 gennaio 2010). Java è un linguggio potente, flessibile e versatile, il cui simbolo è la celebre tazzina di caffè nella quale vi sarete sicuramente imbattuti, prima o poi.
Mentre dunque Google si dava da fare con Java, che all’epoca della prima versione di Android era un linguaggio libero, anche a Cupertino e Redmond si sono rimboccati le maniche, scegliendo però due strade diverse e proprietarie: Objective-C e Cocoa per Apple e C# per Microsoft, che, data la loro natura intrinseca di linguaggi proprietari, hanno fornito alle due aziende un valido strumento per standardizzare le applicazioni prodotte per i propri device, spingendo alla fine l’azienda di Mountain View verso la scelta di creare il sito di cui parlavamo, proprio su queste pagine, qualche settimana fa: l’Android Design Guidelines.
Immaginiamo quindi di essere uno sviluppatore che deve decidere su quale dispositivo sviluppare, abbiamo davanti due strade:

  • scegliere un linguaggio conosciuto, diffuso e utilizzato, che ci da forse troppe libertà, il che ci spingerebbe verso il Java e quindi la piattaforma Android
  • preferire un qualcosa di meno elastico ma che permetta alle nostre applicazioni di avere un’interfaccia “stock” senza preoccuparci di elementi aggiuntivi che saranno invece a carico del sistema, che ci condurrebbe invece di fronte ad un altro bivio, ovvero la decisione tra il C# di Windows Phone e l’Objective-C di iOS.

Ecco spiegato uno dei perché in base al quale molti sviluppatori scelgono Android, ma ce ne potrebbero essere molti altri.

Analizziamo ora un aspetto secondario della scelta di Google: il Java è un linguaggio ormai comunissimo che troviamo ovunque, dal nostro robottino, alla centralina della macchina, piuttosto che al proiettore digitale del cinema o al televisore di ultima generazione; capiamo quindi come non sia possibile avere una sola interfaccia che possa andar bene per tutti. Aggiungiamo poi che l’esperienza di “Android puro” non è stata graficamente “interessante” fino ad Ice Cream Sandwich, e possiamo trarre le nostre conclusioni sul perché le applicazioni per Android non siano tutte “standardizzate” e si sia sentito il bisogno di cercare di uniformarle. Guardiamo alcuni programmi per rendercene meglio conto: WhatsApp, ROM Manager, Google+ e Facebook; notiamo subito che, benché stonino nell’insieme, le ultime due sono molto più accattivanti, ed è proprio sulle stonature che le critiche hanno fatto leva e Google ha deciso di rilasciare delle linee guida che tutti dovremmo seguire quando programmiamo con le API di Android.

Fin qui abbiamo parlato solo di Java, ma non è l’unico modo di sviluppare su Android, anzi, negli ultimi tempi ne sono nati parecchi, che in realtà altro non sono se non delle interfacce di programmazione che rendono più semplice lo sviluppo: quella più famosa in assoluto è Basic4Android, che permette di scrivere applicativi utilizzando una sintassi basic-like, piuttosto che PhoneGap che ci apre le porte dell’HTML5, RhoMobile con il suo Ruby e Corona con il LUA. Fortunatamente questi ultimi tre framework sono ormai compatibili con tutte le piattaforme, e stanno prendendo sempre più piede proprio per la possibilità di non dover riscrivere il codice e poterlo invece solo ricompilare per la piattaforma desiderata.

Un’altra motivazione che ha spinto l’azienda di Mountain View verso questa decisione è il sempre crescente numero di applicazioni che da iOS vengono “portate” su Android, lasciando invariato il layout (e molte volte anche l’algoritmo, purtroppo) che viene utilizzato su iPhone, creando problemi che molto probabilmente non si sarebbero nemmeno mostrati con uno sviluppo da zero (chiaramente più lungo e costoso), ma che molte società preferiscono non affrontare e lasciare il codice così com’è: ci viene in mente la famosissima WhatsApp, di cui certamente avrete notato gli eterni tempi di caricamento a schermo nero, piuttosto che l’applicazione dei cinema UCI, il cui layout non sembra sufficientemente spazioso nemmeno un Galaxy S2 ma che funziona perfettamente su iOS.

Abbiamo analizzato quindi quali sono le differenze tra lo sviluppo su Android e quello sugli altri dispositivi dal punto di vista informatico, ma non è l’unico aspetto che conta quando ci si mette davanti al monitor muniti di buone idee: un altro aspetto fondamentale nella vita di uno sviluppatore (e non solo nella sua!) è quello economico. Se ci trovassimo nuovamente di fronte alla scelta del sistema su cui scrivere righe e righe di codice, ci spiazzerebbe il costo delle licenze: 25$ per poter mettere tutte le nostre applicazioni sull’Android Market, molte volte senza nemmeno bisogno dell’approvazione di Google, a fronte di prezzi quadruplicati e controlli a volte fin troppo superficiali da parte di altre aziende; questo è un altro punto a favore di Android, a nostro avviso.

Quanti di voi sviluppano su Android, e con quale tecnologia? Perché avete iniziato a sviluppare per questa piattaforma? Fateci sapere le vostre ragioni ;)

Tags: , , , , , ,

Categorie: Sviluppo / Programmazione

Scheda autore: ()

Studente di Informatica, sviluppatore Android e lavoratore part-time in un cinema. Dove non fa l’informatico :D

rss feed Google Plus

  • http://pulse.yahoo.com/_P5SVV7DBBNYFZIRBY2BRDUWKX4 Murakami

    Sono un dilettante, programmo per tenere sveglie le sinapsi. Francamente, non ho un perché. Forse, mi piace semplicemente partecipare a un progetto di cui – per questioni personali – condivido da tempo i valori. :)

  • Giorgio Drums

    Ho anche provato objective-c, ma programmare per android ha davvero tanti pregi:
    -java risulta decisamente più intuitivo di objective-c
    -è molto plù documentato
    -l’accoppiata java+eclipse (l’ambiente di sviluppo) è vincente
    -non è necessario possedere un mac per programmare (vanno benissimo linux e windows)-molto spesso utilizzo gli stessi identici sorgenti (o meglio le stesse classi) sia per programmi per pc, sia per android

    A mio avviso l’unica cosa che con iphone risulta più immediata è la progettazione dell’interfaccia grafica che, soprattutto all’inizio, può dare un pò di grattacapi… e questo penso che sia dovuto principalmente alla frammentazione (inevitabile) di Android

  • http://twitter.com/TitoPetronio Tito Petronio Nigro

    Java è un pachiderma esoso di risorse e con paradigmi di programmazione vecchi e “pesanti” sia da leggere che da scrivere.
    Anche per questo sono nati una serie di linguaggi accessori che “compilano” listati umani in quella roba lì, sacrificando però al contempo ancora di più le già folli (in negativo) prestazioni.
    L’unico arco nella freccia di Java è l’infinità di librerie che lo rendono di fatto il linguaggio più completo per del codice che non deve fregarsene di dove sta girando.

    Se Google ascoltasse davvero gli sviluppatori fornirebbe loro una bella piattaforma con cui scrivere in HTML5 (già di per sè potentissimo), SVG (gli elementi adattabili sarebbero una manna per i differenti display) e Javascript (che è uno schifo in quanto “figlio” di java, ma che almeno ha il santissimo CoffeeScript) lasciando da parte phonegap e roba varia, ma permettendone l’esecuzione NATIVA, in una istanza del browser sandboxata per l’occasione. la retrocompatibilità potrebbe essere estesa con un piccolo fallback ‘a la Phonegap, da introdurre o meno nel pacchetto in base a quanto specificato dallo sviluppatore (anche ora bisogna scegliere la versione delle API, dopotutto).

    Con una cosa del genere avresti già risolto il 90% dei problemi di frammentazione. Restano i porting, ma quelli resteranno sempre indipendente dalle linee guida.

    • Roberto Orgiu

      Sarebbe la manna dal cielo poter usare gli SVG e l’HTML5, potresti fare tutto in metà del tempo utilizzando CSS3 per impaginare… ma anche senza CSS, con solo una libreria di Google, sarebbe molto meglio ;)

  • http://www.facebook.com/people/Alessandro-Esposito/100003040540848 Alessandro Esposito

    Io mi sto affacciando sulla programmazione in Android per lavoro.
    Che è molto semplice (intuitivo più che altro) è vero, e ve lo dice uno che conosce solo visual basic come linguaggio di programmazione.
    Più che altro è Eclipse che mostra dei bug ogni tanto (improvvisamente non visualizza più la view e sono costretto a riavviare il programma)

    • Roberto Orgiu

      Hai provato ad aggiornare Eclipse e plugin? :)

  • http://twitter.com/g100g G100g

    Mai provato Titanium Mobile?

    http://www.appcelerator.com/

    • Roberto Orgiu

      Si, ma non mi ha convinto la sintassi proprietaria JS-like, a dirla tutta :)

  • riccardosacchetti88

    Io vengo dal Basic e sto provando per la prima volta Basic4Android.. Sembra valido, anche se ovviamente non offre tutte le potenzialità del linguaggio originale!

    • Roberto Orgiu

      Questo non è vero, ha un sacco di plugin e ti permette di fare esattamente cosa fai con le API di Android :) Prima di scrivere l’articolo, ho programmato con tutte le tecnologie menzionate, e direi che Basic4Android è il migliore… non fosse per il canone annuo che ho pagato a novembre e mi è scaduto -.-’

  • Pingback: Android Design: perché programmare su Android | ForumCellulari.com

  • Pingback: AndroidWorld.it » Google lancia la pagina ufficiale degli sviluppatori su Google+

Forum! Hai una domanda? Falla sul forum! Avrai sicuramente più risposte!