Sviluppo di applicazioni native e cross-platform: una comparazione

Flavio Suardi | 8 minuti di lettura

Foto di Flavio Suardi

Scritto da Flavio Suardi

App Engineer quando la reale mansione del citazionista gli lascia un po' di spazio; in ufficio si diletta ad inserire nei dialoghi frasi più o meno celebri della cultura pop de noialtri, non ci stupiremmo se prima o poi le trovassimo anche nei commenti del codice delle App.

Nel processo di progettazione di un'app arriva il momento in cui è necessario prendere una decisione cruciale: optiamo per uno sviluppo di un'applicazione nativa o per un'applicazione cross-platform? Per fare una scelta consapevole valutiamo se le funzionalità dell'applicazione hanno delle criticità che richiedono l'impiego di uno sviluppo nativo o se, al contrario, una soluzione cross-platform può ottimizzare lo sviluppo.


Per rispondere alla domanda dobbiamo capire cosa sono le applicazioni native e le applicazioni cross-platform, quali sono i loro aspetti principali e i loro punti di forza così da fare una scelta consapevole nell'ottica di creare un prodotto migliore possibile.


Cosa si intende per applicazioni native?

In generale sono applicazioni software progettate e sviluppate specificamente per una piattaforma o un sistema operativo particolare.

Un'app nativa è scritta utilizzando linguaggi di programmazione, strumenti e framework specifici della piattaforma target.


Cosa è un framework? E' un'architettura logica di supporto sulla quale un software può essere progettato e realizzato, spesso facilitandone lo sviluppo da parte del programmatore (da Wikipedia). Se non è chiaro non preoccupatevi, capiremo meglio più avanti cosa è con un esempio concreto.


Nel mondo mobile le piattaforme target sono principalmente iOS e Android. Le applicazioni native Android sono sviluppate in linguaggio Kotlin o Java mentre quelle native iOS sono sviluppate in linguaggio Swift o Objective C.


... e per applicazioni cross-platform invece?

Un'applicazione cross-platform è sviluppata utilizzando un'unico codice sorgente che può essere eseguito su più piattaforme (iOS o Android) o sistemi operativi.

I framework cross-platform, come React Native, Flutter e .NET MAUI, sono l'elemento che fa la magia: trasformano il codice sorgente in elementi nativi e consentono di accedere alle funzionalità native del dispositivo (Bluetooth, GPS, fotocamera, ecc..) mappando le API specifiche della piattaforma.


In questo ambito, con Application Programming Interface (API), si intende un insieme di definizioni e protocolli che permettono di comunicare con i componenti nativi della piattaforma.


Ora che abbiamo dato la definizione delle due tipologie di applicazioni, come possiamo capire quale è la soluzione migliore per il nostro progetto?


applicazioni native



I vantaggi dello sviluppo nativo

Performance

Uno dei vantaggi più significativi sono le prestazioni. Le app native sono create appositamente per una particolare piattaforma utilizzando linguaggi di programmazione specifici della piattaforma (Swift/Objective-C per iOS, Java/Kotlin per Android). Ciò consente di sfruttare tutta la potenza della piattaforma, ottenendo app più veloci ed efficienti.


Accesso alle funzionalità platform-specific

Un'aspetto che si lega al precedente è la possibilità di accedere a tutte le funzionalità e API specifiche della piattaforma. Ciò consente di sfruttare gli ultimi aggiornamenti e di integrarsi perfettamente con il sistema operativo sottostante. Ad esempio, in iOS è più semplice abilitare l'integrazione con Siri se utilizzano le librerie native anziché quelle cross-platform. Lo stesso discorso vale per l'integrazione dei servizi Google nella piattaforma Android.


Migliore User eXperience

La combinazione di prestazioni migliori e accesso a funzionalità specifiche del dispositivo consente di realizzare app più fluide, ottimizzate per la piattaforma e dalla migliore integrazione con l'interfaccia del sistema operativo.


Maggiore sicurezza

Le app native possono integrarsi meglio con i meccanismi di sicurezza della piattaforma, offrendo una migliore protezione e crittografia dei dati. Gli strumenti nativi consentono di ricevere aggiornamenti specifici della piattaforma risolvendo in maniera più rapida i problemi di sicurezza rispetto ai framework cross-platform.


Maturità della community

La community che sviluppa codice nativo iOS e Android è molto vasta, per entrambe le piattaforme è disponibile sia la documentazione ufficiale (prodotta da Apple e Google rispettivamente) sia supporto da parte degli sviluppatori tramite diversi canali come forum, blog, articoli tecnici e newsletter.


