Quanto è complicato scrivere una applicazione mobile?

Come l’emergere dei dispositivi mobile cambia lo stile e l’approccio alla programmazione?

Quanto è complicato scrivere una applicazione mobile?

Quando, tempo fa, ho messo le mani su un iPad queste sono le domande “da sviluppatore” che mi sono sorte.

Premetto che avevo già avuto esperienze di programmazione di dispositivi mobile. In particolare provenivo da una esperienza di sviluppo su piattaforma Microsoft .NET con Visual Studio e hardware Pocket PC Windows 6.5.

Con l’introduzione di .NET Compact Framework, Microsoft ha portato tutti i vantaggi dello sviluppo di codice gestito alle applicazioni mobili. Gli sviluppatori che conoscono già bene la scrittura di applicazioni Windows® Forms possono accelerare notevolmente le attività di programmazione per i dispositivi mobili.

Era tempo di cimentarsi con i dispositivi di Apple e quindi IOS?

Dopo un periodo di ricerca e studio ho acquistato il libro Sviluppare applicazioni per iPad di Daniel H. Steinberg, Eric T. Freeman e ho iniziato a seguire il corso onLine della Università di Standford. In fondo si trattava solo di aggiungere la conoscenza e la competenza di un altro linguaggio di programmazione.

Mentre proseguivo lo studio ho iniziato a intuire un’altra possibilità:  uno sviluppatore web potrebbe cogliere nuove opportunità in questo settore sfruttando i linguaggi che già conosce, al secolo Javascript, HTML e CSS.

A questo punto è doveroso fare una distinzione tra il tipo di applicazioni che è possibile sviluppare:

  • web app
  • native app

Una web app non è altro che un sito ottimizzato per la navigazione mobile: ha una sua URL ed è accessibile al pubblico, non è installata sul telefono e non è nello store online.

Una native app, invece, è un’applicazione vera e propria, può essere acquistabile nello store, ed accedere a tutte le funzionalità hardware del device.

Pro e contro

Vi sono delle differenze tra le due famiglie di applicazioni, ciascuna dele quali presenta dei vantaggi e svantaggi.

Pro di una web app:

  • lo sviluppatore web non deve imparare un nuovo linguaggio/tecnologia
  • l’applicazione è disponibile per qualsiasi device dotato di browser

Contro:

  • non si possono utilizzare le funzinalità hardware del device
  • alcuni effetti della UI nativi sono solo simulati o difficilmente implementabili

Pro di una app nativa:

  • accesso a tutte le funzionalità del telefono
  • effetti UI e gesture nativi
  • possibilità di submit nello store

Contro:

  • necessità di imparare un nuovo linguaggio
  • il porting verso device diversi da quello scelto implica la riscrittura del codice

Fortunatamente tra i due estremi proposti esistono svariate sfumature che ci vengono incontro aiutandoci nello sviluppo della nostra app, senza rinunciare sia alle tecnologie (e skills) di cui già disponiamo che alle funzionalità avanzate del telefono. è proprio questo il percorso che andremo ad illustrare.

In particolare la mia esperienza è stata trasformata dalla conoscenza delle librerie Sencha Touch. Di questa azienda già usavo le librerie extJs.

Going offline with HTML5

La prima cosa da fare per passare da un web site mobile ad un primo accenno di applicazione è renderlo navigabile offline per permettere al device di navigarlo anche senza connessione, e magari fornire qualche meccanismo di persistenza dei dati, per avere un minimo di storage.

HTML5 fornisce già tutto ciò: grazie al manifest è possibile ottenere il caching dell’app offline, mentre tramite meccanismi di storage e DB lato client permette il salvataggio di dati ed impostazioni.

Siamo ancora però lontani dall’utilizzare funzionalità avanzate come il sensore GPS o l’accelerometro del device: non abbiamo fatto altro che mitigare alcuni degli svantaggi di un web site mobile, adesso quello che ci interessa è migliorare ulteriormente le cose ed andare a prendere i vantaggi di un app nativa.

L’anello di congiunzione verso il native

