Seleziona una pagina
Dopo una veloce introduzione, passiamo al confronto tra i due maggiori framework per lo sviluppo mobile cross-platform, ossia Flutter vs Xamarin.

Caratteristiche principali

Xamarin dispone di una vasta community, supporta anche la realizzazione di applicazioni per Windows e MacOS (in realtà questa è una funzionalità in arrivo anche su Flutter.. 😉 ) oltre che permette lo sviluppo di app native Android ed iOS con un unico codebase in C# ed è compatibile con i sistemi operativi a 32 bit (differentemente da Flutter).

Flutter di contro è un Framework molto recente ed utilizzato da una minoranza di sviluppatori rispetto a Xamarin, che secondo le statistiche 2018 di Stack Overflow è adoperato dal 7.2% di sviluppatori.

Detto questo, cosa offre Flutter rispetto a Xamarin nello sviluppo mobile?

  • API e un SDK per il rendering 2d (SKIA),
  • Apprendimento molto rapido;
  • Compatibilità con librerie di terze parti e riusabilità di codice nativo in diversi linguaggi.
  • Performance (molto vicine a quelle di un’app nativa);

Accesso al SO nativo

In Flutter il codice Dart viene compilato in quello nativo usando la compilazione AoT (Ahead of Time), ma ha comunque bisogno della Dart VM (Virtual Machine).
Il motivo della compilazione AoT è che iOS non supporta JIT (Just In Time) o la compilazione dinamica. Inoltre può accedere a tutte le piattaforme e servizi di API, incluso lo storage ed i sensori attraverso i packages.
E’ anche possibile utilizzare librerie Flutter per realizzare metodi che richiamano funzioni native per ogni piattaforma.

In Xamarin, il codice C# viene compilato in un codice macchina e quindi convertito in .app. Viene utilizzata la compilazione JIT per le app Android e la compilazione AoT per le app iOS per compilare il codice macchina ‘intermedio’ nel codice nativo per ogni piattaforma.

Xamarin usa le API .NET e librerie specifiche per le differenti piattaforme.

Ui Design

Come abbiamo già detto, Xamarin utilizza componenti UI native, benchè questo potrebbe sembrare un grande vantaggio, potrebbe, in realtà non esserlo del tutto.. Infatti, le piattaforme vengono aggiornate regolarmente e, quindi, potrebbe essere necessario attendere del tempo prima che il Framework si adegui alle nuove versioni.

Flutter usa widget incorporati e non utilizza i componenti dell’interfaccia utente nativa. I widget dovrebbero quindi essere ulteriormente personalizzati in base alla piattaforma per cui si sta realizzano l’interfaccia utente.
Attualmente, Flutter propone una varietà di layout, widget di base e piattaforme per creare grafica e supportare API 2D, gestures, effetti, animazioni e altre funzionalità.

Performance

Sul campo performance, Flutter sembra non avere rivali, in quanto riesce a fornire prestazioni equiparabili a quelle delle applicazioni native.

Basti osservare i risultati dei test (che risalgono al 6 agosto 2017) effettuati da Korhan Bicarn, un ingegnere di Capital One, che evidenziano come Flutter abbia delle performance migliori.

Ed in effetti è proprio questo uno dei maggiori punti di forza di Flutter, ma a cosa è dovuto?
Come già detto Flutter utilizza la compilazione Ahead-of-Time (AOT) per convertire il codice Dart in codice nativo.
Alcuni linguaggi di programmazione come C / C ++ (che compone un layer del Framework) devono essere compilati in un formato speciale chiamato “binario” per essere caricato o eseguito, questo modello di compilazione è chiamato AOT.

Questa modalità ha il vantaggio della velocità, poiché, con il formato binario precompilato, il codice può essere eseguito direttamente e rapidamente (ciò può aiutare a eseguire calcoli complessi o rendering).

Inoltre ha una funzionalità davvero comoda in fase di sviluppo, l’ “hot reload“, che consente di sperimentare, costruire interfacce utente, aggiungere funzionalità e correggere bug rapidamente e facilmente.

Esperienza personale

Per quanto riguarda Xamarin preferisco non esprimere considerazioni personali, in quanto non ritengo di avere approfondito appieno la conoscenza del framework, ma posso fornire la mia esperienza in Flutter, con cui sviluppo a tempo pieno da Novembre 2018.

L’approccio iniziale è stato piuttosto impegnativo, venivo dallo sviluppo web (in PHP / Drupal) ed avevo programmato solamente su Android in passato, tuttavia ho felicemente ‘scoperto’ che Flutter ha una curva di apprendimento piuttosto rapida (una volta entrati nella logica del framework) e la sintassi di Dart non mi è sembrata molto dissimile da quella di Java.

Il framework offre numerose librerie ed è tutto molto ben documentato, tuttavia in alcune cose bisogna escogitare dei work-around per aggirare alcune problematiche, che sicuramente saranno risolte in futuro. Lo scopo di questa guida è proprio quello di riportare la mia esperienza e confrontarmi con le metodologie adoperate dagli altri sviluppatori.

Prossima guida

Dalla prossima guida, si passerà quindi allo sviluppo vero e proprio, con una prima mini app, per addentrarci nel mondo di Flutter. Salterò la configurazione degli ambienti di sviluppo, perché ritengo che sia già ampiamente documentata nella documentazione ufficiale che trovate QUI. Flutter your fantasy! 😉

Fonti: Altexsoft, Flutter, docs.microsoft, Korhan Bircan