Utilisateur:Sofiane YOUSFI/Brouillon

Une page de Wikipédia, l'encyclopédie libre.

Une application mobile peut être développée sous différentes manières. Cet article présente deux méthodes de développement : le développement mobile en natif, et le développement mobile sous forme d'application web. Ces deux méthodes de développement ont leurs avantages et leurs inconvénients ainsi que différentes spécificités, ce qui laisse au développeur le libre choix sur la manière dont il veut développer.

Définitions[modifier | modifier le code]

Application web mobile[modifier | modifier le code]

Une application web mobile (ou WebApp) est une application utilisée via internet et possédant des fonctionnalités spécifiques pour les appareils mobiles (affichage adapté). Elles sont accessibles via le navigateur Web de l'appareil mobile (Safari sur iPhone par exemple) et n'ont pas besoin d'être téléchargées et installées sur l'appareil pour être utilisée[1]. Les applications web mobile sont développées en utilisant des langages tel que HTML5, CSS3 et aussi Javascript. Puisque les utilisateurs préfèrent avoir un rendu d'interface identique à celui d'une application en native[2], les développeurs utilisent le concept de responsive design (Site web adaptatif) pour afficher le contenu de l'application en l'adaptant à la résolution de l'écran de l'appareil, ce qui garanti un affichage optimal très proche de celui de l'application native.

Application mobile native[modifier | modifier le code]

Une application mobile native est une application mobile développé exclusivement pour un système d'exploitation particulier lié aux smartphones et tablettes. Chaque système d'exploitation possède son propre langage de programmation et sa propre plateforme de téléchargement. Ainsi on peut retrouver une application mobile présente pour un système d'exploitation et pas pour un autre. Ces applications doivent obligatoirement être téléchargées puis installées sur l'appareil mobile pour pouvoir être utilisées contrairement à une application web mobile.

Société Système d'exploitation Langage de développement Plateforme de téléchargement
Apple IOS Objective C AppStore
Microsoft Windows Phone C# MarketPlace
Google Android Java GooglePlay

Comparaison[modifier | modifier le code]

Web mobile[modifier | modifier le code]

Développement[modifier | modifier le code]

Les applications web mobile sont des applications développées en langages destinés au développement web tel que HTML5, CSS3 et JavaScript coté client et avec des langages coté serveur tel que PHP et Java/Java EE[3], l'application prend alors la forme d'un site web adaptatif avec un affichage adapté à la résolution des tablettes et smartphones. L’accès devient possible grâce a un navigateur web disponible sur toutes les plateformes des smartphones (Android, iOS, Windows Phone...), de plus, il existe aujourd'hui des frameworks tel que phoneGap qui est destiné à faciliter la création d'applications mobiles multi-plateformes.

Performance[modifier | modifier le code]

La mesure de la performance d'une application web mobile se fait sur plusieurs aspects, les plus déterminants sont souvent le temps d’exécution, l'usage de la mémoire et la consommation de la batterie[4], généralement, les application web mobile prennent plus de temps pour se charger que les applications mobiles natives. Cela est dû a la taille des donnés à charger par le navigateur de l'appareil. Afin de remédier à ce problème, les développeurs utilise des formats de données adapté comme JSON ou XML[5] et les tailles des images sont réduites en se basant sur le principe de responsive design (Site web adaptatif).

Concernant la consommation mémoire, l'application web mobile n'a pas besoin d'être téléchargée et installée et n'a pas besoin d'une base de données en mémoire comme c'est le cas pour les applications mobiles natives, en effet, comme le contenu est hébergé sur un serveur web distant, l'utilisateur n'a besoin que du navigateur pour y accéder. Par conséquent, l'utilisation de la mémoire concerne que le stockage des données de la page chargée sur le navigateur de l’appareil afin d'éviter de tout recharger lors de l'accès à la page.

Enfin, pour la consommation de la batterie, les applications web varient en fonction de la quantité de données affichées (image, publicité...)[6], cela revient au chargement récurrent des données dès l'accès à la pages web. En effet, le chargement des pages implique le chargement des fichiers complexes en JavaScript avec tout le contenu, même si un grand nombre des fonctions existantes dans ces fichiers ne sont pas utilisées. De plus, la connexion établie avec un serveur web engendre consommation considérable d'énergie[7].

Coût et monétisation[modifier | modifier le code]

Le coût de développement des applications web mobile est moins important que celui du développement en natif, car les développeurs se basent sur des langages web pour les réaliser, donc une application pour tout les utilisateurs.

Versions[modifier | modifier le code]

Les versions d'une application sont gérés en effectuant des mise à jours récurrentes, mais cela se fait sans que l'utilisateur ne le sens ou ne la décide, vu que l'application est stockée sur un site web, les développeurs ont la possibilité de mettre à jours l'application et de changer de versions, et l'utilisateur verra la différence (Si il y a une différence visuelles) lors de son accès.

Forces et faiblesses[modifier | modifier le code]

Voici un tableau récapitulatif des points forts et points faibles de la programmation en web mobile :

Points forts Points Faibles
Les applications web mobiles sont accessibles via un navigateur web et donc sur toutes les systèmes d'exploitations[8]. L'application ne peut pas accéder à toutes les fonctionnalités d'un appareil tel que les API de bas niveau[9].
L'utilisateur n'a pas besoin de récupérer l'application et d'effectuer une installation sur son appareil à partir des plateformes de téléchargement d'applications en ligne comme App Store d'Apple Le développement et la maintenance des applications est plus coûteuse en raisons des différences entre les navigateurs des différentes plateformes
Il y a un gain de l'espace mémoire car l'application n'est pas installée sur l'appareil au même titre que les bases de données L'utilisateur n'a pas le contrôle sur l'application, cela s'illustre avec les mises à jours où c'est aux développeurs que revient la décision de mettre à jour l'application ou non
L'utilisateur ne se soucient pas des mises à jours, ce qui est le contraire avec les applications natives Le temps d’exécution est relativement long par rapport aux applications natives

Application Native[modifier | modifier le code]

Développement[modifier | modifier le code]

Afin de réaliser au mieux une application mobile, il faut tenir compte de plusieurs critères. Ces critères sont établis selon les différences qu'il existe entre tous les smartphones. Premièrement, il faut prendre en compte la résolution de l'écran, en effet il existe différentes tailles physiques pour les écrans mais également différentes densités de pixels. Ces deux choses sont à prendre en considération afin de définir les layout de l'application[10].

Par exemple, une vue peut avoir des affichages différents concernant la disposition des éléments selon la taille de l'écran du téléphone dans lequel l’application est ouverte . Il est important de prendre en compte ce point si le développeur souhaite que son application soit utilisable sur toutes tailles d'écran en ayant un contenu lisible et une ergonomie adaptée.

Distribution des versions android

La version du système d'exploitation de la plateforme a aussi son importance. En 2014, les versions android les plus utilisées sont au nombre de quatre, avec KitKat loin devant suivi de Jelly Bean puis de Gingerbread et Ice Cream Sandwich. Il faut que le développeur prête attention à bien utilisé l’API android correspondante à la version du système qui est utilisé. Le SDK d’android possède un outil permettant d'analyser le code source pour détecter les erreurs via une analyse statique. Mais il y a des erreurs qui ne peuvent être détecté qu’en testant l’application de manière fonctionnel sur chacune des versions du système. Cela s'applique aussi bien aux autres systèmes d'exploitations.[1]

D'autre part, chaque téléphone possède ses propres caractéristiques au niveau matériel (camera, gyroscope, NFC...). Même deux téléphones identiques peuvent avoir des différences sur la qualité des dispositifs qu'ils ont. Une application mobile doit pouvoir, dans la mesure du possible, s'adapter en fonction des caractéristiques techniques du smartphone en proposant des alternatives lorsqu'un dispositif est absent ou défaillant. De plus même si un dispositif fonctionne parfaitement, il y a toujours une marge d'erreur. Si on souhaite exploiter les données d'un capteur, il est préférable d'associer plusieurs capteurs et de recouper les données prélevées afin d'être plus fiable[11].

Chaque système d'exploitation possède ses propres conventions concernant l'interface utilisateur. Le développeur peut tenir compte des conseils apportés par les sociétés productrices afin de créer une harmonie avec l'intégralité des applications du smartphone[1]. Le respect de l'ergonomie choisie par la société permet de faciliter l'utilisation de l'application développée. Cela se traduit par plusieurs points :

  • position du menu contextuel s'il y en a un
  • utilisation d'un bouton retour ou non
  • typographie
  • couleurs
  • bar de navigation
  • icônes ...

Tests[modifier | modifier le code]

En plus de la difficulté du développement, il est difficile d’avoir des tests automatiques pour téléphone mobile pour pouvoir tester son application sur différentes tailles d’écrans et différents systèmes, cela est très coûteux et très long. De plus les appareils qui sont utilisés pour les tests peuvent avoir eux même des problèmes. Pour tenir compte de cela, il faut établir un test minimal sur l’état des appareils avant d'exécuter les cas d’utilisation et une réinitialisation automatique régulière à l’état d’usine doit être prévue.[12]

Certains appareils consomment plus d’énergie via l’USB que ce qu’il y a de défini dans les spécifications. Il est important d’utiliser des hubs qui peuvent supporter la charge de tous les appareils. Pour contourner ce problème il est recommandé de faire des tests fonctionnels de l’application sur un émulateur et de tester de manière non automatique sur les appareils.[12]

Performance[modifier | modifier le code]

