Flutter - Sviluppo software e web

Sviluppo software e web

Flutter

Indice

  1. Origini e sviluppo
  2. Flutter vs React Native
  3. Vantaggi e svantaggi
  4. Supporto e documentazione Google

 

 

Origini e sviluppo

Nato e presentato originariamente con il nome di “Sky” per la prima volta al Dart Developer Summit nel 2015 da uno dei suoi fondatori Eric Seidel, Flutter è oggi uno fra i più recenti framework completamente open source ideati per la realizzazione di applicazioni multi-piattaforma.

Effettivamente data la sua recente nascita, quella di Flutter è una storia breve ma di sicuro interesse e successo.

Nella sua prima versione “Sky”, Flutter venne ideato per la creazione di applicazioni e interfacce native Android.

Circa un paio di anni dopo l’azienda produttrice Google, annunciava Flutter Release Preview 2 durante il Keynote del Google Days a Shangai. Ma a segnare un vero e proprio punto di svolta relativamente a tutto ciò che Flutter potesse rappresentare quale framework multi-piattaforma è stata la versione Flutter 1.0, rilasciata nel 2018 durante l’evento Flutter Live.

D’allora, Flutter rappresenta quelli che sin da subito sono stati gli obiettivi dell’azienda produttrice Google, ossia realizzare un Software Development Kit (SDK) per lo sviluppo di applicazioni mobile di alta qualità in tempi statisticamente molto brevi sia su sistemi operativi iOS che su sistemi operativi di tipo Android.

Grazie all’aggiornamento continuo da parte di Google (in particolar modo con il rilascio della versione 1.9) e dell’attiva community di sviluppatori nata a sostegno di Flutter, quest’ultimo può ad oggi vantare non solo un significativo supporto online, quanto una lista più estesa a favore delle piattaforme supportate da tale framework.

Nel giro di pochi anni, Flutter è diventata una soluzione innovativa quanto efficace per lo sviluppo multi-piattaforma (o cross-platform) volta a risolvere molti dei problemi relativi allo sviluppo di applicazioni ibride, quali ad esempio: performance basse e lentezza nel ciclo di compilazione e di esecuzione.

 

 

Flutter vs React Native

Le soluzioni multi-piattaforma sono ormai diventate focus di interesse non solo da parte di sviluppatori che devono scegliere e utilizzare l’approccio e il framework che meglio si adatta alle esigenze del progetto finale, quanto questo tipo di soluzione sta guadagnando una notevole popolarità anche fra aziende e privati che sempre più vogliono conoscere quali tecnologie e strumenti vengono impiegati e quali sono i più adeguati per dar vita al proprio progetto.

Lo sviluppo di nuovi linguaggi e strumenti volti a migliorare la performance di un’applicazione, unitamente al costante e crescente interesse verso la creazione di progetti sempre più innovativi e diversificati fra loro, ha dato vita ad una serie di molteplici framework per lo sviluppo di applicazioni multi-piattaforma.

Le applicazioni multi-piattaforma si differenziano per una serie di aspetti e funzionalità dalle applicazioni native, in quanto quest’ultime sono programmate esclusivamente nel linguaggio di programmazione proprio di ogni sistema operativo e, pertanto, ogni sistema operativo avrà necessariamente bisogno di uno sviluppo diverso e strettamente personalizzato. Le applicazioni multi-piattaforma offrono, invece, il notevole vantaggio di sviluppare con un solo codice di base un’unica applicazione valida per più sistemi operativi.

In questo senso, lo sviluppo di applicazioni multi-piattaforma garantisce un costo più basso e tempi di sviluppo notevolmente minori, seppur presentando alcuni limiti e svantaggi rispetto ad un’applicazione completamente nativa.

Tuttavia, la realizzazione di un’applicazione multi-piattaforma prevede due approcci diversi.

Nel primo caso è possibile utilizzare un linguaggio di sviluppo web e successivamente adattarlo all’interno di un contenitore nativo, dando vita ad applicazioni ibride.

