sviluppo-mobile-app sviluppo-mobile

Opzioni, tools e ambienti di sviluppo per applicazioni mobile

sviluppo-applicazioni-mobile
  1. Sviluppo mobile: da ieri ad oggi
  2. Sviluppo app mobile native
  3. Sviluppo web app mobile
  4. Sviluppo app mobile ibride
  5. Progressive web app
  6. Sviluppo app multipiattaforma
1.

Sviluppo mobile: da ieri ad oggi

Gli smartphone hanno rappresentato un fenomeno di massa dal punto di vista del consumismo elettronico, ma soprattutto una significativa evoluzione tecnologica della telefonia portatile, rendendosi protagonisti della terza generazione dei cellulari.

Fino a un trentennio addietro i cellulari erano dei dispositivi elettronici dotati solamente di ricevitore e microfono, in grado di agganciarsi alla rete mobile per comunicare a voce con un'altra persona, abbattendo così le distanze.
Il passaggio dal segnale analogico a quello digitale ha permesso di implementare servizi per lo scambio di messaggi testuali (SMS ), ma soprattutto, grazie all'avvento del GPRS, internet è diventato accessibile anche da telefono cellulare, rendendo possibile navigare il web con un browser (grazie al protocollo WAP ), spedire e ricevere e-mail con allegati, inviare foto e filmati digitali.

Il passaggio dal sistema GSM all'UMTS ha determinato un potenziamento trasmissivo negli standard di telefonia mobile, rendendo possibili tutta una serie di servizi richiedenti banda larga (videochiamate, upload di dati su server, messaggistica istantanea).

sviluppo-applicazioni-mobili

Memorie dati sempre più capienti e processori in grado di eseguire più applicazioni in background rendono l'elettronica dei device odierni nettamente migliorativa rispetto ai modelli delle generazioni precedenti.
I telefoni di oggi (o per meglio dire, gli smartphone) riproducono musica, scattano foto, girano video, si connettono a reti Wi-Fi, caricano pagine web, supportano i formati più comuni di documento (PDF, Word, Excel), ma soprattutto è possibile integrarli di funzionalità ulteriori attraverso le app, applicazioni di terze parti scaricabili dai web stores.

Le operazioni di processamento e memorizzazione di tali dispositivi sono diventate sempre più performanti e vicine agli standard dei personal computer, questo anche grazie allo sviluppo apposito di sistemi operativi per dispositivi mobili, in larga parte derivati dai desktop che permettono di gestire svariati applicativi, dal browser alla posta elettronica.
Se aggiungiamo a tutto questo una grafica sempre più definita e la sempre maggiore semplicità d'utilizzo raggiunta dalle interfacce utente, un altro punto a loro favore, oltre l'efficienza, è la funzionalità.

Tra la fine degli anni 90 e l'inizio del nuovo millennio, alcune famose compagnie telefoniche ed aziende informatiche (Alcatel, AT&T, Mitsubishi, Sun Microsystems) proposero al W3C l'adozione dell'HDML (Handheld Device Markup Language), un linguaggio a marcatori che rendeva accessibili gli ipertesti a piattaforme che non fossero solamente personal computer, ovvero telefoni cellulari, palmari, cercapersone.
Le informazioni, conservate su server fisici legati all'infrastruttura di Internet, viaggiavano per raggiungere degli apparati di rete (gateway ) e da questi essere instradate verso la rete digitale GSM.
Possedere un dispositivo con tecnologia WAP permetteva di attingere a tali informazioni, ma la navigazione era diversa da quella che conosciamo oggi.
I file, con estensione .hdml, erano concepiti solo per la consultazione; non era prevista interazione dell'utente con la pagina, come neanche animazioni o alcunché ricordasse le pagine dinamiche alle quali siamo abituati oggigiorno.

adobe-flash

Gli anni a venire furono dominati da Flash, allora valido strumento per lo sviluppo di applicativi per cellulari, in particolare grazie alla disponibilità di un emulatore che supportava svariati modelli, pemettendo così, direttamente dal proprio computer, di testare virtualmente l'applicazione su più dispositivi.
Flash, inoltre, supportava la programmazione, essendo dotato di una sua sintassi integrabile per il compimento di operazioni avanzate.

Arrivati in epoca contemporanea, HTML, giunto nel frattempo alla versione 5, ha allargato gli orizzonti del web di pari passo alla diffusione a macchia d'olio dei sistemi mobile, aprendo soprattutto ai web developers scenari professionali inaspettati.
Sotto molti aspetti, l'impatto del settore mobile nel corso del nuovo millennio è paragonabile a quello che il Web ha avuto negli anni novanta; il paragone diventa un connubio se si considera l'inclusione di diverse opzioni per il mondo mobile nelle specifiche delle tecnologie web attuali (HTML5, JavaScript).

