Da qualche settimana ho iniziato a dilettarmi nell sviluppo di applicazioni mobile per il mio iPhone/iPad.

Inizialmente ho letto parecchie discussioni sull’argomento in oggetto: “native VS webapp” e in questo articolo vorrei sintetizzare alcune mie valutazioni.

Potendo dedicare allo studio delle applicazioni mobile solamente poche ore la sera ho subito approciato il mondo delle WebApp perchè mi consentono di sfruttare competenze preesistenti: HTML5, Javascript, CSS.

WebApp

Per il primissimo approccio ho utilizzato jQuery Mobile con il quale ho realizzato una semplicissima photogallery la cui interfaccia responsiva si adatta al dispositivo che la richiede: se usi un computer vedrai una pagina web con effetto lightbox mentre se usi un iPhone, Android, iPad vedrai un’interfaccia simile a quelle native.
Inoltre il passaggio tra le immagini è gestito dal touch e non dal click. [vedi esempio].

Successivamente mi sono dedicato a SenchaTouch, un prodotto veramente incredibile e completo ma dotato di scarsa documentazione libera: l’azienda che lo produce campa vendendo formazione!
Attualmente mi sto dedicando allo studio di questo prodotto e ho aperto un piccolo blog dedicato dove pubblico i miei “appunti di viaggio” su piccole e grandi cose che scopro sull’argomento.

Principali vantaggi di un’applicazione web based:

  • sviluppo su tecnologie open: html, javascript, css
  • sviluppo su browser web: safari, chrome
  • deploy dell’applicazione su server FTP
  • installazione semplice: basta collegarsi all’indirizzo dell’app
  • possibilità di funzionamento off-line (in assenza di connettività)
  • compatibilità semplificata con Android, Blackberry

Applicazione Nativa

Lo studio di applicazioni native l’ho approciato qualche tempo fa scontrandomi subito con la pessima sintassi del linguaggio ObjectiveC.

Sostanzialmente i framework (volutamente al plurale) di sviluppo su cui si basano le applicazioni native sono incredibili collezioni di oggetti e componenti pronti da utilizzare e configurare.

L’applicazione risulta così una composizione creativa di oggetti mentre la realizzazione di componenti ex-novo è tutt’altra cosa.

In linea di massima ritengo che per chi proviene dal mondo web la curva di apprendimento sia piuttosto lunga rispetto all’applicazione web based a parità di obiettivo.

Principali vantaggio di un’applicazione nativa:

  • AppStore: visibilità, diffusione, guadagno
  • prestazioni decisamente superiori
  • accesso all’hardware: fotocamera, file system, accelerometro, etc
  • funzionamento off-line nativo

Applicazione Ibrida con PhoneGap!

Una possibilità di congiungere le due diverse soluzioni in un compromesso che possa sfruttare i relativi vantaggi è l’applicazione ibrida web/nativa. Questa soluzione si può ottenere con PhoneGap.

L’applicazione ibrida è un wrapper che consente il funzionamento dell’applicazione web. Una sorta di piccolo browser preconfezionato.

Solo questo punto rende possibile distribuire l’applicazione su AppStore consentendo dunque il funzionamento off-line nativo!

Cataloghi, manuali, reference, schede tecniche sono esempi di applicazioni che trovano in questa soluzione la miglior soluzione possibile: velocità di sviluppo abbinata a capacità di distribuzione su AppStore!

PhoneGap mette anche a disposizione delle API Javascript per poter accedere a funzionalità avanzate del dispositivo quali:

  • file system
  • fotocamera
  • libreria media
  • accelerometro
  • bussola
  • contatti
  • geolocalizzazione
  • connettività
  • notifiche
  • storage db

Con questo sistema sono riuscito, nell’arco di una giornata, a realizzare il prototipo di un’applicazione che mantiene sincronizzati sul device (in questo caso un’iPad) una serie di files (pdf) pubblicati su di un server FTP remoto. Una sorta di client Dropbox ma mooolto più semplice.

In conclusione presumo che proseguirò sulla strada dell’applicazione ibrida perchè rappresenta un punto di giunzione tra le due diverse filosofie di sviluppo. Inoltre offre un sistema piuttosto semplice per realizzare applicazioni compatibili con più dispositivi!