Même en plein été nous ne chômons pas chez Cellenza ! Que vous reveniez de vos vacances, ou que vous prévoyiez de partir prochainement, nous lançons notre August Mobile Fest 2020. C’est donc au travers d’une série de quatre articles de blog que nos experts vous invitent à plonger dans l’univers du mobile. Pour ce premier article, on parle Xamarin !

 

On ne vous présente plus le framework Xamarin, devenu open source à la suite de son rachat par Microsoft en 2016, il vous a probablement permis de réaliser des applications mobiles iOS et Android en utilisant le langage C#.

Si vous nous suivez depuis un moment, vous n’êtes pas sans savoir que nous avons rédigé beaucoup d’articles sur Xamarin. De son union avec Microsoft, en passant par des tutos pour réduire le poids des applications Xamarin, et un livre blanc pour vous conseiller dans votre stratégie mobile avec Xamarin, nos experts mobiles ont fait le tour d’horizon de ce framework. D’ailleurs, nous vous invitons à retrouver l’ensemble de ces articles sur la catégorie Xamarin de notre blog.

Mais aujourd’hui, une vraie question se pose : quel avenir pour cette technologie ?

Je vous invite à plonger avec moi au cœur des abysses de cette plateforme.

 

 

Deux approches :  Xamarin et Xamarin Forms

 

Comme vous devez certainement le savoir, Xamarin propose aux développeurs deux approches : Xamarin et Xamarin Forms.

La première approche, Xamarin Android/iOS (l’approche classique de Xamarin,) vous permet d’avoir un code métier unique en C#. Elle est accompagnée d’interfaces décrites pour chaque OS cible, elles même écrits en utilisant la technologie concernée.

La seconde approche, Xamarin Forms, vous permet aussi d’avoir un code métier unique accompagnée d’une interface unique en utilisant le XAML, qui est le langage déclaratif développé pour les besoins du système d’exploitation de Microsoft.

Avant de choisir l’approche qui conviendra le mieux à votre projet de développement mobile, il faut bien avoir en tête les avantages et inconvénients de ces deux approches.

 

Avantages et inconvénients de Xamarin Android/iOS (classique)

En utilisant Xamarin Android/iOS, l’avantage premier se trouve au niveau de ses performances. Elles se veulent au plus proches de celles obtenues par une application native. A cela, on peut ajouter des interfaces au look se rapprochant de manière très précise à celles d’une application native. D’ailleurs, celles-ci utiliseront les mêmes technologies de description que les versions natives (axml Android et xml iOS).

En revanche, le principal inconvénient de cette approche réside dans le fait que vous avez à écrire vos interfaces autant de fois que vous avez de plateformes cibles.

 

Avantages et inconvénients de Xamarin Forms

Xamarin Forms se distingue de sa version classique par l’ajout d’une surcouche permettant d’unifier les interfaces. Ainsi, vos interfaces seront décrites une seule fois en XAML et retranscrites plus tard en “control natif”.

L’inconvénient majeur est que l’on perd un peu en performance, notamment lorsque l’on compare avec la version classique. Notons tout de même que les dernières versions ont su améliorer ce point.

 

Tour d’horizon des technologies de création d’application mobile

 

Xamarin a eu à faire à de nombreuses technologies concurrentes ayant elles aussi leurs forces et leurs faiblesses. Parmi elles, on peut citer : Flutter, React Native ou Kotlin Native. Intéressons-nous à ces technologies afin de comprendre en quoi elles se convergent ou se diffèrent avec les fonctionnalités proposées par Xamarin.

 

Flutter, le framework open source propulsé par Google

 

logo FlutterFlutter est le relatif petit nouveau. Proposé par Google, ce framework offre lui aussi la possibilité de créer des applications mobiles iOS et Android, mais aussi web et desktop.

Il offre un certain nombre d’avantages en comparaison à Xamarin classique et plusieurs points communs avec Xamarin Forms.

L’approche de Google est assez différente de celle de Microsoft.  Avec Flutter, les californiens ont choisi de réécrire de zéro le moteur d’affichage, ils n’ont pas cherché à retranscrire les descriptions d’interfaces en contrôle natif contrairement à Xamarin Forms. Avec cette approche, Flutter s’abstrait complètement de la dépendance, qui peut exister avec la couche graphique de l’os, et va lui-même dessiner ses composants, lui accordant ainsi des performances également comparables au natif.

Avec Flutter, on cible le mobile (iOS, Android), Windows, Mac Os et le Web.

Parmi les fonctionnalités similaires à Xamarin Forms, on peut noter le Hot-Loading. Cette fonctionnalité bien pratique permet d’éviter de recompiler l’application juste pour tester une modification de l’interface.

L’une des fonctionnalités qui distingue clairement Flutter des autres, réside dans la possibilité de choisir le mode d’exécution de son application. Cela permet alors de produire soit du code natif (AOT – Ahead of time) ou du code compilé à l’exécution de l’application (JIT – Just in time).

L’autre fonctionnalité qui peut être un avantage dans un contexte de migration d’application, est qu’il est possible d’intégrer du Flutter directement dans un projet natif, ce qui peut grandement les faciliter.

 

 

Kotlin Native, la solution multi-plateforme de JetBrain

 

logo Kotlin

