Come creare un app mobile: HTML5 o linguaggio nativo?

giugno 06, 2014
Share on Facebook0Tweet about this on Twitter0Pin on Pinterest1Share on Google+4
Uno dei dilemmi più frequenti su cui si imbatte chiunque decida di affacciarsi sul mondo dello sviluppo mobile è sicuramente quello su come creare un app: “quale sistema di sviluppo dovrei adottare? E’ meglio cominciare con il codice nativo oppure affidarsi all’HTML?“.

In effetti è una domanda che i miei lettori mi pongono molto frequentemente.

Come avrai notato personalmente prediligo la via dell’HTML5, CSS3 e Javascript per realizzare i miei progetti destinati a dispositivi mobile. Ma quella che per me è la strada principale, non è detto che lo debba essere per gli altri sviluppatori.

Ognuno, durante il proprio percorso formativo/professionale, capita davanti a situazioni ed ostacoli differenti, una miriade di combinazioni che lo portano a prendere determinate decisioni invece che altre.

E’ così anche per quanto riguarda la decisione sul linguaggio da utilizzare per realizzare una mobileapp.

La risposta non è delle più semplici, ma dipende da numerosi fattori. In questo articolo vedremo quali secondo me dovresti considerare per prendere la tua decisione.

mobile-app-linguaggio-web-o-nativo-

Il settore di provenienza

La cosa incide maggiormente sulla decisione da prendere per quanto riguarda la metodologia di sviluppo di una mobile app è dal mio punto di vista il settore professionale al quale apparteniamo.

Se non sei un ragazzo che è appena uscito da scuola o dall’università e vuole iniziare a crearsi una carriera nel mondo delle mobile app, allora dovresti decidere sulla base della tua principale professione attuale e le tue esperienze lavorative.

Chi come me opera nel campo del web design e delle web application, ed ha cominciato le sue esperienze professionali in questo settore, allora sarà molto più facile che scelga la strada dell‘HTML5, il CSS3 ed il Javascript, linguaggi con cui ha già molta familiarità e tra cui sa muoversi molto bene.

Come ti ho mostrato in altri articoli, nello sviluppo di HTML Mobile App bisogna fare attenzione ad elementi come performance e fluidità, per non rischiare di rilasciare un prodotto di scarso valore e con una user-experience che non si avvicina nemmeno minimamente a quella delle applicazioni native.

Tuttavia è molto più facile affidarsi a linguaggi che già conosciamo piuttosto che studiarne di nuovi.

Per approfondire il discorso delle perfomance e fluidità, ti consiglio di leggere questi articoli:

Mentre per una serie di tutorial pratici su come creare un app in HTML5, puoi consultare la sezione tutorials di questo blog.

Per un individuo che invece “parte da zero”, e vuole specializzarsi specificatamente nello sviluppo di mobile app, allora quella del linguaggio nativo potrebbe essere la strada che fa più al caso suo.

E’ molto difficile pensare infatti che gli possa arrivare a padroneggiare molto bene sia linguaggi web che linguaggi nativi (i quali possono essere più di uno, se si decide di sviluppare per più di una piattaforma: Objective-C, Java ecc.) in modo parallelo.

Non sto dicendo che è impossibile, ma sicuramente è molto meno probabile.

Il target dell’applicazione

sistemi-operativi-mobile

La scelta del linguaggio è molte volte determinata anche dal target dei dispositivi per i quali decidiamo di rendere disponibile la nuova applicazione.

Se hai bisogno di pubblicare una determinata applicazione solamente per iOS o per Android, per esempio, allora potresti decidere si svilupparla interamente con linguaggio nativo.

Ovviamente ciò va considerato anche in base al futuro: c’è la possibilità che questa app possa più avanti essere resa disponibile anche per altri tipi di sistemi operativi?

Nel caso in cui abbiamo tale necessità o vogliamo che fin dall’inizio l’applicazione sia fruibile da più di un sistema operativo, allora la decisione più opportuna sarebbe quella di optare per l’HTML5.

La tipologia dell’applicazione

Un altro fattore influenzante da sottolineare è quello delle funzionalità e del tipo di interfaccia che l’applicazione deve avere.

Se hai la necessità di creare un videogioco molto complesso o un’interfaccia con una dinamica particolare, allora dovresti usare il linguaggio nativo, che ti consentirà di produrre un prodotto più leggero e molto meno dispendioso in termini di processore, oltre che più performante.

Se invece la tua necessità è quella di realizzare un’interfaccia “standard” con delle normali liste, delle schermate ad entrata che non prevedono effetti troppo complessi (con i CSS3 è possibile realizzare degli effetti “elaborati” che risultano comunque molto performanti, come pop, slide, flip, skew ecc.), headers, tab-bar ecc., allora potremmo portare avanti il progetto tramite linguaggi web-based.

Se vuoi sapere come realizzare gli effetti delle interfacce native con HTML5 e CSS3 allora resta aggiornato sul mio e-book “HTML Mobile Accelerato, in cui ti mostrerò come realizzare un sistema di animazioni performante che non ha nulla da invidiare ad un’applicazione nativa:

 

HTML-mobile-accelerato-ebook-cover

 

Come creare un app: I benefici dell’HTML5

markup-html

Vediamo i principali benefici dei linguaggi nella realizzazione di mobile app con linguaggi web-based.

  • Centralizzare il processo di sviluppo. Se nel caso dei linguaggi nativi siamo costretti a sviluppare la stessa applicazione da zero per ogni sistema operativo per il quale decidiamo di renderla disponibile, nel caso di mobile app in HTML5, CSS3  e Javascript possiamo utilizzare lo stesso progetto per tutte le piattaforme (apportando qualche piccolo aggiustamento, se vengono utilizzati dei plugin personalizzati per l’accesso a funzionalità del dispositivo, come vibrazione, bussola ecc.)
  • Velocità e facilità di sviluppo. Come accennato in precedenza, per chi padroneggia molto bene il linguaggi web, è più facile e veloce realizzare l’interfaccia di una mobile app. In rete si possono inoltre trovare sempre più framework che adottano la filosofia del “mobile first“, e velocizzano ulteriormente le varie fasi di sviluppo
  • La libertà negli aggiornamenti. Quando decidiamo di pubblicare un’applicazione su App Store, PlayStore e gli store delle altre piattaforme, siamo costretti ad attendere lunghi tempi di approvazione (2 settimane nel caso di App Store) prima che essa venga approvata. Lo stesso vale per ogni aggiornamento che invieremo. Con le HTML5 Mobile app, è possibile bypassare questo processo impostando un sistema che all’avvio dell’applicazione controlla il server per verificare la disponibilità di nuovi aggiornamenti, ed eventualmente effettuarne il download.

Come creare un app: i benefici del codice nativo

mobile-app-linguaggio-nativo

Vediamo quali sono invece i benefici dello sviluppo con codice nativo:

  • Maggior facilità di accesso alle funzionalità native. Se da un lato nel caso di mobile app web-based abbiamo dei tools (come Phonegap o Appcelerator) che ci offrono la possibilità di accedere e controllare alcune funzionalità native del dispositivo grazie a degli appositi plugin, è anche vero che il loro utilizzo è molte volte limitato, senza contare il fatto che per alcune delle funzionalità non esistono plugin. Con il linguaggio nativo, abbiamo piena libertà e maggior facilità di accesso a tutte le funzionalità del dispositivo.
  • Possibilità di realizzare interfacce più complesse. Come già accennato in precedenza, sviluppando con linguaggio nativo è più facile creare una user-experience molto più avanzata ed interattiva, grazie anche alla possibilità di utilizzare i controlli e gli effetti messi a disposizione dello sviluppatore.
  • La qualità dei controlli. Abbiamo detto che nel caso di HTML5 mobile app possiamo sfruttare molti framework CSS mobile-first. In alternativa possiamo anche scrivere personalmente le istruzioni CSS per ricreare gli stessi tipi di controlli nativi (come pulsanti, header, tab-bar, icone ecc.). Tuttavia la qualità di tali controlli non è ancora allo stesso livello dei UI-Kit da cui possiamo attingere con grazie ai linguaggi nativi.

Conclusioni

Il linguaggio da adottare per creare un app dipende da numerosi fattori, ma credo che il principale sia la predisposizione e la familiarità che ogni sviluppatore ha con i vari tipi di linguaggi.

Personalmente sono molto più orientato verso i linguaggi web e l’HTML5, anche perchè mi sono specializzato fin dal principio nella realizzazione di siti web e soprattutto, di applicazioni web.

E tu? Di quale settore fai parte ? Anche tu sei un web designer e sei più predisposto ai linguaggi web, oppure sei più indirizzato verso linguaggi nativi?

O ancora, sei un web designer a cui piace spaziare a 360° e conosci sia i linguaggi nativi che quelli web?

Fammelo sapere nei commenti o inviami una mail, sono curioso di sapere quale metodologia stai adottando o ti piacerebbe adottare, e magari quali sono i tuoi obiettivi in merito.

 

Crea la tua mobile app in HTML, CSS3 e Javascript

Utilizzando il linguaggi web-based, ho realizzato più di 10 mobile app in HTML, CSS3 e Javascript (tra cui Tint e Dieta SI o NO?).

Se anche tu vuoi realizzare la tua applicazione in HTML, CSS e javascript da distribuire nei vari store, forse potrebbe interessarti il mio e-book HTML Mobile Accelerato.

HTML-mobile-accelerato-ebook-cover

Giacomo Freddi

Web Designer Freelance e Developer, si occupa del design e dello sviluppo di applicazioni web dal 2008, come molti freelance è abituato a gestire più ruoli e spaziare su più campi, ma la sua passione principale è quella della creazione di interfacce front-end e back-end utilizzando codice html5 e css3. Adora usare pattern MVC per i suoi Javascript.

  • Pingback: Come creare un app: dovrei usare HTML5 o lingua...()

  • sixdas

    Io ho intrapreso la strada del app ibrida, conoscendo un po i linguaggi web, anche se devo ammettere una cosa e creare un sito web, un altra una applicazione per smartphone. Io sto incontrando molte difficoltà, che sto riuscendo a superare grazie ai tutorial presenti sul blog e l’aiuto di Giacomo che ringrazio.

    Ps: cosa ne pensate del nuovo linguaggio presentato da apple swift ?

    • Giacomo Freddi

      Ciao Sixdas, grazie per il commento!

      Se conosci i linguaggi web secondo me hai fatto molto bene ad intraprendere questo tipo di strada. Come puoi vedere dalle mie applicazioni le performance sono molto buone e realizzare un’applicazione che abbia una buona user-experience è possibile.
      Ovviamente se sei un web designer o comunque lavori in questo campo ti sarà più difficile trovare il tempo di imparare i linguaggi nativi da zero, mentre sarà molto più facile realizzare app con quelli che già conosci.

      Non ho avuto ancora modo di approfondire swift, ma sembra un linguaggio molto intuitivo, anche se offre le potenzialità della logica object-oriented.