Facebook EmaiInACirclel
Développement front-end, back-end

Xamarin, la solution des applications mobiles cross-plateforme !

Pierre Peutin
Pierre Peutin
Marketing Automation, CRM & Data Specialist

Ces dix dernières années, l’essort de la téléphonie mobile et l’explosion des smartphones ont considérablement changé la donne via à vis du développement mobile. Il est indispensable aujourd’hui de développer rapidement des applications qui soient compatibles avec la plus grande majorité des périphériques, qu’elle que soit leur OS. Alors, à l’instar des alchimistes de l’antiquité qui cherchaient par tous les moyens à transformer le fer en or, les développeurs d’applications mobiles cherchent aujourd’hui à écrire un code universel qui soit exécutable aussi bien sur iOS, Android que sur Windows mobile. Plusieurs outils existent ayant chacun des niveaux de maturité différents mais il en est un qui se distingue particulièrement : Xamarin.

Pour aller plus loin avec cet outil, je vous propose de lire l’article ci-dessous d’Alexandru Bereghici co-écrit avec Adrian Zghibarța, tous deux développeurs d’applications mobile à Pentalog Chisinau. Après un bref rappel de quelques principes de base, ils font un retour sur leur expérience utilisateur avec Xamarin.

Les applications natives

Imaginons une rencontre entre deux personnes qui souhaitent communiquer entre elles. Si elles ont les mêmes origines et la même langue maternelle, la communication sera alors rapide et compréhensible par les deux. En termes techniques, cette métaphore signifie qu’une application, un code écrit en langage natif, pour iOS par exemple, ne sera compris que par un périphérique utilisant le système iOS. Elle ne fonctionnera pas sous Android et devra donc être ré-écrite pour ce système.
Ecrire une application en natif possède néanmoins des avantages indéniables :

  • des performances supérieures
  • une meilleure gestion des fonctionnalités avancées du périphérique cible
  • une expérience utilisateur optimale

En revanche il existe un inconveinient majeur : l’application ne fonctionnera que sur son périphérique cible. En d’autres termes, une application iOS ne fonctionnera pas sur un périphérique Android.

Les applications hybrides

Les applications hybrides représente le premier pas vers l’universalité. Reprenons notre métaphore précédente et imaginons maintenant que nos deux personnes qui souhaitent communiquer ne soient pas originaires du même pays : elles devront donc utiliser pour se comprendre une langue commune voire universelle comme l’anglais.
Pour les applications mobiles, c’est sensiblement la même chose et les développeurs utilisent pour cela des langages issus du web comme HTML, CSS, Javascript ou d’autres. L’exemple le plus connu est sans doute Phone Gap.

Les applications cross-platform

Le troisième type d’application que l’on peut rencontrer sont les applications Cross-platform. Cela signifie qu’un même code est capable de fonctionner sur la majorité des systèmes d’exploitations connus. Pour cela, l’idée est d’écrire dans un langage unique qui est ensuite compiler dans une forme native à la plateforme cible. L’exemple le plus connu pour ce type d’application est Xamarin.

Xamarin

Xamarin est un Framework de développement d’application mobile, ayant pour but de rendre possible la création d’applications mobiles Android et iOS, en utilisant un seul langage : C#. Xamarin offre la possibilité d’exploiter à 100% les plateformes mobiles, sans devoir apprendre un langage spécifique à chaque OS mobile. Ainsi, en maîtrisant le langage C#, le développeur est alors capable d’écrire pour iOS, Android ou Windows mobile.

Pourquoi utiliser C#?

C# est un langage élégant, simple, de type sécurisé et orienté objet qui permet aux développeurs de créer une vaste gamme d’applications. C# est developpé par Microsoft et utilise le framework .NET, très complet et qui offre de nombreuses possibilités. Avec C# et .NET il est donc possible de développer des applications web, mobile, desktop mais aussi les micropuces.

La philosophie de développement Xamarin