Fortunatamente esistono dei tool come phonegap o titanium che ci permettono di estendere le nostre tecnologie e di tradurle nel codice nativo del device che vogliamo: possiamo definire questi tool come l’anello di congiunzione tra il nostro web site mobile all’applicazione nativa.

La vera potenza di questi tool è nel rendere disponibili tutte le funzionalità del device senza scendere nello sviluppo di codice nativo (come objective C per iphone o java per android), permettendo di essere produttivi sin da subito.

Il modello di programmazione resta invariato: si scrive la propria applicazione web, con look & feel opportunamente orientato al mobile, la si arricchisce tramite javascript di tutte le funzionalità necessarie (accelerometro, vibrazione, GPS … ) ed una volta terminato lo sviluppo viene tradotta ed impacchettata nel codice del dispositivo destinazione.

Questo porta ai seguenti vantaggi:

  • non dover imparare un nuovo linguaggio: abbiamo sfruttato HTML, javascript e CSS.
  • portabilità: sebbene ciascun device (soprattutto tra concorrenti) presenti differenze delle quali non si può non tenere conto, sarà sufficiente prendere la nostra app originale e riesportarla esportarla per il tipo di dispositivo voluto.
  • codice finale nativo: possibilità di submit della nostra app nello store online

In particolare io ho utilizzato PhoneGap.

PhoneGap è un framework open-source per lo sviluppo di applicazione mobile cross-platform con HTML5, CSS and JavaScript per iPhone/iPad, Android, Palm, Symbian, BlackBerry, Windows Mobile e molto altro.

L’utilizzo è semplice, bisogna scrivere un’applicazione in HTML e JS e fare il deploy per ciascun sistema operativo mobile, senza perdere le funzionalità native della propria applicazione.

Riassumendo PhoneGap non è altro che un wrapper, cioè un contenitore, che permette agli sviluppatori di racchiudere le loro applicazioni web all’interno di applicazioni native per i device supportati. Lo sviluppatore scrive la sua applicazione in javascript, html e css e il framework si occupa di interfacciarla con il terminale.

Ovviamente essendo un framework open-source, PhoneGap supporta estensioni e plugin spesso indispensabili per lo sviluppo della propria applicazione. I più famosi sono Sencha Touch e  jQuery Mobile.

Forse le prestazioni non saranno come nel caso della realizzazione di un’applicazione nativa, ma questo framework permette di realizzare software mobile senza conoscere Objective-C e Java. In più applica il famoso slogan “Write Once, Run Anywhere” che ha decretato il successo mondiale della Sun.

La documentazione è ricca e nel forum c’è tutto l’aiuto possibile, rendendo questo framework davvero appetibile per chiunque stia affrontando lo sviluppo mobile da poco o ha bisogno di realizzare un’applicazione multi piattaforma in poco tempo e con poco impegno.

Conclusioni

Ho solo accennato brevemente a come uno sviluppatore web possa affacciarsi al settore mobile, ma le premesse sono tutte incoraggianti: disporre di tecnologie che ci permettono di essere produttivi sin da subito, in un settore che sta diventando sempre più la nuova frontiera del web, è forse una delle carte vincenti per poter vincere questa scommessa.

Vi lascio con una applicazione che è stata il filo rosso di questo mio studio/ricerca. Si tratta di una applicazione web che indica la pompa di benzina più conveniente rispetto al punto in cui ci si trova.

Realizzarla era una piccola sfida: questo codice contiene sia servizi web (in particolare si utilizza il server della regione FVG che pubblica i dati dei prezzi di tutti i distributori in regione), sia servizi di integrazione con hardware (accesso al GPS integrato) e anche al filesystem (memorizzazione delle preferenze).

Eccovi il link: http://www.zenfamily.it/benzina/m

Per i possessori di dispositivi Apple:

1- Visitare da iPad/iPhone il sito http://www.zenfamily.it/benzina/m</wbr>

2- Aggiungere il sito come Home Screen pigiando sul simbolo + in Safari e quindi scegliere “Aggiungi a Home”

3- Uscire da Safari ed aprire la nuova applicazione cliccando sull’icona che abbiamo aggiunto.

 

 

ARTICOLI
mobile sviluppo