Se come noi sei interessato a rimanere aggiornato sugli aspetti tecnici dello sviluppo iOS e Android ti consiglio di iscriverti alle newsletter iOS Dev Weekly e Android Weekly. Ogni settimana propongono link ad articoli utili per aggiornarsi (o ripassare) gli aspetti tecnici dello sviluppo mobile.


Gli svantaggi dello sviluppo nativo

Limitazioni della piattaforma

Le app native vengono sviluppate per piattaforme specifiche, il che significa che sono necessari sforzi e risorse di sviluppo separati per ciascuna piattaforma (iOS e Android), aumentando così i tempi e i costi di sviluppo.


Ma quanto costa un'app? Leggi questo nostro articolo, cerchiamo di rispondere a questa fatidica domanda.


In sostanza, sono necessari due team di sviluppo separati con competenze specifiche per ogni piattaforma poiché la conoscenza acquisita su una piattaforma è poco utile sull'altra.


Aggiornamento e manutenzione

Avendo due codici sorgente diversi, le applicazioni native devono essere aggiornate e mantenute separatamente per ciascuna piattaforma, richiedendo tempo e impegno aggiuntivi per risoluzione di bug, per gli aggiornamenti di sicurezza e per i problemi di compatibilità con le nuove versioni dei sistemi operativi.


Tempi di sviluppo

Lo sviluppo di un'app nativa può comportare un tempo di sviluppo più lungo rispetto allo sviluppo di un'app cross-platform. Una condizione negativa che si potrebbe verificare è il ritardo nel rilascio delle stesse funzionalità tra le diverse piattaforme. Se gli utenti iOS ottengono alcune funzionalità dell’app più velocemente di quelli Android, ci potrebbe essere la possibilità di perdere la fedeltà delle persone interessate.



applicazioni native


I vantaggi dello sviluppo cross-platform

Riduzione dei costi e dei tempi di sviluppo

Lo sviluppo di un'unica applicazione cross-platform riduce i costi di sviluppo rispetto alla creazione di applicazioni native per ogni singola piattaforma. Ci sarà infatti un solo team formato nello sviluppo per entrambe le piattaforme: in questo articolo relativo al framework cross-platform React Native si ritiene che i costi di sviluppo si possano ridurre fino al 30%.

I framework cross-platform consentono tempi di sviluppo più rapidi; con (quasi ☝️) un solo codice sorgente è possibile realizzare due applicazioni consentendo il rilascio sugli store contemporaneamente, con conseguente time-to-market più rapido.


Riuso del codice

Gli sviluppatori possono riutilizzare una parte significativa del codice su più piattaforme, riducendo i tempi e gli sforzi di sviluppo.

Ovviamente, lo sviluppo tra app richiede ancora un codice specifico per la piattaforma proprio per migliorare l'interfacciamento con le librerie e le API native. Il codice specifico però è una parte minore rispetto a tutto il codice realizzato.


Manutenzione più semplice

L'aggiornamento e la manutenzione di un'unico code base semplifica il processo, poiché le modifiche possono essere applicate universalmente, risparmiando tempo e risorse. Anche in questo caso ciò non è valido per qualsiasi modifica possibile ed immaginabile, ma se escludiamo le funzionalità di interfacciamento con librerie o API native quest'affermazione può essere considerata valida.


Gli svantaggi dello sviluppo cross-platform

Limitazioni delle prestazioni

Non c’è dubbio che le applicazioni native siano più reattive e abbiano prestazioni migliori rispetto alle app cross-platform.

Questo perché il codice nativo interagisce direttamente con le risorse interne del dispositivo. Quando si tratta di attività impegnative per CPU e GPU esiste un notevole divario prestazionale tra le due tecnologie.

Questo divario esiste perché le app cross-platform aggiungono un livello di astrazione (il framework) e un processo di rendering che sono in genere più lenti di quelli creati dagli ambienti nativi.


Accesso limitato alle API native

I framework cross-platform potrebbero non fornire pieno accesso a tutte le funzionalità e alle API native, limitando potenzialmente le capacità dell'app o richiedendo la scrittura di codice specifico per colmare il divario.


Bug specifici della piattaforma

Poiché le app cross-platform devono funzionare su più piattaforme, si potrebbero riscontrare bug specifici della piattaforma o problemi di compatibilità che sono difficilmente identificabili proprio per la presenza del framework nasconde la vera natura del problema.

