iOS

In prova Cordova e Phonegap: applicazioni per ogni ambiente

Redazione | 11 Gennaio 2016

Android iOS iPhone Software

Sviluppare per diverse piattaforme cellulari con gli strumenti del web. Mettiamo sotto test due promettenti ambienti. di Michele Costabile Di […]

Sviluppare per diverse piattaforme cellulari con gli strumenti del web. Mettiamo sotto test due promettenti ambienti.

di Michele Costabile
Di recente Molly Holzschlag, una dei guru di Html e Css, ha chiesto su Twitter di definire Html5 in una parola o in un tweet. La risposta che ci è venuta in mente d’acchito è: un linguaggio per la descrizione di interfacce utente, o quasi.

Html era nato molti anni fa come linguaggio per la descrizione di documenti, una derivazione del più austero Sgml. Dopo pochi anni, la disponibilità  di un sistema potente per la creazione di decorazioni e stili di visualizzazione, Css, e la disponibilità  di un linguaggio di programmazione bizzarro, ma efficace, JavaScript, hanno reso sempre più popolari le applicazioni web.
La prima risposta del Web Consortium, Xhtml, è stata un po’ una negazione di questa idea, un tentativo di pilotare Html verso un mondo più puro e astratto. Facendone un linguaggio strettamente specificato per la descrizione di documenti, ma negli stessi anni si è imposto Html5, una specifica che rappresenta la ratificazione del fatto che Html può essere usato come linguaggio per la descrizione di applicazioni web con interazioni complesse.

Nel panorama di oggi, Html5 è a pieno titolo una piattaforma applicativa, che sta sbarcando sui cellulari portandosi dietro la sua semplicità  di sviluppo e milioni di sviluppatori. Questo mese parliamo di due piattaforme, strettamente imparentate che chiudono il gap fra lo sviluppo nel browser e lo sviluppo nativo: Cordova e Phonegap, lasciando fuori dal quadro, per il momento, Ionic, che è una piattaforma interessante e di cui ci occuperemo, che richiede più spazio.

Questi ambienti ci permettono di realizzare applicazioni nuove usando tool e linguaggi familiari, sia pure con estensioni nuove. Un editor di testi, Html5 e Css e un po’ di studio della piattaforma ci danno la possibilità  di entrare nello sviluppo mobile armati delle conoscenze nello sviluppo web.

Web App

Ragioniamo, innanzi tutto, in termini architetturali mettendo a fuoco la differenza fra una applicazione nativa e una web app.
Le applicazioni native per ogni piattaforma sono quelle realizzate con gli strumenti e il workflow dettato dalla piattaforma, per esempio applicazioni Objective-C o Swift su iOS e applicazioni Java su Android. Per web app, invece, si intende una applicazione generata con Html (Html5), Css (Css3) e JavaScript, gli strumenti tipici del web, pacchettizzata in modo da essere sperimentata come un’applicazione nativa, cioè venduta o distribuita sugli app store e con pieno accesso alle funzioni avanzate dell’hardware del dispositivo.

Una web app, concettualmente, è formata da tre strati. Il primo è un layer di supporto, simile a quello di un’applicazione creata con i tool tipici della piattaforma. Il secondo è uno strato di interfaccia, scritto in codice nativo, che esporta le funzioni hardware del telefono, come fotocamera, accelerometro, bussola e le strutture dati, come i contatti e il calendario. L’ultimo è lo strato superiore, scritto in Html e Css, come un’applicazione da eseguire nel browser, ma facendo uso delle funzioni native del telefono in modo diverso da come si fa sul telefono.

Uno studio di Forrester Research ricorda che le applicazioni client server sono state inizialmente realizzate con client nativi, ma sono passate al browser nel corso del tempo e pronostica un percorso simile per le applicazioni mobili, ma le applicazioni web vengono da un periodo di rigetto. La critica più famosa l’ha fatta Zuckerberg in persona, affermando in un’intervista che scegliere un approccio web per l’applicazione è stato uno degli errori principali di Facebook.

Node.js è un ambiente estremamente fecondo, che ha dato origine ai progetti più disparati provando ogni volta le sue performance. Il sistema di distribuzione di pacchetti npm è molto semplice e efficace.

Node.js è un ambiente estremamente fecondo, che ha dato origine ai progetti più disparati provando ogni volta le sue performance. Il sistema di distribuzione di pacchetti npm è molto semplice e efficace.

Qualcosa è cambiato e, qualche anno, dopo, Facebook è alacremente al lavoro su una piattaforma JavaScript, chiamata React.js (insieme a altri progetti su facebook.github.com).
Una forza alla base del ritorno delle applicazioni web è un progetto Apache, quindi open source, chiamato Cordova, creato con Node.js (nodejs.org), un ambiente di esecuzione che contiene il motore JavaScript di Google Chrome. Per la sua natura di applicazione nativa che contiene un interprete, Node può offrire un ambiente di esecuzione simile al browser, ma in grado di esportare al codice JavaScript funzionalità  di base che il browser, per sicurezza, nasconde. Node è stato corredato di un sistema per la gestione di pacchetti aggiuntivi, chiamato npm (Node Package Manager), che ha contribuito non poco alla sua diffusione, risolvendo la complessità  di gestione di un ambiente molto modulare e frastagliato in modo simile a quello in cui è stata risolta la pacchettizzazione del software su Linux.

L’architettura, la modularità , la facilità  di pacchettizzazione di Node hanno stuzzicato la creatività , dando origine a numerosi progetti lato server e lato client. Il più interessante, riguardo al nostro tema, è Apache Cordova.

➜ Continua a leggere: Cordova

< Indietro Successivo >