Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Introduction au développement d'applications mobiles cross-plateformes et Xamarin

Par Samuel SIMON Publié le 06/06/2017 à 19:07:27 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

Il existe des millions d’applications à destination des smartphones, disponibles sur deux systèmes d’exploitation dominants : iOS et Android.

Dans cet article, nous verrons quels sont les différents types d’applications, avec pour chaque type ses avantages et inconvénients, puis quels outils utiliser pour développer.

Ensuite, nous aborderons la question des performances offertes par ces alternatives.

Enfin, je ferai un focus sur Xamarin, qui est un outil très puissant pour réaliser des applications, natives ou multi-plateformes.

Les différents types d’applications

Pour commencer, nous allons passer en revue les différents types d’applications qui s’offrent à nous lorsque l’on décide de se lancer dans un développement mobile.

Le plus commun jusqu’à présent est le développement natif. Lorsqu’on développe une application native, cela signifie que l’application ne sera compatible qu’avec la plateforme cible choisie au préalable. Le développement se fera dans le langage supporté par cette dernière. Par exemple, si vous choisissez de développer une application native Android, le développement se fera en Java, ou via le nouveau langage supporté par Google, Kotlin. L’application sera uniquement compatible Android, et distribuée via la plateforme de diffusion Google Play.

Un développement natif aura l’avantage de faciliter l’accès aux fonctionnalités propres fournies par l’OS, et de fournir une interface contenant les composants auxquels les utilisateurs sont habitués.

En revanche, si vous souhaitez sortir une version de votre application sur une autre plateforme, tout le développement est à refaire. Cela nécessite donc énormément de travail pour la création de l’application, mais également pour la maintenance et l’évolutivité de cette dernière.

La deuxième possibilité qui s’offre à vous est de choisir un développement cross-plateforme, c’est-à-dire un développement compatible avec plusieurs plateformes (Android, iOS, Windows Phone). Il y a plusieurs moyens de faire du développement multi-plateformes.

Le premier que je vais évoquer est la web app. C’est en fait un développement web, avec les technologies web disponibles (HTML, CSS, Angular…), qui va être exécuté dans une WebView sur les différents OS. Pour android, le navigateur utilisé sera Chromium, un équivalent Open Source équivalent à Google Chrome. Le fait que le code soit exécuté dans une web view est totalement transparent pour l’utilisateur. En effet, ce dernier va pouvoir télécharger l’application via les plateformes de téléchargement habituelles, et l’installer sur son téléphone.

L’un des moyens de développer des applications de type Web View est d’utilisé le framework Cordova, qui fournit toutes les APIs nécessaires au développement d’applications mobiles. Voici quelques applications que met en avant le site de Cordova, développées avec cette technologie :

http://sworkit.com/

https://www.justwatch.com/

http://www.keepe.com/?utm_source=cordova

Le lien vers le site officiel de Cordova est le suivant : https://cordova.apache.org/

Le principe de Cordova est expliqué dans le schéma suivant :

L’avantage du développement de Web View est qu’un seul développement est nécessaire pour cibler toutes les principales plateformes mobiles actuelles, et plus encore (BlackBerry OS, FireOS…).

Un autre avantage de cette technologie est qu’un site web peut facilement être converti en application mobile, avec quelques modifications quand même si l’on souhaite tirer parti des fonctionnalités propres aux smartphones (Accès à la gallerie, GPS…).

Enfin, un développement avec Cordova offrira une maintenance et une évolutivité simplifiée des applications.

En revanche, il a été montré que les performances avec ce type d’application sont légèrement réduites (voir la suite de l’article pour approfondir ce point). De plus, l’interface utilisateur sera complètement gérée en CSS, ce qui diffère des composants auxquels les utilisateurs sont habitués. Heureusement, il existe des kits de composants qui pallient ce défaut.

Enfin, cela reste un développement web, et comporte les mêmes problèmes (compatibilité entre navigateurs).

La deuxième façon d’aborder le sujet de développement d’application Cross-Plateforme est le développement via un Framework tel que Xamarin.Forms. Je précise bien Xamarin.Forms, car il est également possible de faire du natif avec Xamarin, c’est-à-dire un projet par plateforme, ce qui présente les mêmes avantages que les développements natifs avec les langages officiels.

Pour présenter rapidement cette technologie avant d’y revenir plus longuement dans la suite de l’article, Xamarin est un framework de développement qui va permettre de réaliser des applications mobiles, cross-plateformes ou non, le tout en utilisant le langage C#.

Développement mobile et performances : quelles technologies choisir en fonction de vos besoins.

Dans cette partie, nous allons aborder la question des performances fournies par les différentes technologies de développement d’applications mobiles, pour les plateformes Android et iOS.