Essi inoltre dovranno essere risolti separatamente per ciascuna piattaforma, aumentando gli sforzi di sviluppo e manutenzione che a lungo termine posso portare a grossi problemi di stabilità dell'app.


Problematiche di User eXperience

Ogni sistema operativo ha il suo stile e design specifici. L'esperienza dell'utente sarà perfetta se si utilizzano elementi nativi per l'interfaccia utente. Se si desidera rendere uniforme l'interfaccia tra le diverse piattaforme allora è necessario customizzare gli elementi grafici per ciascuna andando a vanificare uno dei vantaggi dello sviluppo cross-platform ovvero il riuso del codice.



applicazioni native




Conclusioni

Come è possibile capire da tutti gli aspetti appena esposti, non c'è una risposta univoca alla domanda che ci siamo posti all'inizio: optiamo per uno sviluppo di un'applicazione nativa o per un'applicazione cross-platform?


Sebbene le applicazioni cross-platform rispetto alle applicazioni native siano più economiche, le seconde offrono spesso una soluzione più robusta e personalizzata, ideale per sfruttare appieno le peculiarità di ogni piattaforma.


La scelta tra lo sviluppo nativo e quello cross-platform dovrebbe essere guidata tenendo in considerazione tutti gli aspetti di ciascuna soluzione che abbiamo esposto in questo articolo in particolar modo l'accesso a funzionalità specifiche della piattaforma (bluetooth, gps, ecc..), i costi e gli obiettivi dell'esperienza utente.


ma quindi in Tiknil si sviluppano app native o app cross-platform?

Il nostro team di sviluppo possiede competenze sia in ambito nativo che cross-platform quindi in base alla tipologia di progetto proponiamo ai nostri clienti quale tecnologia secondo noi è meglio utilizzare.


Dai un'occhiata alla sezione del nostro sito Case History, riesci ad individuare quali app potrebbero essere native e quali cross-platform?

Provo a darti un paio di suggerimenti... L'applicazione ThermoICE 2.0 che controlla il termostato smart di Gewiss è stata realizzata con il framework Xamarin mentre l'app SmartHMI per gestire i condizionatori industriali Daikin l'abbiamo realizzata il linguaggio nativo.


...e se parliamo di ConnectiveApp?

Questa particolare tipologia di applicazioni che consentono di comunicare con oggetti fisici richiede che venga sfruttata tutta la performance messa a disposizione dalla piattaforma.


Non sai cosa sono le ConnetiveApp? Vai a questa sezione del nostro sito per approfondire l'argomento.


Generalmente la comunicazione richiede l'accesso a componenti specifici della piattaforma come il Bluetooth, il BLE, il WiFi, ecc... quindi per ottenere il massimo delle prestazioni è necessario andare ad utilizzare le funzionalità platform-specific di ogni sistema operativo. Per esempio il comportamento del Bluetooth viene gestito in maniera diversa tra iOS e Android quindi è più efficiente utilizzare la API native per implementare la connessione.


Con queste considerazioni possiamo dire che generalmente le ConnectiveApp vengono in effetti implementate in codice nativo.



Vuoi capire se lo sviluppo nativo è la migliore soluzione per l'app che vuoi realizzare?



IL NOSTRO KNOW-HOW

iPhone outline iPhone outline

CONNECTIVE APP:
IL FUTURO NEL TUO SMARTPHONE

Mettere a disposizione dei tuoi clienti un'app che accompagna i tuoi prodotti permette di renderne più fruibili le informazioni, migliora l'esperienza d'uso e la percezione del digitale dei prodotti stessi, permettendoti di essere presente in nuovi segmenti di mercato e superare i tuoi competitor Affidati a noi, siamo specializzati nel realizzare app per aziende come la tua!

Scopri come

METODO O INCANTESIMI?

Le app e le connessioni spesso sembra che
funzionino per magia.

In realtà dietro c'è un metodo di lavoro e un processo ingegneristico chiaro e ben definito.

IL NOSTRO METODO

Iscriviti ad APProfondiamo

Rimani aggiornato sulle novità del mondo
delle Connective App e di Tiknil, ti garantiamo:
  • Solamente 1 email al mese, non vogliamo appesantire ulteriormente la tua casella email
  • Contenuti creati da noi, nessuna 🤖 Intelligenza Artificiale potrà batterci 💪🏼
  • Valore, esperienza e un pizzico di magia

Contattaci

Compila il form sottostante per entrare in contatto con noi!
Ciao, mi chiamo
di

e vorrei fare due chiacchiere con voi riguardo a

La mia mail è

Vi lascio qualche informazione in più: