Le differenze tra App native e App html5: Cordova/PhoneGap Ormai da molti anni, le applicazioni per smartphone e tablet, sono di uso comune. Molto usate e diffuse le applicazioni per i social network, applicazioni per i giochi e applicazioni di utilità che fidelizzano l’utente al loro utilizzo. Il mondo delle applicazioni mobile è vario come accennavo prima. Le applicazioni mobile, inoltre, possono essere programmate in due differenti modi che sono: App Navite, App Ibride. Esistono anche le Web App che sono solitamente siti web definiti responsive e quindi fruibili da smartphone e tablet. App Native Le App native sono quelle applicazioni create appositamente per un certo sistema operativo mobile e scritte nel linguaggio della piattaforma su cui andranno a lavorare. Ad esempio, nel caso del sistema operativo iOS, un’app nativa sarà scritta in linguaggio Swift, ultimo nato in casa Apple, oppure in Objective-C. Queste applicazioni possono essere scaricate dall’Apple Store e quindi installabili solo su dispositivi con sistema operativo iOS quali iPhone, iPad, Apple Watch ecc. Per Android invece le applicazioni sono scritte in linguaggio Java e saranno disponibili al download su Google Play Store. Le App Ibride Le App Ibride sono quelle app scritte in un linguaggio cross-platform (in genere Javascript + HTML5 + CSS) come le web app, che però possono essere “wrappare” tramite le Web View del linguaggio nativo. Queste applicazioni possono essere scritte una sola volta e replicate per tutte le altre piattaforme. Si possono quindi scaricare dagli store di riferimento ed installare sui rispettivi dispositivi: hanno un discreto accesso al sistema operativo anche se non sono state scritte interamente nel linguaggio specifico della piattaforma. Per quel che riguarda le applicazioni native, come accennavo prima, vengono programmate nel loro linguaggio nativo di riferimento al sistema operativo. Facciamo una piccola panoramica: iOS, sistema operativo di casa Apple mette a disposizione due linguaggi di programmazione che sono Object-c e Swift. Durante la WorldWide Developer Conference (WWDC) del 2014 è stato rilasciato il nuovo linguaggio di programmazione per le applicazioni iOS, Swift, che andrà a sostituire Objective-C, il linguaggio di sviluppo che per oltre 20 anni è stato utilizzato dagli sviluppatori per la creazione di applicazioni desktop su OS X e mobile su iOS. L’IDE (Integrated Development Environment o ambiente di sviluppo integrato) di riferimento per lo sviluppo di applicazioni iOS e per gli applicativi desktop OS X è Xcode. Android, sistema operativo di casa Google, utilizza come linguaggio di programmazione Java. L’IDE di riferimento per lo sviluppo di applicazioni native android è Android Studio. WindowsPhone, sistema operativo di casa Microsoft, utilizza come linguaggio di programmazione C#. L’IDE di riferimento per lo sviluppo di applicazioni native WindowsPhone è Visual Studio. Per le applicazioni ibride invece, il linguaggio di programmazione è Javascript che viene utilizzato insieme ad un linguaggio di Markup detto HTML / HTML5 ed un linguaggio di stile CSS2 / CSS3. Questo alla base di un’applicazione Ibrida. Per programmare un’applicazione Ibrida si fa spesso riferimento ai Framework. I più noti sono sicuramente PhoneGap, Cordova Apache, Telerik e ionic. L’architettura di questi framework si presenta come contenitore di un’applicazione Web eseguita localmente. L’interfaccia grafica é costituita da una Web view all’interno della quale viene visualizzato l’HTML ed il CSS ed eseguito il codice JavaScript. Tramite il codice JavaScript é possibile accedere alle API che interfacciano l’applicazione Web (HTML e CSS) con le funzionalità della piattaforma, giroscopio, accelerometro, geolocalizzazione, web storage ecc. Facendo un’analisi e partendo dalle app native, possiamo sicuramente dire che: si interfacciano al sistema operativo mobile nel modo più completo. Essendo sviluppate per una specifica piattaforma possono interfacciarsi nel modo migliore alle API della stessa, andando così a lavorare in modo più profondo con l’hardware e il software. Questo si traduce nel fatto che questo tipo di applicazione può sfruttare le funzioni più importanti del device integrandole e potenziandole. una personalizzazione più profonda dell’applicazione, offre una user experience nettamente migliore rispetto ad un’app ibrida. I punti a sfavore di questa tipologia di applicazione sono: effort lavorativo molto maggiore per scrivere la stessa applicazione in vari linguaggi nativi. tempi di realizzazione lunghi per la stessa app ma per più piattaforme costi di realizzazione maggiori per la stessa app pubblicata su più store. Le app ibride hanno come loro punto di forza un effort lavorativo ridotto rispetto alle app native. Basti pensare che un’app sviluppata per iOS e Android se nativa deve essere programmata in due linguaggi di programmazione diversi, invece se ibrida viene programmata una sola volta e poi distribuita sui due diversi store. A loro sfavore sicuramente hanno una user experience non molto performance per i diversi device e sistemi operativi. Anche se a dire il vero negli ultimi tempi alcuni framework permettono una personalizzazione dell’app che si avvicina meglio alla User Experience di alcuni sistemi operativi (Vedi Telerik che strizza l’occhio ai device iOS). Un’app ibrida non sarà mai fluida e ottimizzata come una nativa. Potrebbe presentare problemi di gestione di memoria, e quindi gestione delle risorse in generale. Essa però potrebbe essere la soluzione migliore se si cerca qualcosa che possa essere immesso sul mercato immediatamente ad un prezzo più contenuto. Detto questo la scelta finale è sempre nelle mani di chi commissione un’applicazione mobile. Sulla bilancia vanno i pro e contro indicati prima. Si vuole un prodotto estremamente performance e scritto per ogni piattaforma? Il prezzo sarà sicuramente maggiore ed i tempi più lunghi. Se invece l’esigenza è quella di avere un’applicazione subito disponibile per tutti i dispositivi ad un prezzo minore la scelta ricade sicuramente su un’app di tipo ibrido. Le web app Un’altra tipologia di app di cui abbiamo accennato prima è la web app. Questa tipologia di app, non è un’app instancabile sul device ma solo consultabile dallo stesso. Non hanno nessun tipo di accesso alle API del sistema operativo e non possono accedere all’hardware o al software del dispositivo. Vengono installate su un server web, quindi sono accessibili solamente online in modalità “responsive”. Il loro grande vantaggio è quello di non incidere particolarmente o per nulla sulla memoria RAM e sulla capacità di calcolo del dispositivo in uso: in sostanza, se ho uno smartphone con un processore mediocre e un altro con un processore potente, la web app funzionano con le medesime prestazioni su entrambi. La differenza qui la fa una connessione internet più o meno veloce.