Nel secondo caso è possibile utilizzare strumenti di rendering a nativo, nonché strumenti che fungono da ponte tra il codice di base e i componenti nativi, dando vita ad applicazioni multi-piattaforma grazie all’utilizzo di appositi framework quali ad esempio: Flutter o React Native.

Seppur abbastanza differenti fra loro per origini di sviluppo, struttura del codice, prestazioni d’uso, community di supporto e ancora molto altro, Flutter e React Native sono ad oggi le due principali soluzioni multi-piattaforma sul mercato che utilizzano strumenti di rendering a nativo.

React Native, rilasciato nella sua versione ufficiale nel 2015 da Facebook si differenzia da Flutter già a partire dalla sua struttura di base, avvicinandosi maggiormente a quelle che sono le caratteristiche e le funzionalità di un framework per lo sviluppo di applicazioni web anche relativamente all’utilizzo di ReactJS (libreria Javascript), così come per l’utilizzo dei linguaggi HTML e CSS.

Di contro Flutter si basa su Dart, un linguaggio di programmazione che, unitamente all’utilizzo di C e C++, consente agli sviluppatori di utilizzare specifici “pacchetti di sviluppo per applicazioni” (SDK) sia per iOS che per Android. Tali Software Development Kit risultano notevolmente efficaci al fine di generare alte prestazioni in termini di velocità e personalizzazione dell’aspetto grafico.

In questo senso, Flutter risulta praticamente imbattibile dal punto di vista della performance. Le sue prestazioni sono, infatti, rese praticamente impeccabili soprattutto grazie ad un’importante funzionalità che consente agli sviluppatori di apportare modifiche nel codice, senza dover ricorrere alla necessità di modificare o riavviare lo stato stesso dell’applicazione in esecuzione. In altri termini, tale funzionalità permette alle applicazioni di adattarsi perfettamente sia per i sistemi operativi aggiornati che per le versioni precedenti.

Inoltre, avendo una sola base di codice, le applicazioni sviluppate in Flutter si comporteranno in modo simile sia su iOS che su Android, imitandone i loro componenti nativi.

React Native prevede, invece, l’uso di componenti simili a quelli di un’applicazione nativa sia per iOS che per Android. Tuttavia, affinché un’applicazione possa presentarsi in modo del tutto uguale su ogni tipologia di sistema operativo, così come accade per Flutter, tale funzionalità è possibile solo attraverso l’uso di librerie esterne.

Quanto al supporto offerto dai due framework, uno dei maggiori vantaggi di React Native è la sua community piuttosto ampia rispetto a Flutter. Di contro, Flutter offre una documentazione senza dubbio più ampia e dettagliata.

Dunque, certamente React Native si caratterizza quale framework più versatile e universale. Ciò non esclude che il più recente Flutter non possa crescere in termini di community, strumenti e librerie che ne costituiscono, al momento, uno fra i pochi svantaggi.

 

 

Vantaggi e svantaggi

Seppur di recente sviluppo, Flutter è già stato utilizzato da numerose e importanti aziende che hanno potuto realizzare e rendere la performance della propria applicazione molto simile ad un’applicazione completamente nativa, adattandola sia su iOS che su Android.

Difatti, la creazione di un’applicazione mobile con Flutter offre notevoli e numerosi vantaggi soprattutto in termini di qualità delle prestazioni in fase di utilizzo e tempi record in fase di sviluppo.

Alcuni vantaggi:

 

  • Sviluppo dinamico: funzionalità che permette agli sviluppatori di sperimentare e vedere immediatamente le modiche apportate al codice direttamente nell’applicazione in esecuzione.
  • Test automatizzati ridotti: possibilità di creare un unico test automatizzato per ogni singola applicazione, in quanto uguale su entrambi i sistemi operativi.
  • Codebase unico: tramite Flutter è sufficiente scrivere un unico codebase per due sistemi operativi diversi.
  • Prestazioni di alta qualità: le applicazioni sviluppate in Flutter si adattano perfettamente su entrambi i sistemi operativi, funzionando in modo fluido e veloce quasi come un’applicazione nativa.
  • Design user-friendly e altamente personalizzabile: Flutter è composto da numerosi widget grafici già pronti o personalizzabili.
  • Interfacce utente flessibili e molto semplici da implementare: la stessa applicazione avrà lo stesso aspetto sia su sistemi operativi aggiornati che su versioni meno recenti.
  • Perfetta compatibilità con servizi e strumenti Google: Flutter si integra alla perfezione con qualsiasi tool di Google.
  • Widget: in Flutter esistono diverse tipologie di widget, ciascuna di esse sviluppata per un determinato compito.
  • Documentazione ufficiale ricca e dettagliata.

 