Les performances présentées ci-dessous sont mesurées à l’aide du calcul de la suite de Fibonacci pour un entier N donné, identique pour chaque test évidemment. Les performances mesurées sont donc indépendantes du réseau, ou de facteurs extérieurs pouvant perturber ces données.

Tout d’abord, les performances en fonction du type de développement pour Android :

Les appareils utilisés dans ce comparatif sont un smartphone (Moto X 2014) et une tablette (HTC Nexus 9).

On peut voir que le développement Xamarin Android fourni de très bonnes performances, devant le langage natif Android, le Java. Le développement de type web view est quant à lui moins performant (quasiment deux fois plus lent lors de ce test).

Les performances dans les mêmes conditions pour iOS sont illustrées dans le graphique suivant :

Le même principe que pour le test sur Android est utilisé : comparatif des performances à l’aide d’un smartphone (Iphone 6) et d’une tablette (Ipad Air 2).

On y voit que le développement natif iOS (langage Swift) est à peine plus performant que le développement Xamarin iOS. Le développement web view est aussi dans ce cas beaucoup moins performant.

Comme nous l’avons constaté, le développement natif (ou natif Xamarin) est plus performant que le développement Cross-plateforme web. Lorsque vous choisissez la technologie que vous allez utiliser pour développer votre application, il est nécessaire de bien analyser le but de votre application : si son but est de simplement récupérer des données depuis une API par exemple, un développement cross-plateforme web peut-être la solution. Si l’application nécessité l’utilisation de beaucoup de fonctionnalités liées à la plateforme, avec un besoin important de calcul, alors il serait préférable de privilégier un développement natif.

Xamarin

Comme évoqué précédemment, Xamarin est un framework .Net de développement d’applications mobiles natives ou cross-plateforme, fondé en 2011 et racheté par Microsoft en 2016. L’avantage de Xamarin est de fournir une facilité de communication avec les produits microsoft (Azure, Sql server, etc).

Cette technologie permet de développer des applications mobiles pour les plateformes suivantes :

  1. Android

  2. iOS

  3. Windows Universal (qui comprend Windows Phone)

Le développement Xamarin comprend deux approches : le développement natif, et le développement cross-platform.

Développement natif avec Xamarin :

Un développement Xamarin natif se présentera comme un développement natif habituel. Le projet aura la même architecture, les mêmes principes de fonctionnement ainsi que la même syntaxe dans l’ensemble, mais sera en C#, non en Java ou Swift comme pour les développements natifs traditionnels, et se fera à l’aide de l’IDE Microsoft Visual Studio.

De plus, un développement natif Xamarin impliquera la réalisation de trois projets différents pour la même application si l’application vise les trois plateformes évoquées précédemment.

Bien que plus long à réaliser, ce type de développement permet d’accéder facilement aux différentes fonctionnalités spécifiques de la plateforme cible, et est très performant.

Développement multi-plateforme avec Xamarin :

Les développements utilisant le framework Xamarin.Forms seront multi-plateformes. En général, il a été constaté que 90% du code est partagé entre les différents projets, et qu’il est nécessaire d’effectuer 10% de code spécifique à chaque plateforme. Par exemple, si l’on veut s’authentifier auprès d’une application azure, il va falloir implémenter pour chaque plateforme la méthode de connexion, de même pour l’accès aux messages, à la gallerie photo de l’appareil…

Le développement Xamarin à comme avantages de permettre un développement plus rapide qu’en utilisant l’approche traditionnelle, et de partage la logique entre les différentes plateformes. En contrepartie, l’accès aux fonctionnalités spécifiques à chaque OS sera à gérer séparément (bien qu’il existe de nombreux composants et package nuget permettant de faciliter cette tâche).

Une application Xamarin Forms est composée d’un projet partagé (shared project) ou d’une PCL (Portable Class Library) selon les besoins, et d’un projet par plateforme :

On peut voir que la solution se compose du projet partagé (demoApp), qui va contenir l’interface utilisateur (fichier Xaml), et la logique partagée de l’application. Il y a également 3 autres projets (demoApp.Android, demoApp.iOS et demoApp.UWP), pour les trois plateformes ciblées.

Il faut savoir que peu importe la philosophie de développement choisie, il sera possible de tester les applications sur les émulateurs disponibles, ou directement sur des appareils physiques. Cependant, il faut être conscient qu’il est nécessaire d’avoir un ordinateur sous mac os pour build les applications visant iOS.

Comme précisé précédemment, il est nécessaire d’analyser les fonctionnalités de l’application à développer avant de se lancer dans le développement d’une application Xamarin, afin de choisir la méthode qui convient le mieux aux besoins de cette dernière.

Conclusion

Pour résumer, il existe deux approches différentes pour développer une application mobile :

  1. Le développement Natif

  2. Le développement Cross-plateforme

Chaque approche a ses avantages ainsi que ses inconvénients, et le choix de la technologie doit être déterminé par les fonctionnalité que l’application à développer va implémenter.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels