Negli ultimi anni abbiamo assistito ad un incremento esponenziale nel numero e nella popolarità di app che erano rese disponibili per i nostri smartphone. Alcune di queste hanno raggiunto una diffusione piuttosto alta come ad esempio Instagram, Feedly o Pocket oltre alle app dei social network più conosciuti (vedi Facebook, Twitter etc).

Grazie a questa diffusione sempre in crescita, sono stati creati diversi strumenti di sviluppo. Ovviamente la strada principale è sempre quella della programmazione nel linguaggio nativo della piattaforma per cui si vuole lavorare. Ad esempio la Apple, facendo tesoro del tempo speso sui propri sistemi storici come i Mac, ha deciso di sfruttare lo stesso linguaggio anche per i propri dispositivi portabili: Objective-C. Android invece ha scelto il linguaggio Java, da molto tempo utilizzato quasi ovunque.

Cos’è il linguaggio nativo? Il linguaggio nativo è il linguaggio ufficiale che hanno scelto le varie Apple, Google, etc per programmare le proprie app

Utilizzare il linguaggio nativo e gli strumenti ufficiali fornisce il controllo completo su ciò che si vuole fare e permette a chiunque di sfruttare al massimo le potenzialità del dispositivo su cui si sta lavorando, senza mettere in secondo piano la reattività e l’esperienza di utilizzo dell’app.

Purtroppo tutto questo grande controllo ha degli aspetti secondari da affrontare: spesso non si hanno le competenze necessarie con i vari linguaggi oppure si vorrebbe poter creare un’applicazione che funzioni sul maggior numero di piattaforme (possibilmente scrivendo il proprio codice una volta sola). Per facilitare questa situazione sono nati diversi progetti con lo scopo di creare delle applicazioni ibride. L’obiettivo comune quasi sempre è quello di coprire il maggior numero di sistemi mobile e non solo, facendo leva sui temi del multipiattaforma e dell’uso di linguaggi già molto diffusi e di facile utilizzo. Alcuni esempi sono PhoneGap, Appcelerator Titanium e MoSync i quali sfruttano, ognuno a proprio modo, i linguaggi del web (HTML, JavaScript e CSS). In linea generale l’idea è di creare delle app-contenitore al cui interno si trovano la logica e i dati dell’applicazione stessa, fornendo un accesso in parte limitato alle capacità del dispositivo.

In questo caso il compromesso principale lo si trova nelle prestazioni: con i dispositivi più recenti è difficile notarlo, ma spesso si hanno delle differenze con le applicazioni native.

Nel caso in cui non si abbia esperienza con la programmazione (oppure la si voglia proprio evitare), ci sono diversi servizi web che permettono di “disegnare” la propria app in modo totalmente visuale: MIT App Inventor, Appery.io, ViziApps e Codiqa sono alcuni esempi. Nella maggior parte dei casi questi servizi generano in automatico il risultato del proprio lavoro come app ibride.

In linea generale più ci si allontana dalla programmazione nativa e meno libertà si ha nello sviluppo. Chiaramente la facilità aumenta a discapito della complessità e quindi della qualità.

Probabilmente il metodo ideale per chiunque non esiste. E’ bene analizzare i mezzi che si hanno a disposizione e l’obiettivo che si vuole raggiungere. Sono disponibili molte risorse, tutto dipende dal riuscire a trovare quelle che meglio si adattano alle proprie necessità.

Quindi, è vero che con gli strumenti che oggi abbiamo a disposizione tutti possono creare un’app, ma il risultato può cambiare in modo rilevante.