IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Flutter, le framework UI de Google, serait-il meilleur que React Native de Facebook
Pour le développement d'applications multiplateformes ?

Le , par Bill Fassinou

141PARTAGES

10  0 
Quel framework utilisez-vous aujourd’hui pour concevoir vos applications multiplateformes ? Les solutions multiplateformes gagnent en de plus en plus popularité. Elles permettent de réduire considérablement la durée de travail pour les développeurs et les coûts de déploiement pour les entreprises. Google Flutter, sortie en décembre 2018, et React Native, développé par Facebook et présenté pour la première fois à la conférence F8 en 2015, sont deux des frameworks sur le marché dans la conception d’applications multiplateformes. Laquelle de ces deux solutions est l’approche la mieux adaptée ? Quels sont les avantages et les inconvénients de chacune de ces solutions ?

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

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Kikuts
Membre éprouvé https://www.developpez.com
Le 08/08/2019 à 11:49
Je fais du Xamarin Forms depuis sa création : j'ai pris directement le bateau et me suis acheté mes licences perso.

Depuis 7 mois, j'ai commencé à me former à Dart et Flutter.
Et bien, j'ai redécouvert mon métier... J'ai découvert que Microsoft et Xamarin se foutent bien de nous...

J'ai lu dans les commentaires que Xamarin propose pleins de contrôles ????? Hahahahaha. J'ai vraiment rigolé en lisant ça.
Allez faire un tour sur youtube, chaîne Widget of the Week de Google. Vous allez comprendre qu'on s'est joué de nous pendant des années.... Exemple tout bidon :

Qu'est-ce que vous apprendrez sur cette chaîne ?
-> que Flutter propose juste 100x plus de composants
-> que Google investit à fond dans la com, la documentation (non, Xamarin et Microsoft ne font pas ça à ce niveau là)

Juste pour reprendre ce points des composants : Xamarin existe depuis 2011...
Et on a toujours pas, out of the box, de véritable CheckBox / RadioButton / ToggleButton / SegmentControl / Toast / Popup / Notification / etc. Je peux continuer la liste longtemps.
Là, je parle de trucs de base de base. Je ne vous parle même pas des centaines de Widgets qu'on a chez Flutter pour se simplifier la vie... Et chez Flutter, votre Checkbox est animé... Pas un simple changement d'état genre on switch 2 images ^^
Combien d'années a-t-on attendu juste pour pouvoir avoir un TextBlock/Label qui permet de faire un texte souligné ? 7 ans !!! LOL ! Et je peux vous en sortir bien d'autre du genre...

Combien de fois j'ai réinventé la roue en Xamarin Forms ? Euh... Régulièrement...
Et attention, j'ai les licences SyncFusion et Telerik... Donc j'ai un toolkit bien plus évolué qu'un développeur qui fait sans.
Et bien de base, Flutter propose juste 10 x plus de contrôles que Telerik et SyncFusion réunit...
Y a rien a installé, pas de package, tout est déjà en place.
Chez Xamarin ? Euh... Ba direction NuGet et croisons les doigts...

Parlons maintenant des perfomances... C'est le jour et la nuit... Vitesse de lancement, transitions & animations, poids de l'APK/IPA.
Là, on ne parle pas de Flutter qui dépasse Xamarin, mais de Flutter qui bousille Xamarin

Je vous invite à jouer sur 2dimensions.com et tester Flare. Vous allez comprendre qu'on peut faire des animations de taré en qq mouvement qui tournent à 60 FPS même sur un Samsung J3


Et pour conclure, je parlerai de la qualité de vie de développeur
J'ai rencontré pas mal de bugs de compilation bizarre à donner envie de changer de métier...
Avec Flutter ? Jamais eu de problème nécessitant de chercher plus de 20min.

Temps de compilation ? Je modifie mon code, je fais ctrl+s et hop c'est déjà sur mon smartphone... Une erreur UI ? Flutter m'avertit sur l'écran que tel ou tel composant peut être rogné etc.
Intelisense ? Euh... Même un simple ToString a une documentation de 50 lignes et 10 exemples pour vous dire...

Bref. Je continue de maintenir mes projets en Xamarin. Je choisis Xamarin lorsqu'il y a une code base en C#. Sinon, bye bye et vive Flutter.

