Google Flutter et React Native, c'est quoi ?
Les solutions de développement multiplateforme possèdent chacune leurs avantages et leurs inconvénients et les développeurs veulent toujours savoir laquelle d’entre elles est la solution la plus fiable ou simplement la meilleure. Google Flutter et React Native sont deux des solutions les plus utilisées aujourd’hui pour concevoir des applications multiplateformes. Il est certain que ces deux frameworks sont déjà devenus les principaux acteurs du marché dans cette catégorie. Comme avec toutes les autres technologies du monde informatiques, les développeurs cherchent toujours à savoir lequel d’entre eux est le meilleur.
Pour Rainway Inc., un service de streaming de jeux qui vous permet de jouer aux jeux sur tous vos périphériques, Flutter est de loin la meilleure solution. « Nous avions besoin du meilleur des deux mondes et Flutter nous l'a donné », a déclaré l’entreprise. En effet, l’entreprise utilise Rainway, une application de streaming pour permettre à ses clients de jouer. Selon l’entreprise, une application de streaming comme Rainway a besoin d'une interface utilisateur à faible frottement et faible temps de latence qui permet une communication ultrarapide avec un décodeur de vidéo en continu.
Ainsi, Flutter était la seule solution, selon Rainway Inc, a présenté toutes ces caractéristiques. Mais de quoi parle-t-on ? Flutter est un nouveau framework d'interface utilisateur multiplateforme de Google. Il vous permet d'écrire du code d'interface utilisateur dans Dart, qui est ensuite compilé pour créer des applications natives pour Android, iOS, le Web et bientôt les ordinateurs de bureau. En plus de cela, il affiche un cycle de développement de rechargement à chaud et est livré avec une tonne de widgets. Selon Rainway Inc, tout cela a semblé séduisant pour son équipe qui a décidé de l'essayer.
De son côté, React Native est un framework d'applications mobiles qui utilise JavaScript. React Native combine les meilleurs éléments du développement natif avec React, une bibliothèque JavaScript de premier ordre pour la création d'interfaces utilisateur. Les applications créées à l'aide de React Native ne sont pas des applications Web mobiles. React Native utilise les mêmes blocs de construction de l'interface utilisateur que les applications iOS et Android classiques. Cela signifie qu'au lieu de créer en Java, Kotlin ou Swift, vous assemblez les mêmes blocs de construction en utilisant JavaScript et React.
Quelles différences y a-t-il entre ces deux frameworks ?
D’après l’expérience de Rainway Inc avec Flutter, ce dernier apporte une interopérabilité native tout en se montrant très performant. « La latence lors du transfert de paquets vidéo en continu, mesurée entre la réception du paquet de WebRTC du côté Flutter et son acheminement vers le décodeur du côté natif est d'environ 0,3 milliseconde. Cela ne représente que 2 % de la durée d'une seule image de séquences de jeu de 60 ips », a déclaré l’entreprise. Cependant, ailleurs, l’on estime que les avantages du framework Flutter vont plus loin que ceux exprimés par Rainway Inc.
L’on estime que les applications développées sous Flutter paraissent aussi bonnes sur les nouvelles versions de systèmes d'exploitation que sur les versions antérieures. En effet, au niveau de l’UI, comme elles ne possèdent qu'une seule base de code, les applications se ressemblent et se comportent de manière similaire sous iOS et Android, mais grâce aux widgets Material Design et Cupertino, elles peuvent également imiter le design de la plateforme. Flutter contient deux ensembles de widgets conformes à des langages de conception spécifiques : les widgets Material Design implémentent le langage de conception Google du même nom et les widgets Cupertino imitent le design iOS d’Apple. Cela signifie que votre application Flutter se comportera naturellement sur chaque plateforme, en imitant leurs composants natifs.
Quand est-il de React Native de Facebook au niveau de l’interface graphique ? Avec React Native, les composants d'application ressemblent aux composants natifs (par exemple, un bouton sur un périphérique iOS ressemble à un bouton iOS natif et il en est de même sur Android). Le fait que React Native utilise des composants natifs sous le capot devrait vous donner l'assurance qu'après toute mise à jour de l'interface utilisateur du système d'exploitation, les composants de votre application seront également mis à niveau instantanément.
À ce stade, certains développeurs ont indiqué sur les sites communautaires que cela peut avoir un impact sur l'interface utilisateur de l'application, mais cela arrive très rarement. « La mise à jour de la bibliothèque pour votre application est cauchemardesque », a déclaré l’un d’entre eux. « Je préfère utiliser Flutter que React Native tous les jours. Mon expérience avec React Native était que presque toutes les applications seraient un gâchis incontrôlable de dépendances et de bidouilles pour contourner les différences de cibles », a-t-il ajouté.
De plus, à l’heure actuelle, il semblerait que les composants React ne fonctionnent pas exactement de la même manière que dans React Native. Toujours dans l’UI, l’on estime que si vous souhaitez que votre application soit quasiment identique sur toutes les plateformes, ainsi que sur les anciennes versions d'un système d'exploitation (comme le fait Flutter), vous devez envisager d'utiliser des bibliothèques tierces. Ils vous permettront d'utiliser des composants de Material Design, à la place de ceux d'origine.
Avec React Native, le développement peut sembler parfois plus rapide qu’avec Flutter. Toutefois, React Native utilise un pont et des éléments natifs. Une optimisation distincte peut donc être requise pour chaque plateforme, un problème que Flutter qui est basé sur les widgets ne rencontre pas. Il se peut donc que le développement d'application avec React Native dure plus longtemps. Néanmoins, selon d’autres comparaisons, React Native serait beaucoup plus stable. Il est utilisé par de nombreux acteurs du marché et de grandes entreprises de technologies. Par exemple, il est utilisé dans le développement des applications de Facebook (Instagram et les publicités Facebook), l’application Skype et par l’entreprise Tesla.
Plus encore, il dispose d’une vaste communauté, car il serait une technologie facile à apprendre et possède également beaucoup de tutoriels et de bibliothèques qui permettent un développement rapide et facile. « Pour moi, Flutter était plus difficile à apprendre que React Native. Principalement parce que React Native utilise JavaScript (langage familier pour moi) alors que j'étais nouveau sur Dart, le langage utilisé par Flutter. Donc, si vous êtes nouveau sur Dart et que vous essayez d'apprendre Flutter, cela prendra plus de temps que d'apprendre React Native », a déclaré un utilisateur de React Native.
Les composants de React Native sont plutôt basiques. Par conséquent, si vous avez besoin de quelque chose de plus, vous devez déployer des efforts considérables pour le style. Le code obtenu au cours du développement d’une application développée avec React Native peut être facilement réutilisé pour le développement d'applications Web et d'applications de bureau. À côté, la jeunesse de Flutter ne semble pas empêcher le framework de conquérir les développeurs. Sa communauté aussi serait en croissance. Certains pensent même que Flutter va devenir le choix le plus adapté au développement multiplateforme dans les prochaines années.
« Je suis passé de React Native à Flutter et je suis un grand fan. Je suis un développeur plus âgé et j'ai réalisé une tonne de développement d'interface graphique au cours des 25 dernières années. Mais l'expérience de développeur Flutter est juste la meilleure et la plus rentable que j'ai jamais vue », a déclaré un utilisateur de Flutter. En ce qui concerne les performances, Flutter aurait l'avantage sur sa compilation dans des bibliothèques natives ARM ou x86, ce qui le rend très rapide. React Native n'est pas compilé en code natif, et il possède toujours la couche JavaScript, ce qui le rend moins performant que Flutter.
De plus, l’amélioration de « Flutter for Web », offre le potentiel d’une base de code unique sur les plateformes mobiles et Web. En effet, Flutter a été extensié cette année par Google. Le framework UI de Google, en plus du mobile, prend désormais en charge le desktop, le Web et l'embarqué. Flutter for Web n'est pas encore stable, mais il est actuellement disponible en tant qu'aperçu uniquement. En ce qui concerne le développement d'applications de bureau avec Flutter, certains indiquent que les API en sont à leurs premiers stades de développement et devraient donc être commercialisées un peu plus tard.
Dans d’autres cas, certains informent que si vous devez travailler avec des composants 3D au sein de votre application, cette dernière doit prendre en charge 3D Touch (pour le moment, Flutter ne prend pas en charge la 3D, mais elle figure dans la feuille de route à long terme de l'équipe Flutter). Avec React Native par contre, votre application doit gérer des tâches moins courantes ou ultras spécifiques (telles que des calculs) en arrière-plan. D'autre part et comme dit un peu plus haut, avec Flutter, tout est un widget. Et les widgets sont basés sur Material Design, ce qui les rend facilement personnalisables. La plupart des widgets sont adaptatifs et vous pouvez utiliser le même widget sur Android et iOS. Les bogues sur React Native ont également commencé à prendre beaucoup plus de temps à être corrigés. La plupart des entreprises qui utilisent React Native en production exécuteraient un fork personnalisé pour corriger les bogues non corrigés en amont.
« Les développeurs de Flutter sont plus proactifs et vous pouvez vous attendre à des correctifs rapides », a déclaré un autre développeur de Flutter. Beaucoup de commentaires semblent aller dans le camp de Flutter. Cela dit, la nature multiplateforme de React Native et de Flutter réduit le délai développement et de mise en production. De plus, leurs bibliothèques tierces et leurs composants prêts à l'emploi rendent plus efficace leur utilisation pour créer votre application. Mieux encore, Flutter et React Native offrent plus qu'un développement rapide, ils peuvent également réduire les coûts du projet.
Sources : Rainway, React Native, Flutter
Et vous ?
Quel est votre avis sur le sujet ?
Lequel de ces deux frameworks préférez-vous et pourquoi ?
Voir aussi
Flutter : le framework UI de Google, en plus du mobile, prend désormais en charge le desktop, le Web et l'embarqué
Google lance Flutter 1.2, son SDK open source de développement d'apps mobiles iOS et Android et Dart DevTools, une suite d'outils de programmation
Facebook améliore React et React Native avec une nouvelle API d'accessibilité pour le support des applications d'assistance
Facebook publie en open source Hermes, un moteur JavaScript léger et optimisé pour exécuter React Native sur Android
Apple annonce SwiftUI, un framework d'interface utilisateur déclaratif moderne pour les plateformes d'Apple