Questa serie di articoli si focalizza sulla scelta di un modello applicativo che consenta di scrivere una sola volta applicazioni di tipo mobile che siano distribuibili sulle principali piattaforme (iPhone, BlackBerry, Android, …), senza effettuare la minima modifica.
Introduzione
Negli ultimi anni si sta assistendo a una rapida evoluzione dei dispositivi mobili sia in termini di hardware che in termini di piattaforme software.
Da semplici dispositivi con sistemi operativi dedicati e con poche risorse, si è passati a complesse piattaforme hardware basate ormai su versioni minimali di sistemi operativi pensati per girare in ambito desktop. Basti pensare a uno dei dispositivi che ha segnato un punto di svolta nell’esperienza utente e che ad oggi è uno dei dispositivi più copiati nella forma e nel comportamento: l’iPhone.
Il kernel del sistema operativo iPhone OS, presente tra l’altro in iPod, è basato sull’attuale piattaforma Mac OS X a cui sono state apportate modifiche e migliorie per meglio supportare la caratteristica mobile del dispositivo e per compensare la diversa iterazione utente. Altre piattaforme come Android OS, Maemo, iPad e molti altri sistemi basati su kernel linux hanno seguito questa strada.
Un fattore, risultato in parte da strategie di mercato per iPhone OS e in parte da problemi di licenze per Android OS, è quello dell’assenza di della MicroEdition di Java da questi dispositivi. Questo comporta un’inevitabile problema di portabilità del software attraverso le piattaforme, il che ha spinto le aziende a ricercare altre strade e modelli per risolvere il problema. L’assenza del modello Java ME è dovuta anche al fatto che non permette un accesso completo alle funzionalità di base del cellulare.
In questo articolo verrà presentato un possibile modello per la realizzazione di applicazioni mobili nel contesto Enterprise, al fine di soddisfare i requisiti di:
- adattabilità dell’applicazione e dei servizi forniti tramite essa allo specifico utente che li utilizza
- portabilità di un’applicazione sulle principali piattaforme mobili (iPhone, BlackBerry, Android, …)
Le tematiche di adattabilità e di portabilità verranno affrontate sia in relazione all’utente finale che in relazione alle grandi aziende.
Con l’adattabilità si vuole offrire all’utente un valore aggiunto dato dallo stesso dispositivo mobile (come il cellulare) che è person ale e che si porta sempre con se’. Dal momento che si possono sfruttare le caratteristiche come la geo-localizzazione e la rubrica (figura1), è possibile personalizzare l’aspetto e il funzionamento degli applicativi in base alle abitudini e alle preferenze dell’utente definendo delle applicazioni “context-aware”.
Figura 1 – Accesso a informazioni come la rubrica e la geo-localizzazione utili al servizio offerto dall’applicazione mobile
Con applicazioni context-aware s’intende che tutte le informazioni che si ricevono sul cellulare sono contestualizzate, basate ad esempio sulla posizione e area geografica in cui l’utente si trova, sulle attività che si stanno facendo e sulle proprie preferenze, nel momento stesso in cui si richiedono le informazioni.
Ad esempio,con la stessa rubrica del telefonino è possibile individuare la posizione e l’umore dei nostri contatti, per scoprire se un amico si trova in una determinata città e se è disponibile a uscire per andare al cinema. Oppure, dal telefono è possibile inoltre inviare foto sul nostro blog in Internet e condividerle con gli amici: le foto vengono annotate automaticamente con informazioni di contesto, come il nostro stato d’animo, la posizione e le persone con cui ci trovavamo quando è stata scattata la foto.
Chi invece volesse leggere questo articolo da cellulare, potrebbe scegliere una tipologia di rete (Wi-Fi o 3G) a cui il servizio si adatta per migliorare i tempi di caricamento e dunque la qualità stessa percepita dall’utente finale.
In definitiva, fornire servizi context-aware significa per un service provider dare ai propri clienti servizi e
contenuti altamente personalizzati “giusto in tempo”.
Con la portabilità ci si concentra sulla valorizzazione degli investimenti, cercando di supportare il maggior numero di piattaforme possibili con costi di sviluppo e manutenzione accettabili. L’importanza della portabilità deriva dal fatto che si vuole realizzare un’applicazione che viene scritta una sola volta e che poi può essere distribuita su iPhone, Android, BlackBerry, Symbian (figura 2) senza apportare la minima modifica.
Poiche’ che uno dei principali modelli applicativi attualmente adottato non consente che un’applicazione sviluppata per un certo tipo di piattaforma (cosiddetta nativa) sia poi distribuibile sulle altre, occorrerebbe ri-scrivere la stessa applicazione per ciascuna piattaforma.
Solitamente un’applicazione non è portabile su più piattaforme a causa della dipendenza dal sistema operativo proprietario, delle dimensioni dello schermo o del tipo di browser utilizzato.
Ciascuno dei principali produttori ha ritenuto opportuno realizzare le proprie applicazioni in maniera nativa, utilizzando il linguaggio di programmazione della loro piattaforma, definendo anche un processo di distribuzione dell’applicazione mediante store. In questo modo, si sono creati dei lock-in sulla conoscenza di specifici linguaggi di programmazione come Objective C per la piattaforma iPhone e l’impossibilità nell’utilizzo di un’applicazione creata ad esempio per iPhone da parte di un utente che possiede invece un HTC.
Tutto questo ha un forte impatto soprattutto nei riguardi di un’azienda che magari vuole distribuire su più piattaforme l’applicazione, con l’obiettivo di svilupparla una sola volta senza ricorrere a linguaggi proprietari ma a standard web, contenendo i tempi e i costi di realizzazione.
Se un’azienda scegliesse l’approccio nativo, questo comporterebbe non solo l’aumento dei tempi di realizzazione, ma anche l’aumento dei costi ai quali si aggiungerebbero quelli per la formazione del personale per le specifiche tecnologie native.
In questo articolo verranno descritti i principali modelli attualmente presenti sul mercato che consentono di realizzare applicazioni sul mobile. Dall’analisi dei modelli introdotti verrà dedotto il modello che meglio si presta allo sviluppo delle applicazioni su mobile ma che rispetta i requisiti di adattabilità e portabilità. Il secondo articolo di questa serie invece sarà dedicato alla spiegazione del modello scelto e a come è possibile applicarlo, introducendo le tecnologie a supporto. Per dare validità al modello, nel terzo articolo verrà riportato l’ esempio di un’applicazione mobile in cui verranno dati i suggerimenti necessari e i passi da seguire per lo sviluppo e la distribuzione sulle piattaforme principali.
Modelli applicativi
Attualmente esistono dei modelli applicativi che consentono lo sviluppo di applicazioni sul mobile.
Questi modelli si possono raggruppare in due macro categorie:
- modello per applicazioni web
- modello per applicazioni native
A queste categorie se ne è aggiunta una terza per applicazioni ibride, che tenta di mettere insieme aspetti sia dell’uno che dell’altro modello, in modo da rispondere più efficacemente ai requisiti di portabilità e di adattabilità.
Le applicazioni web o web-application sono applicazioni distribuite web-based; sono applicazioni accessibili via web per mezzo di un network, come ad esempio una intranet o la rete Internet. Questo modello applicativo è divenuto piuttosto popolare alla fine degli anni Novanta, data la possibilità a un client generico di accedere a funzioni applicative, utilizzando come terminale normali web browser.
Una delle prime piattaforme a supporto della realizzazione di applicazioni mobile è stata la Java ME (Java Platform Micro Edition), realizzata per i dispositivi mobile e i sistemi embedded. È stata ideata dalla Sun Microsystems che ha fornito un’implementazione di riferimento della specifica [JAME]. Il fatto che tale piattaforma non sia oggi largamente adottata è legato a problematiche di licenza e di possibilità di accesso alle funzionalità base del dispositivo che essa fornisce.
Di conseguenza, molti produttori come la Apple o la Nokia hanno deciso di adottare il modello nativo, aumentando non solo il problema della portabilità ma anche i tempi e i costi per l’acquisto delle licenze necessarie per la distribuzione sugli appositi store.
Il modello web può essere applicato da qualunque produttore di applicazioni native; nel momento in cui si decida di non distribuire l’applicazione sullo store, questa può essere resa disponibile a un apposito indirizzo URL, raggiungibile mediante browser. È interessante evidenziare il fatto che Palm col sistema operativo Palm webOs [PALM] si sia dedicata solo ad applicazioni che supportano il modello web e non nativo. Questo pone meno vincoli nel caso della portabilità ma potrebbe creare dei problemi come nell’utilizzo delle API native per accedere alle funzionalità native da parte della web application.
Di seguito verranno illustrate le caratteristiche delle applicazioni native e web in modo da evidenziare come queste riescono a rispondere ai requisiti di portabilità e adattabilità.
Applicazioni native
Con il termine applicazione nativa s’intende un’applicazione che ha le seguenti caratteristiche:
- installabile sul dispositivo mobile;
- sviluppata col linguaggio specifico della piattaforma sottostante;
- capace di sfruttare tutte le potenzialità e caratteristiche (geolocalizzazione, accelerometro, vibrazione, etc) del dispositivo.
I vantaggi di questo tipo di applicazioni sono molteplici:
- completa integrazione con hardware e sistema operativo;
- “look and feel” standard;
- velocità di esecuzione;
- distribuzione semplificata (accesso allo store ufficiale).
Questi vantaggi sono tutti orientati ad offrire all’utente una maggiore soddisfazione nell’uso del dispositivo che lo rende in un certo senso “fedele” alla piattaforma e lo spinge ad usarlo sia per lavoro che per motivi personali.
In questo contesto, la pubblicazione, la ricerca e il download sugli store ha assunto un ruolo sempre più importante, sia perche’ gli utenti hanno accettato rapidamente questa modalità, sia perche’ la visibilità e la facilità d’uso sono maggiori rispetto ai canali tradizionali come il web, che sembrano compensare alcuni svantaggi come i frequenti aggiornamenti.
Questo tipo di applicazione risponde al requisito di adattabilità perche’ ha accesso alle funzionalità del dispositivo: quindi ad essa è possibile reperire le informazioni di localizzazione o del profilo utente, utili alle applicazioni che ne fanno uso.
Se si adotta questo modello, il requisito di portabilità non potrà essere rispettato facilmente dal momento che tale tipo di applicazione viene realizzata utilizzando il linguaggio nativo del dispositivo; è quindi necessario riscrivere l’applicazione per ciascuna piattaforma sulla quale la si voglia distribuire. Un tale scenario è applicabile per piccole applicazioni che prevedono bassi costi di sviluppo e soprattutto di manutenzione.
Per le applicazioni di tipo Enterprise (come per banche, assicurazioni, grandi gruppi industriali, …) invece,i costi di formazione e manutenzione, uniti a un aumento significativo del numero di tecnologie e standard, comportano il ricorso a ditte specializzate, creando quindi uno scenario che porta a lock-in sia del personale che dei fornitori che limitano la gestione ordinaria dell’azienda stessa.
Qui di seguito, come mostra la tabella 1, vengono riassunti i pro e i contro di questo modello focalizzandoci sul fatto che rispondono positivamente all’adattabilità dell’applicazione (grazie all’accesso alle funzionalità del dispositivo) ma anche alla facilità di ricerca e downloading della stessa in quanto disponibile su store, e alla possibilità di utilizzo in modalità offline perche’ installabile su dispositivo.
Tabella 1 – Vantaggi e svantaggi del modello nativo.
Applicazioni web
Un altro possibile modello per la realizzazione di applicazioni di tipo mobile è quello web. Secondo questo modello, l’applicazione sarebbe disponibile tramite l’utilizzo di un browser installato sul dispositivo esattamente come avviene per le applicazioni web usate abitualmente dai normali PC (figura 3).
Le caratteristiche di questo tipo di applicazione sono le seguenti:
- non è installabile sul telefono cellulare (quindi non sono possibili operazioni offline);
- non è disponibile sugli store;
- non è scritta in linguaggi di programmazione nativi ma in standard web.
Figura 3 – Applicazione web raggiungibile mediante browser da qualunque dispositivo.
Tale tipo di applicazione è invocata mediante browser che generalmente, per problemi di sicurezza, non consente l’accesso alle risorse hardware del dispositivo e quindi anche alle informazioni del profilo utente, rendendo molto difficile adattare e personalizzare l’applicazione .
Anche l’aspetto e l’usabilità tendono a divergere notevolmente rispetto a quelli offerti in modo nativo, creando un “disorientamento” dell’utente.
Di conseguenza, questo tipo di applicazione non risponde al requisito di adattabilità, creando anche delle difficoltà di ricerca della stessa applicazione che si vuole utilizzare. Infatti, dal momento che tale tipo di applicazione non è disponibile sugli store ufficiali dei principali produttori, sarà raggiungibile su web a un certo URL. Ma tutto questo complica la ricerca di una certa applicazione e la verifica delle modalità per il suo utilizzo.
Inoltre, il fatto stesso che l’applicazione non sia installabile su dispositivo mobile non dà la possibilità di utilizzo della stessa in modalità offline. Per esempio, un’applicazione installabile su dispositivo che permette di leggere degli articoli online, potrebbe dare la possibilità di salvare gli articoli su dispositivo mobile di modo da poterli consultare quando necessario, senza dover far uso della rete.
L’unico vantaggio di questo tipo di applicazioni (tabella 2) sta nel fatto che la realizzazione viene fatta con linguaggi standard web e non proprietari. In tal modo, è possibile che la stessa applicazione venga usata da più piattaforme perche’ è raggiungibile mediante browser web. Un altro fattore legato anche al concetto di portabilità sta nel supportare i vari tipi di browser che ogni piattaforma ha definito. Infatti, anche se l’applicazione è portabile perche’ si evita la ri-scrittura della stessa, occorre che comunque venga adattata per i principali browser attualmente in commercio come Android Web Kit, Opera Mobile/Mini, Safari (iPhone, iPod Touch), Blackberry, S60 WebKit (Nokia), IE Mobile (Microsoft), Bolt, Skyfire, OpenWeb, Fennec, Teashark ed Ozone.
La tabella 2 riassume i pro e contro già individuati per le applicazioni web, e in particolare:
- facilità di manutenzione e distribuzione;
- scarsa usabilità
Tabella 2 – Vantaggi e svantaggi del modello web.
Applicazione ibrida
Il modello ibrido viene introdotto per risolvere le limitazioni dei due modelli descritti in precedenza, soprattutto in risposta ai requisiti che ci siamo posti. In questo contesto, il modello ibrido assorbe alcune caratteristiche sia del modello nativo che di quello web.
Dal modello nativo viene presa la possibilità di accedere alle funzionalità del dispositivo in modo da soddisfare la richiesta di adattabilità e dal modello web viene presa la possibilità di riusare il codice senza doverlo riscrivere per ciascuna piattaforma in modo da soddisfare la portabilità multipiattaforma.
Questa tipologia di applicazioni è quindi costituita da due parti:
- una nativa
- una web
La parte nativa consente l’accesso alle informazioni del dispositivo garantendo una interazione standard con l’utente, la distribuzione mediante store e la possibilità di lavorare anche offline. Questa parte in genere non dipende dall’applicazione che si intende realizzare e quindi può essere realizzata come “framework”, cioè un’infrastruttura a supporto dello sviluppo e solitamente non a carico dello sviluppatore dell’applicazione web.
La parte web, invece, è fortemente dipendente dall’applicazione da realizzare e quindi soggetta a variazioni molto frequenti. Questa componente però viene scritta una sola volta con tecnologie standard e, sfruttando le funzionalità messe a disposizione dalla parte nativa, può implementare requisiti che alle applicazioni web “pure” sono negati.
Questo approccio ha però degli svantaggi perche’ la qualità dell’applicazione finale dipende dal framework e dalla difficoltà di poter aggiungere ulteriori caratteristiche oltre a quelle fornite di default. Per questa ragione, durante la selezione del framework da utilizzare, dovrebbe avere particolare importanza una licenza di tipo open source e una “community” molto attiva, oppure un prodotto proprietario sostenuto dai maggiori produttori di dispositivi mobili.
Un framework open source che permette di realizzare applicazioni ibride è PhoneGap [PHG], sviluppato dalla Nitobi software. Questo frame work fornisce un template applicativo per le piattaforme supportate, di modo che lo sviluppatore possa concentrarsi sulla realizzazione della sola parte web dell’applicazione, utilizzando l’accesso alle funzionalità native grazie alle funzioni JavaScript fornite dalla stessa PhoneGap.
Un altro frame work è Rhomobile [RHM] che lavora in maniera diversa rispetto a PhoneGap. Questo framework prevede che l’applicazione web venga compilata per la piattaforma interessata in modo da ottenere una reale applicazione nativa. Rhomobile lavora cercando di definire l’applicazione realizzata come nativa sulla base della validità dei compilatori.
A parte le differenze tecnologiche di questi due tipi di frame work, vogliamo orientarci su un prodotto open source che riesca a fornire supporto anche mediante wiki e community. Per questo la scelta del framework a supporto del modello ibrido sarà PhoneGap.
Conclusione
In questo articolo l’obiettivo è stato quello di contestualizzare l’ambito mobile in ottica enterprise.
Partendo dagli attuali modelli web e nativo che per la maggior parte dei casi sono quelli utilizzati per realizzare le applicazioni per dispositivi mobili, si è voluto analizzare le loro caratteristiche in risposta ai requisiti dell’adattabilità e della portabilità.
L’esigenza di risposta al requisito di adattabilità nasce dal fatto che oramai le richieste dell’utente sono legate alle sue preferenze e al contesto in cui si trova. Da qui la necessità di dover adattare le applicazioni sulla base di queste informazioni.
L’esigenza della portabilità nasce invece dal fatto che le aziende che realizzano un’applicazione con un certo spessore business (mobile banking), la quale sia poi distribuibile sulle principali piattaforme come iPhone e Android, devono riuscire a farlo nel contenimento dei tempi e dei costi.
Dall’analisi dei modelli web e nativo si è dedotto che non sono sufficienti a coprire con le loro caratteristiche i due requisiti. Da qui l’introduzione del modello ibrido che con una componente nativa riesce a garantire l’adattabilità dell’applicazione e con una componente web riesce a garantire la portabilità col minimo sforzo. A supporto di questo modello è stato necessaria però la ricerca e l’introduzione di un framework come PhoneGap che riesce a fare da “ponte” tra la parte nativa e quella web.
Nel prossimo articolo di questa serie infatti saranno spiegati i punti di forza di questo framework, come esso lavora e come abilita all’utilizzo delle funzionalità native rendendo indipendente da queste lo sviluppatore che deve invece occuparsi della realizzazione della sola web application.
Riferimenti
[PHG] Phone Gap
http://phonegap.pbworks.com/
http://building-iphone-apps.labs.oreilly.com/ch07.html
[RHM] Rhomobile
http://rhomobile.com/
[PALM] Palm
http://en.wikipedia.org/wiki/WebOS
http://en.wikipedia.org/wiki/Android_%28mobile_phone_platform%29
[JAME] Java MicroEdition
http://en.wikipedia.org/wiki/Java_ME