Flutter, le framework open source de Google pour la création d’applications multiplateformes pour mobile, Web et ordinateur de bureau, organise aujourd’hui son événement Flutter Forward à Nairobi, au Kenya. Comme son nom l’indique, l’équipe utilise l’événement pour présenter les fonctionnalités à venir du framework, dont la plupart sont encore très tôt dans leur cycle de développement. Les principaux points forts ici sont les performances graphiques considérablement améliorées, la possibilité d’intégrer plus facilement le code Flutter dans les applications Web et mobiles existantes, et la prise en charge de nouvelles architectures telles que Web Assembly et RISC-V. Pratiquement toutes ces fonctionnalités se trouvent toujours dans des branches canaries et derrière des drapeaux d’expérience, mais elles montrent où Google prévoit de mener ce projet dans les mois à venir – et aident l’écosystème open source global qui l’entoure à comprendre où certains travaux complémentaires pourraient être utiles ( environ 40 % des contributeurs à Flutter sont en dehors de Google).
Tim Sneath, directeur produit et UX de Google pour Flutter et le langage de programmation Dart, m’a dit que l’équipe avait décidé de réécrire complètement Impeller, l’environnement d’exécution de rendu de Flutter. Cette nouvelle version vise à corriger certains des problèmes existants du moteur précédent, mais améliore également considérablement les performances, tout en offrant la prise en charge des rechargements à chaud et d’autres fonctionnalités de base de Flutter. “C’est une expérience tellement différente. C’est tellement soyeux et lisse », a-t-il déclaré. “Essentiellement, nous sommes en mesure de créer un moteur de rendu graphique adapté à Flutter plutôt que de tirer parti d’un moteur de rendu à usage général.”
Pour permettre cette performance, le moteur propose désormais des shaders pré-compilés, évitant les chutes d’images du moteur précédent lors de la compilation des shaders. Il existe également une prise en charge des shaders personnalisés et des shaders de pixels, ce qui permet un certain nombre de nouveaux effets, ce qui permettra aux développeurs de créer une multitude de nouvelles expériences en plus de Flutter. Sous tout cela se trouvent les API graphiques Vulkan et Metal 3D de bas niveau d’Android et iOS. Actuellement, l’équipe concentre son travail ici sur le mobile, bien que bon nombre de ces nouvelles capacités graphiques devraient déjà fonctionner sur macOS et Windows. “Notre modèle général pour Flutter est de l’emporter partout où vous pouvez peindre des pixels”, a déclaré Sneath.
En parlant de prendre Flutter partout, une autre nouvelle fonctionnalité que l’équipe prévisualise est l’intégration d’éléments. Pour les développeurs Web, cela signifie qu’ils peuvent l’utiliser pour intégrer facilement du contenu Flutter à l’aide d’un élément
standard. Bien que l’on puisse évidemment écrire une application entière avec Flutter et Dart, de nombreux développeurs peuvent souhaiter intégrer ce nouveau code dans des applications existantes qui peuvent avoir été écrites dans un langage différent.
L’équipe travaille également sur un nouveau package qui permet une meilleure interopérabilité JavaScript et Dart, ainsi que de nouveaux outils qui permettront à Flutter d’appeler plus facilement les API système sur Android et iOS. Il avait déjà cette capacité auparavant, mais pour que cela fonctionne, il fallait écrire beaucoup de code passe-partout pour les développeurs.
Pour l’avenir, l’équipe lance également ses premiers efforts pour compiler Flutter en WebAssembly. Avec le battage médiatique autour de ce format binaire en croissance rapide – et la prise en charge des navigateurs et des outils côté serveur mûrissant – il n’est peut-être pas surprenant que l’équipe Flutter s’intéresse également à cette technologie. Pour la plupart, il s’agit d’obtenir des performances supplémentaires de Flutter, a expliqué Sneath. “Dart transpile en code JavaScript très étroitement compilé, mais c’est toujours du code JavaScript, donc il sera chargé et interprété – et, pour nous, WebAssembly semble nous donner un temps de chargement amélioré, réduire la taille et le nombre de mégaoctets transféré sur le fil. Cela semble intéressant », a-t-il déclaré. “Le potentiel de WebAssembly est – à la fois sur le Web et même au-delà – de devenir ce nouveau type de lingua franca portable. J’aime l’idée que nous puissions également prendre et utiliser d’autres codes dans d’autres langages dans WebAssembly.
En ce qui concerne RISC-V, l’architecture de puce libre de droits standard ouverte qui commence également à gagner du terrain dans l’industrie, Sneath a noté qu’il n’en était encore qu’à ses débuts (bien qu’il ait dit qu’il aimait vraiment jouer avec le ClockworkPi basé sur RISC-V DevTerm Kit) mais il pense que la prise en charge de cette architecture peut ouvrir de nouvelles plates-formes pour Flutter, en particulier dans l’espace embarqué. L’équipe Android de Google investissant également dans cette architecture, il vaut vraiment la peine de garder un œil sur ce que Google fait ici, même si le nombre de développeurs qui ciblent spécifiquement cette architecture est sûrement encore assez faible.
Enfin, l’équipe Flutter lance également une nouvelle boîte à outils intéressante pour les éditeurs de nouvelles, qui s’appuie sur le succès d’une initiative similaire que l’équipe a lancée pour les développeurs de jeux lors de la conférence des développeurs I/O de Google l’année dernière. Cette boîte à outils devrait permettre aux nouveaux éditeurs de créer rapidement une nouvelle application mobile centrée avec prise en charge de l’authentification, des intégrations publicitaires, des notifications, etc., le tout sans avoir à concevoir ces éléments à partir de zéro.