Très simplement, si l’on développer une application mobile fonctionnant sur les 3 principaux OS mobile (sans avoir de framework comme Xamarin), il faut avoir 3 projets différents, un pour chaque OS et développer autant de fois qu’il y a d’OS la partie immergée de l’iceberg à savoir la couche métier (aussi appelée couche “Business”). Chaque brique de cette couche métier devra être recodée X fois, dans un langage différent, avec à chaque fois des contraintes elles aussi différentes.
En utilisant Xamarin , les choses vont tout de suite devenir beaucoup plus simple ! La couche métier devient commune aux 3 plateformes. Le gain de temps est alors considérable car la couche métier ne sera développée qu’une seule fois, sans parler des phases de debuggage, maintenance et d’évolutions. Par la partie front en revanche, Xamarin conserve la création d’interface native pour chaque plateforme cible.

Portable vs Shared

Le découpage clair des projets est l’un des points forts de Xamarin. Cependant il est indispensable de bien comprendre la différence entre deux types de projet : les projets Portable et les projets Shared.
Un projet Portable est un projet dans lequel l’interface graphique et la partie Business (avec le networking layer et data access layer) sont partagées par toutes les platformes et où seuls quelques éléments sont implémentés nativement.
Un projet Shared est un projet dans lequel seule la partie Business est partagée. L’interface graphique et toute la logique qui en découle sont implémentées nativement pour chaque plateforme.
Statistiquement parlant, cela peut se résumer ainsi :

  • Projet portable : 75% de code commun et 25% de code spécifique (natif)
  • Projet shared : 50% de code commun et 50% de code spécifique (natif)

Ces chiffres dépendent évidemment du type de projet que l’on souhaite implémenter mais il faut préciser qu’un projet portable va avoir une interface graphique écrite avec Xamarin Forms, ce qui impose un nombre important de restrictions et ce qui est assez couteux en temps de personnalisation.

Environnement de développement

Pour développer une application cross-plateforme avec Xamarin, on peut utiliser comme IDE Xamarin Studio ou Visual Studio. L’éditeur Xamarin Studio est gratuit et disponible sous Mac et Windows. Il est complet et permet de développer, tester, générer, profiler et faire des interfaces graphiques. il s’agit en fait d’une version améliorée de MonoDevelop. Une petite précision ici sur Microsoft Visual Studio qui est conçu par Microsoft et qui nécessite donc d’acquérir une licence.
L’une des différences majeures qu’il faut souligner ici est que si l’on souhaite développer également pour Windows phone, nous n’avons alors plus d’autre choix que celui d’utiliser Visual Studio, Xamarin Studio n’offrant pas cette possibilité.
L’achat d’une license Xamarin autorise également l’intégration complète dans Visual Studio.

Réutilisation du code et des bibliothèques

Xamarin offre la posibilite de reutiliser le code grace a un “store” dédié qui comprend de nombreuses bibliothèques et composants.  Beaucoup sont gratuits, certains sont payants, une grande partie se limite à iOS et Android, d’autres fonctionnent aussi sur Windows Phone, certains sont uniquement dédiés à un OS. Il est également possible d’inclure directement des bibliothèques tierces en Java ou en C en écrivant des bindings. Certaines possèdent déjà leur portage dans les composants Xamarin (les support library Android par exemple).

Parlons performances

Les applications produites en Xamarin sont très performantes. En Android, le code généré est exécuté par la machine virtuelle Mono qui est aussi rapide que la machine Dalvik. Pour iOS, Apple empêche toute exécution de machine virtuelle. Ainsi, le code produit est directement un code binaire natif compilé avec AOT. Les performances sont donc naturellement excellentes.
Malgré tous ces avantages, Xamarin possède quelques points faibles :

  • Il est nécessaire de bien connaître C#. Xamarin étant un framework C#, la non-connaissance de ce langage est rédhibitoire.
  • Il est également indispensable de connaître les SDK de chaque plateforme. Un développeur peut parfaitement maîtriser le C# et faire échouer le projet s’il n’a pas une connaissance des principes de développement de chaque plateforme.
  • L’écriture de l’UI et de la navigation prend du temps : L’UI et la navigation diffère d’une plateforme à une autre. La personnalisation pour chaque plateforme devient alors relativement compliquée.
  • L’IDE n’a pas encore atteind un niveau de maturité suffisant et reste parfois très capricieux !
  • Le coût des licences

Malgré cela, Xamarin reste un outil puissant que nous vous conseillons vivement d’utiliser pour vos applications professionnelles ! 


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *