Ludovic ROLAND

Blog technique sur mes expériences de développeur.

Les applications mobiles expliquées à mes clients

19 septembre 2014

Une fois n’est pas coutume, cette semaine ce n’est pas un article technique que je vous propose !

Nombreuses sont les personnes qui me contactent afin que je prenne en charge le développement de leur application mobile. A force d’échanger avec elles pour cerner leur besoin, je me suis aperçu que facilement la moitié des personnes qui me contactent ne savent en réalité pas comment fonctionne une application mobile et c’est souvent les mêmes questions qui reviennent comme par exemple la différence entre une application native et une application dite cross-platform ou encore sur comment alimenter une application mobile en données, etc.

Ce ticket, à défaut d’être hyper pointu sur le sujet, tente de répondre aux principales questions qu’une personne peut se poser lorsqu’elle souhaite se lancer dans le développement d’une application mobile.

Applications natives versus applications cross-platform

L’une des questions qui revient le plus concerne la différence entre une application mobile dite native et une application mobile cross-platform. Au cours des prochains paragraphes, je vais tenter de vous présenter les principales différences entre ces deux types d’applications.

Les applications natives

Une application native est une application qui est développée spécifiquement pour une plate-forme, grâce aux outils spécifiquement conçus pour la plate-forme. Aussi, si vous souhaitez développer une application native pour Android et iOS, il convient en réalité de développer deux applications bien distinctes qui ne pourront malheureusement pas partager la moindre ligne de code. D’ailleurs, il convient généralement de faire appel à des développeurs différents suivants les plates-formes sur lesquelles vous souhaitez vous lancer car, tous les développeurs n’ont malheureusement pas tous une double compétence.

Voici généralement les technologies utilisées lorsque l’on souhaite développer une application native.

Les applications Android

Pour développer une application sur la plate-forme de Google, le langage de programmation utilisé est le Java. Les applications sont alors développées à l’aide du SDK Android. Suivant le besoin, on pourra également le mixer à l’utilisation du C++ et du NDK, mais ce n’est pas nécessaire dans la grande majorité des applications.

Parce qu’il faut bien utiliser un IDE, une application Android peut aussi bien se développer dans Eclipse que dans Android Studio. Chacun des IDE ayant ses avantages et ses inconvénients. La principale différence entre les deux IDE est le support de Gradle pour Android Studio.

Je ne rentre volontairement pas dans les détails de ce qu’est Gradle, le Java, un IDE ou un SDK pour alimenter votre curiosité ;)

Les applications iOS

Pour développer une application sur la plate-forme d’Apple, le langage de programmation utilisé historiquement est l’objective-C. Depuis quelques mois, il est également possible d’utiliser un nouveau langage : le swift.

Pour développer une application iOS, il convient également de s’aider d’un IDE. Dans le cas de la marque à la pomme il s’agit de xcode.

Les applications Windows Phone / Windows Store

Pour développer une application sur la plate-forme de Microsoft, quelle soit pour Windows Phone ou Windows Store, il convient d’utiliser un langage de la famille .NET ce qui offre aux développeurs plusieurs possibilités comme par exemple le VB.NET, le C# ou le C++. Il est également possible d’utiliser WinJS et ainsi développer une application à l’aide de technologies web.

Développer une application Windows ne fait pas exception à la règle de l’IDE. Aussi, il convient généralement d’utiliser Visual Studio.

Les applications cross-platform

Les applications cross-platform s’opposent donc aux applications natives. Une application cross-platform est une application qui une fois développée est capable de s’exécuter sur de nombreuses plates-formes comme par exemple Android, iOS, Blackberry ou encore Windows Phone.

Les applications cross-platforms sont souvent développées à l’aide de technologies web (HTML, CSS et Javascript). Les frameworks les plus connus et utilisés étant probablement Phonegap et Apache Cordova.

L’avantage d’une application cross-platform est donc qu’on peut développer une et une seule une application et la déployer partout. Cependant, on reproche souvent aux applications cross-platforms, bien que ça soit de moins en moins vrai, d’être moins performantes et d’offrir une expérience utilisateur moins immersives, moins proche de l’OS sur lequel l’application s’exécute.

A noter également qu’il existe des solutions comme Xamarin qui permettent de développer des applications natives sur plusieurs plates-formes en ne les développant qu’une seule fois ou presque. Malheureusement ces solutions sont souvent très onéreuses.

Une application mobile ça marche comment ?

A force de discuter avec des clients, j’ai réalisé que beaucoup de personnes ignorent tout simplement comment fonctionne une application mobile. Je vais donc vous révéler le secret des applications mobiles : une application mobile, dans la plupart des cas, c’est bête !

En effet, la plupart des applications mobiles se contentent de deux actions : afficher des informations et en recueillir. Les applications mobiles, au final, ne traitent que très peu de données. Au mieux, elles obéissent à quelques règles métiers qui permettent de les rendre un minimum dynamique, mais dans la plupart des cas, une application mobile délègue le travail à ce qu’on appelle un serveur.

Afin d’illustrer mes propos, je vais me baser sur un exemple très simple. Prenons par exemple le cas d’une application de petites annonces. Si votre application a été codée pour traiter les prix des annonces sous la forme d’un entier, le jour ou le prix devient une chaîne de caractères, votre application plantera lamentablement, incapable de traiter la donnée.

Un serveur ?

Comme je vous le disais un peu plus tôt, une application délègue généralement son boulot auprès d’un serveur. En réalité, le serveur tient le rôle principal dans le cadre d’une application mobile. C’est lui qui alimente les applications en données ou qui sauvegarde les données qui auraient besoin d’être persistées comme par exemple le compte d’un utilisateur.

La communication entre une application mobile et un serveur

La plupart du temps, les échanges entre un serveur et une application mobile se font à travers un web service, également appelé API. Bien que l’on distingue deux grandes familles - les web services REST et les web services SOAP - c’est bien les web services REST qui sont le plus souvent utilisés.

La communication est alors extrêmement simple. L’application mobile se contente de faire une requête HTTP (c’est-à-dire un appel web) au web service qui va alors s’exécuter, remplir son rôle (par exemple sauvegarder des données ou récupérer des données dans sa base de données) puis renvoyer une réponse à l’application mobile. Cette réponse, en plus de contenir les informations demandées contient souvient un certain nombre d’informations relatives au déroulement de la demande.

Les données renvoyées à l’application mobile sont formatées d’une manière très précise permettant à l’application de les traiter facilement. Souvent, les données sont formatées à l’aide du JSON car il a l’avantage d’être facile à écrire et léger à échanger à travers le web. Mais il est tout à fait possible d’utiliser une autre technologie comme par exemple le XML ou encore le YAML.

A noter que les web services peuvent être écrits dans n’importe quel langage de programmation capable de s’exécuter sur un serveur. Parmi les plus utilisés, on peut par exemple citer PHP, Java, Python, Perl, Ruby ou encore C#.

Conclusion

Pour conclure, avant de vous lancer dans le développement d’une application mobile, vous devez faire un choix entre des applications natives et des applications cross-platforms. Vous devez également mettre en place un serveur et des web services afin d’alimenter votre application et permettre à cette dernière de persister ses données.

Commentaires