À ce jour, de nombreux acteurs fournissent des technologies proposant de développer des applications mobile cross-plateform, permettant ainsi aux développeurs de mutualiser une grosse partie du code pour une même application Android et iOS. Ce gain de lignes de lignes de code (et donc de temps!) a donc poussé beaucoup de développeurs à se pencher sur la question, à savoir : dois-je développer mon application en natif, ou en cross-plateform ?
Natif ou cross-plateform ?
C’est un débat qui divise beaucoup de développeurs, et au final, nous trouverons toujours des avantages et des inconvénients dans les 2 cas et le choix devra se faire sur la nature de votre application.
En terme de performances, de features ou d’expérience utilisateur, le natif semble assez avantageux, il sera possible de faire des applications beaucoup plus « customisables » qu’en cross-plateform. Cependant, quand il s’agit de développement pour des applications « simples » (avec par exemple de simples affichages de données, etc), pour des petits jeux, pour des applications B2B, etc. Il sera alors très intéressant de partir sur du cross-plateform pour un temps de développement moindre (qui n’affectera pas la qualité et les performances de l’application).
Dans la suite de cette article, nous nous pencherons sur 3 des acteurs majeurs du développement cross-plateform : React Native, Xamarin et Flutter.
Xamarin vs Flutter vs React Native : La guerre du cross-plateform
Présentation des 3 solutions
Xamarin est une technologie développée par Microsoft et se basant sur le C# et le XAML. Ainsi, cette solution permet aux développeurs d’avoir accès à un large choix de librairies .Net pour le développement d’applications cross-plateform Android, iOS et UWP.
Xamarin permet aux développeurs de créer du code partagé entre les projets « plateform-specifics » et donc dans ces projets spécifiques de créer du code en utilisant les fonctionnalités natives.
Ainsi, Xamarin est devenu un des choix privilégiés par les développeurs.
Les plus :
- Gratuit
- Bonnes performances
- Environnement de développement complet
Les moins :
- Xamarin est lourd et cela peut poser problème si l’on embarque un trop gros nombre de packages, etc.
- Réécriture de code spécifiques à chaque plate-forme parfois
Flutter est le nouvel arrivant sur le marché, une solution développée par Google. Basée sur le langage Dart, il s’agit d’une solution Open Source.
Les plus :
- Gratuit
- Facile à prendre en main
- Possibilité de modifier le code et de voir le résultat en temps réel
Les moins :
- Flutter est très lourd et cela peut poser problème si l’on embarque un trop gros nombre de packages, etc.
React Native est une solution proposée par Facebook et basée sur React. Il s’agit probablement de la technologie la plus utilisée dans le cross-plateform à l’heure actuelle, de part sa robustesse, son rendu et aussi son langage de programmation -Javascript- qui est l’un des plus utilisé dans le monde.
Les plus :
- Gratuit
- Un rendu très proche du natif, beaucoup de librairies UI
- Accès aux fonctionnalités natives facilité
- Possibilité de modifier le code et de voir le résultat en temps réel
Les moins :
- La navigation est différents par rapport au natif
- Difficultés lorsque l’UI devient complexe
Impression globale
Une étude tendant à savoir le niveau d’appréciation des développeurs sur les technologies qu’ils utilisent nous permet de nous apercevoir que Flutter, bien que tout nouveau sur le marché semble avoir conquis plus de 75% de ses utilisateurs, React Native un peu plus de 60% alors que Xamarin se retrouve avec moins de 50% d’utilisateurs satisfaits…
La communauté
Tout développeur sait à quel point l’aide de la communauté peut se révéler indispensable lorsque l’on est face à un problème que l’on pense insoluble. Combien d’entre nous n’ont pas un jour cherché désespérément la réponse à leur problème, fouillé chaque recoin du web, pour au final tomber sur un topic stackoverflow datant de 2008 et trouver la solution dans les réponses ?
Oui, la communauté qui entour chaque technologie est un facteur déterminant sinon primordial.
Sur Google Trends, nous pouvons alors voir que dans la grande majorité des pays, React Native arrive devant Xamarin dans les recherches Google.
Xamarin et React Native ont tout deux des supports et une communauté très réactive et qui ne fera sûrement que croître. Pour ce qui est de Flutter, qui est encore très jeune, il est pour le moment difficile d’estimer l’étendue de la communauté…
Architecture
Xamarin supporte les architectures MVC et MVVM, donc si vous êtes familiers de l’environnement Microsoft (ASP.NET, WPF, etc.), cela ne devrait pas vous poser de problème particulier.
Flutter est très flexible dans l’organisation d’un projet, il vous sera alors possible d’utiliser l’architecture de votre choix (MVC,BLoC, etc.).
React Native est une abstraction entre les API’s natives et le code React, il n’a pas de pattern à proprement parler, pas de contrôleur, de modèle, etc. Mais il est cependant parfaitement possible d’organiser son projet en utilisant une architecture MVC par exemple, en admettant que React Native soit la vue.
Flexibilité, Performance & Langages de programmation
La performance est évidemment déterminant pour tout développement de qualité.
Xamarin et React Native ont des performances proches de ce que peut fournir le natif, pour ce qui est de Flutter, il semblerait que ses performances soient encore meilleures, grâce à son langage Dart, qui permettrait entre autre une vitesse de communication accrue.
React Native n’étant qu’une « vue », est extrêmement modulable. Xamarin, qui offre une multitude de possibilité quant aux choix de développement possède aussi une flexibilité dans le développement qui est très intéressante.
Pour ce qui est de Flutter, qui est très simple à installer et surtout permet aux développeurs de faire des changements dans le code et de voir le résultat en temps réel, ce qui est un gain de temps énorme…
Xamarin se base sur les langages .Net tels que C# ou F# qui sont très populaires.
React Native utilise le Javascript, tandis que Flutter utilise le langage Dart (également crée par Google).
Comme nous pouvons le voir, Xamarin et React Native utilisent des langages très utilisés à travers le monde, ce qui assure de ne pas subir de pénurie de développeurs.
Pour conclure, Xamarin et React Native sont deux mastodontes dans le cross-plateform et bénificient tous deux d’une large communauté, tandis que Flutter tend à devenir à son tour un des leaders du secteur.
Flutter semble devenir de plus en plus populaire, donc si vous êtes nouveau dans le domaine du cross-plateform, c’est peut-être la solution qu’il vous faut. Mais Xamarin et React Native ont aussi d’excellentes performances. Chacune de ces solutions a ses avantages et ses inconvénients, il est donc impossible de dire quelle est la meilleure technologie car la réponse dépendra de l’application à développer.
Sources :
https://github.com/ziaadini/react-native-model
https://towardsdatascience.com/
https://www.zeolearn.com/magazine/native-vs-cross-platform-apps-youll-be-the-winner
https://blog.logrocket.com/flutter-vs-react-native-vs-xamarin/
https://solidbrain.com/2017/09/12/xamarin-is-it-time-to-move-from-pcl-to-net-standard/