Tuttavia, Flutter presenta anche alcuni svantaggi soprattutto in termini di mancata integrazione delle funzionalità direttamente dipendenti dalle piattaforme native, nonché di mancata integrazione di alcune API native.

Alcuni svantaggi:

 

  • Dimensione della community: Flutter non ha ancora alle sue spalle una community numerosa, svantaggio dovuto anche all’uso di Dart quale linguaggio di programmazione ancora poco utilizzato rispetto a Javascript.
  • Supporto e librerie ridotti rispetto allo sviluppo nativo: svantaggio dovuto al suo recente sviluppo.
  • Dimensioni dell’applicazione: le applicazioni sviluppate in Flutter sono caratterizzate da dimensioni più grandi rispetto alle applicazioni native, svantaggio per cui il team Google sta già prevedendo.

 

Flutter è in costante sviluppo da parte del team Google quale framework multi-piattaforma che, nonostante non ha ancora i presupposti per superare lo sviluppo standard di applicazioni native, è ad oggi un software già altamente apprezzato ed utilizzato anche per importanti progetti.

In particolare, Flutter risulta ideale per lo sviluppo di piccole applicazioni maggiormente focalizzate sull’interfaccia utente, così come risulta adeguato per la realizzazione di nuovi progetti in quanto ne permette uno sviluppo fluido e veloce. Contrariamente, potrebbe risultare complesso e più articolato il processo opposto, nonché includere alcuni elementi di Flutter in un’applicazione già esistente.

Inoltre, così come per la creazione di nuovi progetti, Flutter è molto veloce ed efficace per la realizzazione di prototipi. Effettivamente, uno dei maggiori vantaggi di Flutter è esattamente il risparmio di tempo.

 

 

Supporto e documentazione Google

Nonostante la recente nascita, Flutter sta diventando sempre più velocemente un punto di riferimento per lo sviluppo di applicazioni multi-piattaforma.

Flutter è in costante evoluzione anche grazie ad una community che, considerando i pochi anni di vita del framework, può già vantare un canale appositamente creato per far comunicare i membri della community di sviluppo con il team Google, note applicazioni mobile (quali Alibaba, Groupon, Capital One, Philips Hue e ancora molte altre) con un elevato numero di download per entrambi i sistemi operativi iOS e Android rispettivamente sulle piattaforme App Store e Play Store, oltre 1.800 plugin sviluppati, nonché un linguaggio di programmazione (Dart, appunto) avente alle spalle uno sviluppo e un utilizzo già meno recente e attualmente utilizzato anche in versione web.

Inoltre, il sito ufficiale di Flutter raccoglie un’ampia documentazione composta da guide al fine di supportare l’uso del framework su Windows, macOS e Linux.

Il supporto online per Flutter, nonché l’ampia documentazione presente sul sito ufficiale, consente agli sviluppatori di utilizzare lo stesso codice per trasferire in modo più semplice e veloce quelle che sono le funzionalità e le caratteristiche che ne permetteranno una certa coerenza circa l’esperienza utente su ogni tipologia di dispositivo.

Quella di Flutter è una documentazione online più che esaustiva, dettagliata e ben suddivisa per categorie e contenuti. Una documentazione caratterizzata non solo da contenuti testuali, bensì anche da video tutorial.

Quanto alla community, sempre in costante crescita, ci sono numerosi canali e piattaforme (YouTube, Twitter, Medium, Gitter, Slack e ancora molte altre) su cui ottenere risposte ed essere sempre aggiornati su qualsiasi argomento circa Flutter.

Autore: Roberta Foglia -