Fraîchement arrivé dans ta nouvelle startup, tu prends tes marques dans l’espace de coworking : l’ambiance est détendue et joviale… jusqu’au moment où le ton monte entre Pierre et Antoine, deux développeurs de l’équipe mobile. En tendant l’oreille, tu saisis des bribes de « Android » « Xamarin » « iOS » « Natif » et « cross-platform » ? Tout l’indique : la querelle reprend entre les deux écoles du mobile ! On te donne quelques clés pour comprendre le fond du débat et tenter de l’apaiser.
Dans la team mobile, tu peux trouver plusieurs types de développeurs :
Lorsqu’on parle de développement natif, on évoque d’une part les applications développées sur les langages propriétaires d’Apple, développées sur iOS et ses frameworks Objective-C et/ou Swift. D’autre part, il y a les applications développées sur Java ou Kotlin avec Android, qui concernent principalement les produits Samsung, Sony, Wiko, … Développer en natif requiert des spécialistes du domaine pour produire des applications A à Z.
Basé sur Microsoft C# et sur un framework .NET. Il a été conçu en 2001 et concerne une communauté de 1,4 million de développeurs (environ 10% du nombre total de développeurs mobiles). En simple : il s’agit de développer plusieurs applications mobiles compatibles sur tous les devices avec un seul langage (C#).
Des exemples ? Trello, Slack et GitHub sont développés en Xamarin.
Xamarin est globalement plus performant que ses pairs « multi-plateforme » comme Titanium, Electron, Meteor ou encore Cordova et Ionic, basés sur Javascript et/ou HTML. Pourquoi ? Car il utilise des librairies natives en C#, puis développe des couches cross-platform sur .Net. Tu suis toujours ? En gros, Xamarin, comme ReactNative, permet de ne travailler qu’une fois sur une UI compatible sur Windows, iOS et Android, ce qui le distingue des outils multi-plateformes classiques.
Alors, pourquoi Clément et Maxime se chamaillent constamment ?
Clément est un Apple addict : son bureau est jonché de 5 devices brandés « Pomme », tous connectés à sa montre du même fabricant. Il a déjà passé commande pour le dernier IPhone10, preuve d’un certain acharnement. Vous l’aurez compris : Clément est un développeur iOS.
Face à lui se trouve Maxime : adepte de Microsoft, C# et .Net, il développe l’application mobile de son entreprise sur Xamarin. Il est surtout convaincu d’une chose : un jour, Xamarin prendra le pas sur Android et iOS natifs !
Sans surprise, la dispute entre Clément et Maxime commence toujours de la même manière. Voici quelques scénarios qui t’aideront à noyer le poisson !
- Clément : « Xamarin n’est pas aussi performant qu’une application native »
Certes, un écart persiste à cause de la surcouche Xamarin, ce qui provoque encore quelques ralentissements. Xamarin permet de réutiliser 96% de son code source pour développer autant sur iOS, Windows ou Android. Résultat : des cycles de développement plus rapides pour une équipe plus petite. Côté coûts, le calcul est vite fait : moins de main d’œuvre, accès à un écosystème complet (Xamarin SDK, Visual Studio, Test Cloud…) et une maintenance facilitée avec des updates réguliers.
- Maxime : « Xamarin, c’est du développement natif »
Côté performance, Xamarin rattrape les applications Android/iOS: aujourd’hui les standards Xamarin sont à la hausse, notamment en faisant appel à des APIs permettant d’accéder à des librairies natives. Cependant, les apps Xamarin sont aussi presque 2 fois plus lourdes que des apps natives.
- Clément : Le cross-platform, c’est du bidouillage
Ni oui ni non : l’accès de Xamarin a une grosse composante open source mais ne peut pas accéder à tous les outils disponibles. Certaines extensions n’existeront ainsi que sur les environnements Android et iOS natifs et le choix côté Xamarin ne sera pas aussi riche car sa communauté est plus réduite.
Tu l’auras compris, le débat est loin d’être clos entre tes compères développeurs. Si cet article n’a pas vocation à défendre l’un ou l’autre de tes collègues, il te permettra au moins de suivre le vif échange. Au final, c’est encore une bonne partie de ping-pong qui met tout le monde d’accord !