PS : je ne vous bassinerai pas avec Flutter qui tourne vraiment sur le Web et sur Desktop.
Regardez ça : https://www.nytimes.com/games/protot...kId=67178520#/
4  0 
Avatar de emilie77
Membre éprouvé https://www.developpez.com
Le 07/08/2019 à 18:41
Flutter deviendra interessant pour moi quand je pourrai faire des softwares desktop
2  0 
Avatar de gbegreg
Membre expert https://www.developpez.com
Le 07/08/2019 à 19:28
J'utilise Delphi et j'en suis satisfait (mobile, desktop et même web) : une même base de code, simplicité, natif, 3D déjà possible...
Je ne comprends pas bien la phrase :
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
Est ce que travailler avec des composants 3D c'est permettre de détecter le niveau de pression avec lequel l'utilisateur appuie sur l'écran ou est ce faire une application 3D ?
De plus, 3D Touch semble avoir du plomb dans l'aile (https://www.igen.fr/iphone/2019/07/les-iphone-de-2019-abandonneraient-bien-3d-touch-108561)
1  0 
Avatar de Kapeutini
Membre actif https://www.developpez.com
Le 08/08/2019 à 15:41
Envie de l'essayer, j'aime bien android studio avec kotlin, on peut faire de tout.
1  0 
Avatar de kilroyFR
Membre éprouvé https://www.developpez.com
Le 09/08/2019 à 0:15
Bootstrap pour faire du GUI multiplateforme; Ca couvre 95% des besoins de nos applis mobiles. Aucun interet de se former a tel ou tel framework qui vient de sortir et qui sera obsolete dans 6 mois parce qu'un autre "revolutionnaire" sera sorti.
Je me suis mis a java/android pour maintenant devoir tout reprendre pour Kotlin. Ben au bout d'un moment faut arreter de chercher a s'occuper en reinventant la roue carree.

Et totalement d'accord avec Xamarin, j'ai essayé et n'y est trouvé qu'un grand vide et je passais plus de temps a essayer de trouver la bonne lib portable (ca bouge tous les jours, jamais stable, patcher ce qui ne marchait pas). Bref on ne m'y reprendra plus. Je suis resté en pure java/kotlin desormais.
1  0 
Avatar de Lyabs
Candidat au Club https://www.developpez.com
Le 07/08/2019 à 19:25
Personnellement je n'ai jamais utilisé React Native j'ai toujours développé des applications avec Java pour Android ce n'est que récemment que j'ai découvert Flutter j'ai également entendu parler de React Native mais j'ai préféré opté pour Flutter d'abord parce qu'il appartient à Google on sait tous de quoi Google est capable même si je ne minimise pas non plus Facebook, j'ai appris Flutter très rapidement, surtout parce que je trouve que Dart est un peu semblable au Java. Je ne suis pas du tout déçu par Flutter, il répond à mes attentes.
1  1 
Avatar de smobydick
Membre averti https://www.developpez.com
Le 07/08/2019 à 20:08
J'utilise ionic. Je ne connaissais pas du tout flutter
0  0 
Avatar de redcurve
Membre extrêmement actif https://www.developpez.com
Le 08/08/2019 à 10:21
Bof je reste sur Xamarin et Xamarin forms l'environnement est stable on a des tonnes de composants etc. Et il y a une grosse communauté derrière
0  0 
Avatar de happy32x
Nouveau Candidat au Club https://www.developpez.com
Le 09/08/2019 à 0:49
En attendant que flutter rejoigne Angular je m'en vais continuer le développement de mon application sous React Native, car on peur le critiquer mais quand on la maitrise on fait de tout avec, en plus la communauté est toujours là lorsque nous sommes bloqués
0  0 
Avatar de hotcryx
Membre extrêmement actif https://www.developpez.com
Le 20/01/2020 à 13:41
Citation Envoyé par happy32x Voir le message
En attendant que flutter rejoigne Angular je m'en vais continuer le développement de mon application sous React Native, car on peur le critiquer mais quand on la maitrise on fait de tout avec, en plus la communauté est toujours là lorsque nous sommes bloqués
C'est le début du Dartweb
0  0