La durée d'exécution est, bien sûr, un élément clé pour définir la performance. L'interprétation du code (comme c'est le cas pour le Web avec le langage javascript) se fait au fur et à mesure par le navigateur web. Plus il y a de choses à interpréter, plus le temps d'exécution est long. En ce qui concerne les applications natives, le code est déjà compilé à l'avance, il est donc plus performant en terme de temps d'exécution.[5] Ceci permet de créer des applications qui demandent une puissance de calcul assez importante tel que les jeux 3D ou les applications de traitement d'images. Ces applications vont utilisées par exemple des outils tel que OpenGL ou DirectX.[13]

Concernant la consommation mémoire, une application développée en natif utilisant une base de données peut la stocker dans la mémoire du téléphone ce qui est impossible pour une application web mobile.

Coût et monétisation[modifier | modifier le code]

Le coût de développement est plus important qu'une application web car si on souhaite que l'application soit accessible sur plusieurs systèmes d'exploitation il faut développer l'application sur chacune de ces plateformes. De plus, pour chaque maintenance ou mise à jour, il faudra multiplier le travail par le nombre de plateformes utilisées [14]. Par ailleurs, il est possible de rendre l'application (ou une partie) payante, c'est à dire de la monétiser, facilement via l'intégration d'une facturation directement au téléchargement de l'application ou lors d'un accès à une partie payante de l'application.

Acquisition[modifier | modifier le code]

Comme indiqué précédemment pour pouvoir utiliser les applications mobiles développées en natif il faut accéder à la plateforme de téléchargement d'applications associée au système d'exploitation, télécharger l'application et l'installer.

Versions[modifier | modifier le code]

Contrairement aux applications web, l’utilisateur peut décider ou non d’installer la mise à jour et cela peut poser des problèmes. Par exemple pour des applications client serveur, le back-end doit pouvoir communiquer avec toutes les versions de l’application.[12]

Forces et faiblesses[modifier | modifier le code]

Voici un tableau récapitulatif des points forts et points faibles de la programmation en natif :

Points forts Points faibles
Les langages natifs sont des langages compilés, ils sont plus rapides à l'execution que les langages interprétés tel que le javascript.[5] Il faut développer l'application en utilisant le langage associé à chaque plateforme.
Les applications en native peuvent accéder à des APIs de plus bas niveau développés en natif en plus des APIs qui permettent d'utiliser les fonctionnalités de l'appareil (gestion des périphériques de stockage, caméra, gyroscope... ).[5] Si on souhaite écrire une application sur deux plateformes, il faut coder l'application deux fois ce qui inclue donc plus de temps consacré au développement mais aussi à la maintenance et à la mise à jour.
Certaines applications, ou certaines parties d'applications peuvent être accessible même en ayant aucune connexion internet en embarquant les données ou en les mettant en cache en attendant une connexion.[11] Il y a une perte de l'espace mémoire car l'application doit être installée sur l'appareil au même titre que les bases de données
Grâce à la rapidité d’exécution des applications développées en natif, il est possible de développer des applications qui consomment beaucoup de ressources et qui effectuent beaucoup de traitement tel que les jeux en 3D et les applications de traitement d'images.

Application hybride[modifier | modifier le code]

Il est possible de développer des applications utilisant un navigateur web intégré du support (Smartphone ou tablette) et les technologies Web (HTML, CSS et Javascript) pour fonctionner sur différents OS (iOS, Android, Windows Phone, etc.), c'est applications sont dites Application Hybride. Ces applications unifie dans son architecture les proprietés d'une application mobile native avec celle des applications web mobile. Il existe des frameworks qui permettent de réaliser ce type d'application comme PhoneGap et Titanium..

Articles connexes[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

(en) Andre Charland et Brian Leroux, « mobile application Development: Web vs. native », Communications of the acm, vol. vol. 54, no 5,‎ , p. 50 (DOI DOI:10.1145/1941487.1941504)

(en) Henning Heitkötter, Sebastian Hanschke et Tim A. Majchrzak, « COMPARING CROSS-PLATFORM DEVELOPMENT APPROACHES FOR MOBILE APPLICATIONS », International Conference on Web Information Systems and Technologies. Department of Information Systems, University of Münster, Münster, Germany,‎ , p. 300

(en) Luis Corral, Alberto Sillitti et Giancarlo Succi, « Mobile multiplatform development: An experiment for performance analysis », The 9th International Conference on Mobile Web Information Systems (MobiWIS),‎ , p. 736-743 (DOI doi: 10.1016/j.procs.2012.06.094)

(en) Irene Manotas, Cagri Sahin, James Clause, Lori Pollock et Kristina Winbladh, « Investigating the Impacts of Web Servers on Web Application Energy Usage », Green and Sustainable Software (GREENS), 2nd International Workshop on,‎ , p. 737 (DOI 10.1109/GREENS.2013.6606417)

(en) Anthony I. Wasserman, « Software Engineering Issues for Mobile Application Development », Proceedings of the Workshop on Future of Software Engineering Research, FoSER 2010, at the 18th ACM SIGSOFT International Symposium on Foundations of Software Engineering,‎ , p. 397 - 400 (DOI 10.1145/1882362.1882443)

(en) Thomas W. Knych et Ashwin Baliga, « Android Application Development and Testability », 1st International Conference on Mobile Software Engineering and Systems,‎ , p. 37 - 40 (DOI 10.1145/2593902.2593910)

(en) Scott Barnett, Rajesh Vasa et Antony Tang, « A Conceptual Model for Architecting Mobile Applications », Conference: Working IEEE/IFIP Conference on Software Architecture,‎ , p. 105 - 114 (DOI 10.1109/WICSA.2015.28)

(en) Adrian Holzer1 et Jan Ondrus2, « Mobile Application Market: A Mobile Network Operators’ Perspective », Exploring the Grand Challenges for Next Generation E-Business,‎ , p. 186-191 (DOI 10.1007/978-3-642-17449-0_19)

(en) André Ribeiro et Alberto Rodrigues da Silva, « Survey on Cross-Platforms and Languages for Mobile Apps », 2012 Eighth International Conference on the Quality of Information and Communications Technology,‎ , p. 255-260 (DOI 10.1109/QUATIC.2012.56)

(en) Fadi Chehimi, Paul Coulton et Reuben Edwards, « Evolution of 3D Games on Mobile Phones », Proceedings of the International Conference on Mobile Business (ICMB’05),‎ , p. 1-7 (DOI 0-7695-2367-6/05)