Via Antonio Amato, 20/22 84131 Salerno (SA)

Sviluppare applicazioni cross-platform: Ionic, Xamarin e Flutter

Sviluppare applicazioni cross-platform

(articolo redatto da Alessandro Salvati)

Lo sviluppo di app cross-platform è sempre più diffuso malgrado le molteplici criticità riscontrate nella compatibilità, sicurezza e performance. I framework open source che permettono lo sviluppo di queste app sono in aumento.
Tra le più famose, troviamo: Ionic, Xamarin e Flutter. In questo articolo dopo averle analizzate singolarmente e rilevato i loro punti di forza e di debolezza definiamo le loro differenze ed facciamo un ampio confronto.

Cross-platform: develop once, deploy for all devices

Le app cross-platform sono sempre più diffuse ed utilizzate, in quanto permettono di contenere i costi e di sviluppare applicazioni ibride, compatibili con i diversi sistemi operativi mobili.

Purtroppo lo sviluppo cross-platform comporta:

  • Maggior codice e di conseguenza peso superiore dell’app e prestazioni inferiori;
  • Problemi di compatibilità (es. iOS, Android, tra le diverse versioni e le risorse del sistema);
  • Problemi di sicurezza,poiché le stratificazioni generate permettono a bug già conosciuti di proliferare nelle nostre app (ndr: aggiornare è sempre buona norma).

Per questo motivo, sviluppare un app cross-platform non è sempre la scelta giusta.

Ionic 6.18.1, Xamarin 4.8 e Flutter 2.5.3

Ionic, Xamarin e Flutter sono open source e permettono di sviluppare app cross-platform con diverse metodologie e tecnologie, che comportano sostanziali differenze in termini di performance di sviluppo e di esecuzione dell’app stessa, nonché problemi di compatibilità e di sicurezza.

I punti di forza dei framework

Permette lo sviluppo di app sfruttando a pieno le tecnologie web Angular, React o Vue, che sono molto utilizzate e supportate da community molto attive, in particolar modo Angular che nella versione attuale di Ionic è alla versione 12.

Quindi è possibile utilizzare tutte le funzionalità di Angular  12,  la comodità di programmare in Typescript, la semplicità di creare interfacce in Html5 e CSS3, la miriade di componenti e plug-in integrabili, il routing, Angular Material e molto altro.

Inoltre contiene diversi componenti grafici proprietari con una grafica specializzata per l’uso mobile.

Per il deploy ci viene in supporto Cordova o Capacitor, i quali trasformano il codice “web” nel code-base delle varie piattaforme di destinazione.

Infine le app sono modificabili nei rispettivi IDE di sviluppo (ad es. Android Studio e  XCode).

Consente uno sviluppo semplice e veloce nella creazione delle funzionalità e di interfacce grafiche semplici.

Inoltre, Xamarin mette a disposizione i controller nativi Xamarin.Android/iOS o Xamarin.Forms, che permettono di differenziare in modo netto lo sviluppo per le diverse piattaforme, limitando così l’insorgere di problematiche.

Data la piena compatibilità con Visual Studio 2019, non c’è mai bisogno di utilizzare il prompt dei comandi e le macchine virtuali sono facilmente configurabili.

Consente uno sviluppo rapido, dato dalla funzionalità di hot reload, che permette di visualizzare le modifiche senza ricompilare il codice.

Inoltre, Flutter utilizza un linguaggio proprietario, il Dart: espressivo, semplice e intuitivo. Con poche righe di codice è possibile creare interfacce avanzate e accattivanti, grazie ai widget e alle librerie proprietarie.

Al deploy le applicazioni risulteranno veloci, simili a quelle in code-base della piattaforma di destinazione.

Le criticità dei framework

Uso intensivo del prompt dei comandi, debug lento e di default espone un web service (es. http://localhost:4200), per visualizzare le modifiche bisogna ricompilare da prompt.

App pesanti, e le performance sono abbastanza lontane da quelle delle app in code-base.

Lento nella creazione di interfacce complesse. I controller nativi impongono di replicare il codice per i diversi dispositivi.

App pesanti e performance mediocri.

Discreto uso del prompt dei comandi. Linguaggio “diverso” dai soliti linguaggi di programmazione ad oggetti.

Ancora non molto diffuso, e supportato da una community ristretta, pochi widget e plug-in integrabili.

Ionic 6.18.1, Xamarin 4.8 e Flutter 2.5.3: tabella di confronto

IONIC
XAMARIN
FLUTTER
Language/FrameworkSi può scegliere tra: Angular, React, VueC#/DotNetDart
Come iniziareHow to Install The Ionic Framework CLI to Build Mobile AppsBuild your first Xamarin.Forms app – Xamarin | Microsoft DocsInstall | Flutter
User InterfaceHtml5,CSS3 Typescript es2015, Web Components, Widgets proprietari, open source e commercial di Ionic e del framework scelto

 

Xaml,Controller Nativi (Xamarin.Android/iOS o Xamarin.Forms), Widgets proprietari, open source e commercialWidgets proprietari

 

Performance nello sviluppoVeloce dato dai molti componenti e plug-inVeloce dato dai molti package  e plug-inVeloce dato dal linguaggio semplice ed efficace.

Sono presenti package e plug-in ma in numero minore rispetto ai precedenti ma in compenso è presente l’hot reload

Performance del codice generatoLentoSimile app in code-baseSembra un app in code-base
Supported PlatformsDipende dalla versione di Cordova
o Capacitor. Ma supporta lo sviluppo di app hybride mobile, desktop e PWA (Progressive Web Apps)
Android API 19+ ,iOS 9+, Windows 10+, Samsung Tizen, macOS 10.13+, GTK#, WPF

 

Android API 19+, iOS 9+, Debian 10, macOS 10.11+ Windows 7 +,

Web: Chrome 84+, Firefox 72+, Safari 11 su El Capitan+ , Edge 1.2+


Se anche tu vuoi occuparti di progetti di sviluppo software di ultima generazione
dai un’occhiata alle nostre opportunità di lavoro e conosciamoci subito!

Questo sito utilizza cookies propri e si riserva di utilizzare anche cookie di terze parti per garantire la funzionalità del sito e per tenere conto delle scelte di navigazione.
Per maggiori dettagli e sapere come negare il consenso a tutti o ad alcuni cookie è possibile consultare la Cookie Policy.

USO DEI COOKIE

Se abiliti i cookie nella tabella sottostante, ci autorizzi a memorizzare i tuoi comportamenti di utilizzo sul nostro sito web. Questo ci consente di migliorare il nostro sito web e di personalizzare le pubblicità. Se non abiliti i cookie, noi utilizzeremo solo cookies di sessione per migliorare la facilità di utilizzo.

Cookie tecnicinon richiedono il consenso, perciò vengono installati automaticamente a seguito dell’accesso al Sito.

Cookie di statisticaVengono utilizzati da terze parti, anche in forma disaggregata, per la gestione di statistiche

Cookie di social networkVengono utilizzati per la condivisione di contenuti sui social network.

Cookie di profilazione pubblicitariaVengono utilizzati per erogare pubblicità basata sugli interessi manifestati attraverso la navigazione in internet.

AltriCookie di terze parti da altri servizi di terze parti che non sono cookie di statistica, social media o pubblicitari.