
(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/Framework | Si può scegliere tra: Angular, React, Vue | C#/DotNet | Dart |
Come iniziare | How to Install The Ionic Framework CLI to Build Mobile Apps | Build your first Xamarin.Forms app – Xamarin | Microsoft Docs | Install | Flutter |
User Interface | Html5,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 commercial | Widgets proprietari
|
Performance nello sviluppo | Veloce dato dai molti componenti e plug-in | Veloce dato dai molti package e plug-in | Veloce 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 generato | Lento | Simile app in code-base | Sembra un app in code-base |
Supported Platforms | Dipende 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+ |
Riferimenti sitografici
Se anche tu vuoi occuparti di progetti di sviluppo software di ultima generazione
dai un’occhiata alle nostre opportunità di lavoro e conosciamoci subito!