Il Web ha ampliato la visione dell'utente, non più solo fruitore di contenuti ma creatore esso stesso di vere e proprie applicazioni, fruibili anche da mobile o specificamente sviluppate per ambienti mobile.

Adesso proviamo a delineare una classificazione basata sulle tecnologie e sui metodi sfruttabili per lo sviluppo di app mobile.

2.

Sviluppo app mobile native

Il metodo nativo è quello che permette a un'applicazione di integrarsi perfettamente con la sfera hardware del dispositivo, sfruttando appieno le funzionalità e potenzialità del sistema operativo sul quale andrà a girare; quest'ultimo è l'ambiente ideale per gli sviluppatori che esigono dall'applicazione le performance migliori.

Le app native vengono realizzate sfruttando la documentazione e gli strumenti di sviluppo software (SDK, API ) forniti dai produttori stessi del sistema operativo per il quale si intende sviluppare e presentano un'interfaccia che richiama la grafica di sistema.

I sistema di punta e attualmente padroni nel panorama mobile sono Android e iOS, ognuna con le proprie tecnologie hardware e software di riferimento.

app-native-cosa-sono

Android è il sistema operativo per dispositivi mobili maggiormente diffuso, sviluppato da Google e scelto da numerose aziende multinazionali (Samsung, Huawei, Amazon, BlackBerry) per il funzionamento dei loro dispositivi.

Il linguaggio principale per progettare applicazioni Android è Java, anche se negli ultimi anni ha iniziato a prendere piede un suo derivato, ovvero Kotlin, altro linguaggio divenuto ormai ufficiale per lo sviluppo di applicazioni android, più moderno, meno complesso, ma comunque performante quanto Java e perfettamente compatibile con l'ambiente Android, anche grazie alla disponibilità di strumenti di conversione per la migrazione di progetti da Java a Kotlin.

iOS è un sistema operativo sviluppato da Apple per dispositivi iPhone, iPod touch e iPad, ma a differenza di Android non può essere montato se non sugli stessi device Apple, essendo stato progettato unicamente per l'hardware proprietario della casa madre.

Per diversi anni lo sviluppo di applicazioni iOS ha visto protagonosta il linguaggio Objective-C, parzialmente derivato da C e C++, e proprio per questo poco intuitivo.
Per aumentare la produttività in termini di sviluppo, Apple ha lanciato Swift, un linguaggio di più alto livello ma altrettanto veloce, oltre che maggiormente leggibile e meno prolisso. A renderlo più approcciabile e preferibile è anche il non doversi preoccupare di gestire manualmente la memoria, potendosi dedicare maggiormente allo sviluppo delle funzionalità applicative.
Tuttavia, i vantaggi dipendono anche dal contesto di sviluppo, per cui lavorando più a basso livello Obj-C risulta più potente di Swift, vista anche la possibilità di mischiarlo a codice C++ rendendolo ancora più performante.

Nel 2010 Microsoft ha presentato il proprio sistema operativo per smartphone, Windows Phone, per il quale è possibile scrivere applicazioni servendosi di C#, linguaggio C-like orientato agli oggetti, semi-compilato e specificamente rivolto alla programmazione in ambiente .NET.
Ma, pur trattandosi di Microsoft, il divario con i marketplaces di Android e iOS è sempre stato un tallone d'achille, vista la povertà di applicazioni disponibili rispetto agli stores concorrenti.
Windows rimane tutt'oggi il rivale più temibile per sistemi desktop, ma non si può dire abbia retto il confronto in ambiente mobile.

La maggioranza delle agenzie e degli sviluppatori ambiscono a pubblicare le proprie app su più canali di distribuzione al fine di raggiungere un pubblico più vasto, ma è proprio questo a non rendere il metodo nativo l'approccio migliore allo sviluppo.
Indipendentemente dal sistema operativo, le funzionalità offerte dall'applicazione sono sempre quelle, ma il percorso di sviluppo sarà diverso perché diverse sono le tecnologie alla base del progetto.
Di tale metodo ne beneficia l'applicazione per stabilità ed affidabilità, così da garantire un'esperienza utente più qualitativa e performante.
Chi la deve realizzare, invece (specie realtà aziendali non molto ricche), andrà senz'altro incontro a un aumento dei costi, che potrebbe tradursi nel doversi dotare di risorse umane abili con le tecnologie native necessarie, oppure nel dover formare le risorse umane già disponibili a queste stesse tecnologie, come di certo anche a una maggiore complessità di progettazione e a un aumento delle tempistiche di lancio.
Tali ostacoli hanno stimolato l'evoluzione tecnologica verso scenari di sviluppo meno problematici e più efficaci dal punto di vista e della complessità e della produttività.

3.

Sviluppo web app mobile

Una delle prime opzioni possibili per superare le difficoltà del metodo nativo, e tuttora largamente applicata, è quella di realizzare una web app ; se ne sente parlare sempre più spesso: ma cos'è una web application ?
sviluppo-web-e-mobile-appSostanzialmente si tratta di una pagina web responsive, ottimizzata per la fruizione attraverso i browser dei dispositivi mobili, quindi progettata con la giusta e ormai pretesa attenzione all'esperienza di navigazione degli utenti mobile, ma che non ha molto in comune con le app così come le abbiamo viste al paragrafo precedente.
Tali applicazioni soffrono la limitazione di non poter accedere alle funzionalità che il sistema operativo rende disponibili ad un'app nativa (file system, risorse hardware).

Inoltre, la web app non presenta il look and feel assunto in maniera naturale da un'app nativa, ma può solamente seguirne le linee guida e adottare uno stile che rievochi l'interfaccia di quella nativa.

Le web app non possono funzionare offline ed essere distribuite sugli stores presenti in rete; il loro funzionamento non dipende dal device e dal sistema operativo, ma unicamente dalla raggiungibilità del server remoto, il solo a renderle accessibili e fruibili.

Queste tipologie di applicativi (ma, come vedremo fra poco, anche altre) vengono sviluppate attraverso le tecnologie front-end del web, ossia HTML, CSS e JavaScript.

4.

Sviluppo app mobile ibride

L'aggettivo ibrido si riferisce alla possibilità di implementare e far coesistere funzionalità native e caratteristiche tipiche della web application.

App native e app ibride hanno elementi in comune, considerato che le tecnologie web con cui vengono realizzate quest'ultime possono interfacciarsi con alcune funzionalità native del sistema operativo del dispositivo (bluetooth, rilevatore GPS, fotocamera) grazie ad un insieme di API messe a disposizione dai framework ed accessibili tramite JavaScript.
Inoltre, come le native vengono pubblicate attraverso gli stores.

Ma cosa sono le app ibride, concretamente? Proviamo a dargli una definizione.
Sostanzialmente si tratta di un'applicazione che, a sua volta, contiene un'altra applicazione (ovvero, la web application); quest'ultima può essere inglobata nell'app contenitore in locale (per cui funzionerà anche offline relativamente a quelle operazioni che non richiedono connessione) come anche per via remota (e quindi fruibile solo tramite accesso internet).

framework-cordova

Una piattaforma completa per lo sviluppo di app ibride è sicuramente Cordova, un framework distribuito da Adobe che ci permette di realizzare applicativi con tecnologie web, "impacchettandoli" in una base nativa.
A differenza di altri framework (quali Bootstrap, jQuery mobile) che si integrano ad HTML attraverso un approccio mobile-first, Cordova è a tutti gli effetti un'architettura dentro la quale viene calata l'applicazione, ovvero un contenitore nativo (Web view ) che lavora come fosse un browser.
E` come avere a disposizione delle app vuote che andremo a riempire con il codice della nostra applicazione.
L'applicazione si articola su tre strati:

  1. nativo, studiato per poter interagire col sistema operativo che andrà ad ospitare l'app;
  2. applicativo, quello più prossimo all'utente e realizzato con tecnologie web;
  3. intermedio, quello che permette ai livelli precedenti di comunicare, rendendo disponibili le funzionalità hardware all'applicazione.

La suddetta stratificazione vuole ridurre la distanza tra app nativa e web app, indipendentemente dal device e dal sistema operativo, creando un livello software standard a cui si possono interfacciare le nostre applicazioni.

Un altro framework per lo sviluppo di app ibride è Ionic, il cui stack tecnologico è composto da Cordova, che fornisce l'infrastruttura, e Angular, per strutturare i componenti dell'applicazione.
ionic-framework Lo scopo principale di Ionic è sfruttare i vantaggi di entrambi i tool per creare un ambiente che favorisca e offra le migliori pratiche di sviluppo per il mobile, attraverso l'ausilio di tecnologie diffuse e consolidate che permettono di utilizzare lo stesso codice, trasformandolo in pochi passaggi, a seconda del dispositivo e del sistema target, in un pacchetto personalizzato pronto ad eseguire le nostre applicazioni.

Uno degli obbiettivi di Ionic (che possiamo inquadrare come una sorta di estensione di Cordova) è quello di avvicinare le interfacce grafiche ai vari sistemi operativi ospitanti, offrendo componenti e modelli ottimizzati che rendano il look and feel vicino a quello delle applicazioni native.

sviluppo-app-mobile-ibride

Per gli sviluppatori di estrazione web, l'approccio ibrido rispetto a quello nativo semplifica di gran lunga l'implementazione della logica applicativa.
Tuttavia, il rendimento di un'app ibrida non sarà mai equiparabile a quello di una nativa, poiché presenta degli strati necessari per il rendering e l'interpretazione del codice dell'applicazione (HTML + CSS + JavaScript) che pagano dei costi in termini di velocità di calcolo, quindi di prestazioni.

5.

Progressive web app

Buona parte delle applicazioni che usiamo quotidianamente sono web application, ovvero servizi che sfruttiamo direttamente via browser.
Grazie a tecnologie come HTML5, CSS3 e JavaScript, tali applicazioni possono essere eseguite sui browser di qualsiasi device, ma non si integrano facilmente con il sistema operativo ospitante.
progressive-web-app Le Progressive Web App si pongono proprio tale obiettivo, ovvero rendere la fruizione di applicazioni web da dispositivi mobile sempre più simile a quella di applicazioni native e ibride, inclusa la possibilità di installarle ed utilizzarle offline.

Le Progressive Web App sono una sorta di ibrido tra le normali pagine web e le app mobile che combina le feature presenti nei moderni browser con i vantaggi dell'utilizzo in mobilità.

Appena avviate si comportano come dei normali siti web e, progressivamente, assumono le caratteristiche di un'applicazione nativa, iniziando ad interagire col sistema operativo.

Il loro sviluppo non richiede un investimento oneroso quanto quello di un'app nativa, in più sono facilmente distribuibili potendo sfruttare l'indicizzazione dei motori di ricerca.

La velocità di caricamento e la minore vulnerabilità alle connessioni instabili le rende di certo una scelta affidabile; tuttavia, tendono a consumare più energia, non sempre riescono a interfacciarsi con le funzionalità hardware dei device e spesso richiedono una connessione ad un server per sfruttare al meglio le loro potenzialità.

6.

Sviluppo app multipiattaforma

Nell'ultimo decennio all'incirca, all'ibrido si sono affiancate delle tecnologie per lo sviluppo di app multipiattaforma che utilizzano metodi di progettazione ancora diversi.
Si fa ricorso ad un unico linguaggio di programmazione per la scrittura dell'app, che potrà poi essere riconvertita e adattata ai vari sistemi supportati (Android, iOS) traducendola nei loro linguaggi nativi.

sviluppo-app-multipiattaforma

Si sono affermati diversi framework per lo sviluppo cross-platform, tra cui Titanium. Il framework si interpone tra il codice sorgente dell'applicazione (scritto in JavaScript) e il sistema operativo.
L'applicazione non manipola il DOM ma effettua chiamate al sistema operativo tramite le API di Titanium, il quale avrà il compito di tradurre tali richieste (fatte sempre attraverso JS) nelle equivalenti chiamate in codice nativo.
Le applicazioni risultanti somigliano molto a quelle native, con in più il vantaggio di avere un unico sorgente valevole per più sistemi, prestazioni molto vicine a quelle native e tempi di sviluppo più veloci.

Un altro framework per lo sviluppo cross-platform è Xamarin.
Basato su C#, offre supporto completo ad Android, iOS e Windows Phone, permettendo di gestire qualunque caratteristica, dall'interfaccia utente alle risorse hardware del dispositivo.

Flutter è un progetto basato su C, C++ e Dart, un nuovo e moderno linguaggio orientato agli oggetti con una curva di apprendimento meno ripida.
flutter-framework
Supporta le interfacce native di iOS e Android permettendo uno sviluppo rapido, flessibile, performante quasi quanto il nativo e con un unico codice che non richiede di essere ricompilato.

react-native-framework

React Native è un framework creato da Facebook per sviluppare applicazioni cross-platform, consentendo agli sviluppatori di utilizzare la libreria React insieme a funzionalità native del device.
E` basato su un processo in background (thread ) che interpreta il JavaScript scritto dagli sviluppatori generando gli elementi dell'interfaccia utente direttamente sul dispositivo finale senza utilizzare HTML e CSS.


Privacy Policy