Seleziona una pagina

 

Al giorno d’oggi il settore IT, specialmente nel compartimento mobile, è in continua espansione e nonostante tutte le difficoltà nello sviluppare un applicazione di successo resta comunque un settore sul quale molte persone, dai più esperti ai novizi, dai più facoltosi ai piccoli risparmiatori, dalle grandi aziende alla piccola bottega sotto casa, sono interessate ad investire.

Muovendosi all’interno di questo business inizialmente ci si può trovare spaesati per via della miriade di tecnologie utilizzate e messe oggi a disposizione da diversi produttori e aziende che vogliono accaparrarsi una fetta in questo florido mercato.

Uno dei primi problemi che si devono affrontare quando si vuole intraprendere lo sviluppo di un applicazione per dispositivi mobili è quello della scelta del tipo di tecnologia che si vuole utilizzare per lo sviluppo.

Al momento esistono principalmente tre tecnologie per sviluppare un applicazione e consistono in sviluppo nativo, sviluppo ibrido e web app.

 

In questo articolo si andrà ad esaminare le tipologie di sviluppo delle applicazioni mobili, ovvero di applicazioni che girano su dispositivi mobili come smartphone e tablet. Verranno prese in considerazione le piattaforme Android e IOS, che sono sicuramente al momento le più utilizzate.

 

 

Quali sono le principali differenze tra queste tre diverse tecnologie?

Iniziamo dicendo che ogni tipologia è differente ed ognuna si adatta maggiormente ad una determinata situazione. A parere mio non esiste la tecnologia perfetta, esiste solo la tecnologia che meglio si adatta ai nostri bisogni.

Vediamo di esaminare nel dettaglio le tre tecnologie e cerchiamo di capire a quali situazioni si adattano meglio partendo dalle Web App che sono sicuramente le meno versatili, ma le più semplici, per arrivare poi alle applicazioni native.

 

 

Web App

Una Web App non è altro che un applicazione che viene visualizzata sul nostro dispositivo mobile tramite l’ausilio di un browser, che può essere Chrome, Safari, Opera o qualsiasi browser sia installato sul nostro dispositivo.

Per farla breve, una Web App non è altro che un sito web studiato per essere visualizzato al meglio anche sul piccolo schermo del nostro smartphone.

La Web App è scritta utilizzando linguaggi di “mark-up” come l’HTML, alcuni linguaggi di scripting come il JavaScript e attraverso l’ausilio dei CSS, proprio come un qualsiasi altro sito web. Ovviamente addentrandosi nella struttura vera e propria di una Web App è tutto molto più complicato ma questo non è un discorso inerente a questo articolo.

E’ possibile dire sin da subito che lo sviluppo di una Web App è più immediato rispetto allo sviluppo di un’applicazione ibrida o nativa, specialmente se si pensa ai casi in cui si ha la necessità di sviluppare un applicazione mobile che sia la copia esatta del nostro sito web.

Le limitazioni di una Web App invece a parere mio sono molteplici in quanto l’applicazione gira all’interno di un browser e questo ne limita fortemente le prestazioni, non garantisce un accesso diretto a tutte le funzionalità del dispositivo e ci sono dei problemi relativi ad alcune funzioni o interfacce grafiche che variano il loro comportamento in base al browser su cui vengono eseguite, il cosiddetto “cross-browser” .

In sostanza, lo sviluppo di una Web App sarà molto probabilmente la strada più economica che puoi percorrere ma se il tuo obiettivo va oltre la riproduzione di un semplice sito web ti conviene passare ad una tecnologia più complessa.

 

 

Applicazioni ibride

Le cosiddette applicazioni ibride non sono altro che applicazioni che sono in grado di girare sia su sistemi Android che su sistemi IOS utilizzando lo stesso codice (o quasi) e quindi in sostanza la stessa applicazione.

Sono generalmente sviluppate, come le Web App, utilizzando l’unione di JavaScript, HTML e CSS. Questa regola non è sempre valida in quanto ci sono tools che utilizzano altri linguaggi di programmazione.

A differenza delle Web App hanno bisogno di essere scaricare ed installate sul dispositivo per poter funzionare, funzionano quindi come una normale applicazione per dispositivi mobili.

La tecnologia ibrida mette a disposizione del programmatore molte più risorse rispetto alle Web App e i suoi costi sono inferiori rispetto allo sviluppo in nativo, a livello tecnico il loro funzionamento è leggermente diverso da quello delle Web App.

Sono praticamente delle Web App che però girano all’interno di un contenitore (che non è altro che un browser) che ha però un sostegno nativo, questo vuol dire che potenzialmente un applicazione ibrida è si una Web App, però potrebbe teoricamente accedere a tutte le funzionalità di un applicazione nativa.

Dico teoricamente perchè questo purtroppo non è sempre vero, in quanto si vengono spesso a creare delle problematiche dovute alla stratificazione del software. Bisognerebbe pensare ad una app ibrida come qualcosa costruito su strati, dove si ha l’applicazione ibrida vera e propria (primo strato) con sotto un “traduttore” (secondo strato) che si occupa di metterlo in comunicazione con il sistema utilizzando degli strumenti in linguaggio nativo (terzo strato)

Come detto in precedenza un applicazione ibrida è meno onerosa in termini economici rispetto ad una applicazione nativa, ma forse lo è solo in un primo momento. Infatti in molti casi diventa difficile ottenere esattamente lo stesso risultato su entrambe le piattaforme e il fatto che si faccia un uso intensivo di software di terze parti (plugin, tools ecc.) causa in una seconda fase una spesa superiore per poter garantire un funzionamento dell’applicazione duraturo nel tempo.

A parere mio il miglior utilizzo di un applicazione ibrida è quello in cui si ha bisogno di un MVP (Minimum Valuable Product) in tempi molto ristretti o nel caso in cui il budget è molto limitato e si vuole sviluppare un primo prototipo per fare poi delle ricerche di mercato, ma nella maggior parte dei casi, nei progetti di una certa entità ci sarà poi la necessità di riscrivere l’applicazione in nativo per essere più performante e per avere un miglior controllo delle sue funzionalità.

 

 

Applicazioni native

Le app native a differenza delle precedenti sono scritte in un linguaggio apposito per la piattaforma, che può essere Kotlin per Android e Swift per IOS, in passato si usavano altri linguaggi come Java e Objective-C ma stanno lentamente cadendo in disuso per via dell’invenzione di nuovi linguaggi più performanti e sicuri come quelli citati sopra.

Quando si decide di sviluppare un applicazione in nativo è bene ricordare che c’è la necessità di sviluppare due diverse applicazioni, una per i dispositivi Android e una per i dispositivi IOS.

Questo tipo di tecnologia prevede quindi tempi di sviluppo maggiori e dunque anche costi più elevati, ma a seconda della situazione è sempre la soluzione migliore, specialmente per progetti a lungo termine.

Le applicazioni native garantiscono una maggiore velocità di esecuzione in quanto sono tagliate su misura per i dispositivi sulla quale verranno eseguite e garantiscono un grado di personalizzazione molto elevato, sono inoltre più facili da mantenere in un secondo momento in quanto non fanno troppa leva su software di terze parti e quindi facilmente aggiornabili e consentono di garantire un funzionamento nel tempo, perchè diciamolo chiaramente la Google o la Apple non abbandoneranno mai le loro piattaforme finchè c’è mercato.

Applicazioni sviluppate in nativo sono inoltre in grado di funzionare anche senza una connessione ad internet.

 

 

La diatriba tra applicazioni native e applicazioni ibride va avanti ormai da anni, prima di imbattersi nello sviluppo di un applicazione mobile il mio consiglio è quello di capire bene che tipo di prodotto si vuole ottenere e quali potrebbero essere eventuali sviluppi futuri.

Se sei incerto riguardo al tuo prodotto e hai bisogno solamente di un prototipo da mostrare a qualcuno lo sviluppo di un applicazione ibrida o web app potrebbe essere la strada da seguire, sopratutto se nella fase iniziale il tuo budget è molto limitato.

Invece, se hai un idea in cui credi, vuoi che nel tempo sia in continuo miglioramento, e vuoi fare qualcosa di veramente importante ti consiglio di utilizzare una tecnologia nativa.

Per esperienza personale posso dire che applicazioni molto complesse diventano spesso difficili da sviluppare con una tecnologia ibrida per via dei vari problemi di compatibilità e questo causa l’introduzione di ulteriori problemi (bug) e un usura del progetto, fattori molto determinanti per la realizzazione di un applicazione di successo.

Per un consulto su come affrontare questa problematica o esporre il tuo progetto invia una mail a info@mirkopinna.app