Kotlin Native est la solution de multi-plateforme proposée par JetBrain. Moins populaire que ses concurrents, elle offre, tout comme Xamarin Android/ iOS, la possibilité de produire du code purement natif après compilation via LLVM (pour Low Leval Virtual Machine)

L’un des avantages de Kotlin native est qu’elle donne la possibilité de créer des librairies utilisables dans les applications natives.

En revanche, son principal inconvénient est qu’à l’instar des langages C ou C++, la gestion de la mémoire doit être faite par le développeur. Aussi, contrairement à Xamarin qui permet d’utiliser toutes les classes du Framework .NET, certaines classes de Java ne sont pas disponibles en multi-plateforme.

 

React Native, une version bêta déjà performante

 

logo React NativeCette technologie proposée par Facebook permet de créer des applications mobiles en ayant pour cible iOS et Android.

L’une des premières particularités de React Native est que ce framework, bien qu’utilisé dans de nombreuses application en production, est encore en version bêta 0.x.

Ce framework en javascript et open source, propose à ses utilisateurs un mapping entre le code JS et les éléments Natifs via un Bridge.

Il permet aussi, comme beaucoup de ses petits camarades, le « Hot-Loading ».

 

.NET Multi-platform App UI (MAUI)

 

Annonce Microsoft pour .NET MAUI

Source : https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/

 

Microsoft a annoncé et présenté en mai 2020, lors de son événement Microsoft Build, le successeur de Xamarin Forms : .NET Multi-Platform App UI (MAUI). D’après ces nouvelles annonces, cette technologie sera disponible dans .NET 6 et devrait permettre de créer des applications native iOS, Android, Tizen, Mac Os, Linux et Windows. Derrière la sortie de ce nouveau framework se cache plusieurs objectifs, celui de continuer l’uniformisation de la plateforme .NET tout en offrant aux développeurs .NET la possibilité de créer des applications pour n’importe quel support.

 

MAUI devrait également permettre de migrer à partir de Xamarin Forms avec peu de Breaking changes, tout en promettant une transition en douceur. Le développement est encore en cours chez Microsoft, mais il se fait déjà dire que des  namespace seront modifiés, que des balises Xaml pourraient changer de nom et que des Nugget devront être mis à jour en .NET 6.

Toutefois MAUI est plus qu’une simple mise à jour, il s’agit d’une évolution accompagnée de vrais changements. Parmis ces changements il devrait y avoir l’ajout du pattern MVU (pour Model, View, Update), l’intégration de ReactiveUI (RxUi), la génération automatique de toutes les tailles d’image (2x, 3x, HDPI, XHDPI, …)  à partir d’une seule image source et bien d’autres encore.

 

C’est donc avec impatience que nous attendons la sortie de .NET MAUI qui est prévue pour Novembre 2021.

 

 

Les derniers soupirs de Xamarin ?

 

graphique des recherches sur le web de Flutter, Xamarin et Kotlin

 

graphique des recherches sur le web de Flutter, Xamarin et Reac Native

 

En tenant compte de la récente annonce de Microsoft et des solides alternatives à Xamarin, peut-on considérer que Xamarin est mort ? Bien que les deux graphiques présents ci-dessus ne lui présagent pas un avenir très glorieux, j’ai tout de même envie de vous répondre oui et non…

 

“Xamarin Forms est mort, longue vie à Xamarin”

En effet MAUI devrait prendre sa place au cours de l’an prochain, mais il s’agit d’une évolution, alors on ne peut pas réellement parler de mort. Evolution ou transformation sont des mots plus adaptés. Cette dernière sera accompagnée de nombreux changements que l’on découvrira dans un prochain article.

Xamarin iOS/ Android, quant à lui, devrait connaître une dernière livraison l’an prochain avant d’être rapatrié dans .NET 6 pour devenir respectivement .NET for iOS et .NET for Android. Il s’agit clairement d’un déplacement et non d’une mort. Le fonctionnement devrait rester le même, tout en suivant de près les mises à jour des SDK Apple et Android comme à l’accoutumé. Microsoft continue donc sa stratégie d’unification du Framework permettant à n’importe quel développeur .NET de créer différents types d’applications.

Face aux solides alternatives que sont Flutter, Kotlin Native ou React Native et l’intérêt faiblissant des développeurs pour Xamarin, l’arrivée de MAUI et l’intégration a .NET 5 de Xamarin iOS/Android permettra d’avoir un successeur digne de ce nom qui n’a pas à rougir face à toutes ces alternatives. En revanche, on peut se demander si les changements annoncés par Microsoft, qui doivent arriver en 2021, n’arriveront-ils pas trop tard ? A cela je n’ai pas de réponse et je dirais que tout dépendra du marché à ce moment-là.

Je reste tout de même plutôt optimiste face à l’arrivé de MAUI, ce framework saura très certainement se servir de toute l’expérience et la maturité acquise par Xamarin Forms. Rappelons qu’il sera intégré au Framework .NET 5, que les plugins proposés dans Xamarin Essential rejoindront l’espace nom System. Voilà donc déjà des fonctionnalités qui feront que le successeur de Xamarin Forms sera bien armé pour répondre à de vrais enjeux business.

 

Et vous ? Qu’en pensez-vous ?

 

Nous vous donnons rendez-vous dès la semaine prochaine, avec un nouvel article qui vous présentera comment démarrer un projet Flutter en venant de Xamarin.