À la découverte de Flutter et Fuchsia OS

 

Le 28 septembre avait lieu à Blagnac la deuxième édition du DevFest dédiée aux développeurs toulousains. J’ai pu assister à de nombreuses sessions, notamment celle animée par Boris-Wilfried Nyasse et Kevin Segaud qui parlaient de Flutter et Fuschia.
Ils ont commencé cette session par la présentation générale de Dart qui est un langage de programmation web, développé par Google s’inscrivant dans la mouvance des nouveaux paradigmes Web tels que Node.js, TypeScript ou bien CoffeeScript. Le but étant à long terme de remplacer JavaScript. À noter que Dart est compatible avec Javascript et donc utilisable sur tous les navigateurs modernes.

Pourquoi présenter Flutter et Fuchsia ensemble ?

Ils nous ont donc expliqué et remis dans le contexte toutes ces technologies et leur lien.
Dart est un langage, comme expliqué ci-dessus, avec lequel il est possible de créer des WebApps avec des Frameworks comme Angular.dart, React.dart etc. Exactement comme on le ferait avec du Javascript.
Il est également possible de réaliser une application mobile, notamment grâce au Software Development Kit (SDK) Flutter. Les frameworks tels que Shelf, Aqueduct, Jaguar permettent quant à eux de créer des API REST (Representational state transfer).
Pour finir, Fuchsia est un nouveau système d’exploitation visant à remplacer Android. Il possède un système d’interface utilisateur qui est construit avec Dart et Flutter. Il y a vraiment une volonté de la part de Google de construire tout un écosystème autour de ce nouveau langage et de proposer tout un tas d’outils utilisant ce dernier.
Voici un schéma présenté lors du devFest résumant ce qui vient d’être dit :

Schéma récapitulatif (source : devFest Toulouse 2017) Schéma récapitulatif (source : devFest Toulouse 2017)

 

Flutter c’est quoi exactement?

Flutter est un nouveau Software Development Kit créé par Google, construit en C, C++ et Dart, dont l’objectif est de nous proposer une nouvelle approche «cross-platform» de développement mobile. En se basant uniquement sur le langage Dart, il permet de construire des applications natives Android et iOS.

Flutter dans le contexte actuel du monde du développement mobileFlutter dans le contexte actuel du monde du développement mobile

Flutter se situe au même niveau que React, Native ou Xamarin, ce qui signifie qu’à partir du code écrit en Dart va ensuite être généré du code Android et iOS.

En termes de performance, il nous est dit que le framework a été conçu pour que le développeur atteigne une constante de 60 Frame Per Second (FPS). Les applications Flutter tournent via du code compilé natif, il n’y a aucun interpréteur qui rentre en jeu ce qui signifie que l’application démarre rapidement.

Pour ce qui est du cycle de développement et du temps entre l’édition et le rafraichissement, Flutter implémente un système d’hot reload (rafraichissement à chaud) qui permet un rechargement de l’ordre de la seconde sur le mobile ou l’émulateur. Le hot reload est stateful, ce qui signifie que l’état de l’application est conservé après chaque rechargement. C’est-à-dire que vous pouvez parcourir un écran profondément imbriqué dans votre application, sans repartir de l’écran d’accueil après chaque rechargement.
Le hot reload fonctionne en injectant le code mis à jour dans la machine virtuelle en cours d’exécution. Cela inclut non seulement l’ajout de nouvelles classes mais aussi l’ajout de méthodes et de champs aux classes existantes. Il y a en revanche des changements de code qui ne sont pas pris en compte dans le hot reload :

  • l’initialisation de variables globales
  • l’initialisation de champs statiques
  • la modification de la méthode main

Pour l’environnement de développement, il existe plusieurs solutions notamment en utilisant l’éditeur de texte de votre choix associé au Command-Line Interface (CLI) de Flutter ou en utilisant intelliJ IDEA avec le plugin Flutter. En effet, un plugin spécifique a été développé tout particulièrement pour cet “Integrated Development Environment” (IDE).

Flutter Plugin pour IntelliJ IDEAFlutter Plugin pour IntelliJ IDEA

 

Flutter comprend aussi une galerie qui est un catalogue de widgets (visuels, structurels, interactifs..) rendant le développement d’applications plus rapide.

Fuchsia OS, qu’est-ce que c’est concrètement?

Fuchsia est le nom de code du nouveau système d’exploitation open-source développé par Google. Le codebase a été posté en août 2016 sur Github. Ce système d’exploitation est basé sur le Zircon kernel qui est un dérivé du Little kernel. Le zircon kernel est composé d’un microkernel ainsi que d’un petit ensemble de services d’espace utilisateur, de pilotes et de bibliothèques nécessaires pour démarrer, interagir avec le matériel, charger les processus utilisateurs et les exécuter.
Le noyau zircon fournit des appels systèmes permettant de gérer les processus, les threads, la mémoire virtuelle, la communication inter-processus, l’attente des changements d’états des objets et le verrouillage (via les Futex : Fast Userspace Mutex).

L’interface utilisateur porte le nom Armadillo, il sera l’interface utilisateur par défaut de Fuchsia. Cette interface a été développée avec le SDK Flutter. Cette interface constitue une refonte de l’écran d’accueil avec un clavier, un bouton d’accueil et un gestionnaire de fenêtre.

Section principale de Fuchsia (source : Ars Technica)Section principale de Fuchsia (source : Ars Technica)

 

Conclusion

Au final, ces technologies apparaissent comme étant probablement le futur du monde du mobile tout en s’appuyant sur le langage Dart souhaitant concurrencer l’omniprésent Javascript.
Néanmoins, il faudra attendre encore un peu que le projet Flutter prenne de l’envergure pour tirer les premières conclusions sur ce Software Development Kit. De même pour Fuchsia OS et de la position que souhaite adopter Google pour ce système d’exploitation.

 

À lire également : Visually test your async code with Marble Testing: Rx (Java/JS)

 

Des questions sur le sujet ? N’hésitez pas ! 

CONTACTEZ-NOUS

Share
Jerome Ruby
Jerome Ruby

2071

Leave a Reply

Your email address will not be published. Required fields are marked *