Applications mobiles : Natif ou Hybride ?
Aujourd’hui beaucoup d’entre nous utilisent leur smartphone de façon intensive (plus de 200 fois par jour* pour certains), nous utilisons des applications tous les jours sans forcément connaître tout le travail nécessaire à leur bon fonctionnement et sans même savoir quelles technologies sont utilisées pour les développer.
Le monde du développement mobile est découpé en deux branches radicalement différentes :
- Le développement mobile dit natif
- Le développement mobile dit hybride
Décryptons ensemble ces deux termes :
Le Natif
Lorsqu’on parle de natif, on parle d’une application développée avec les outils et langages proposés par le système d’exploitation propre à chaque plateforme : l’ Objective-C (et Swift le nouveau) pour les plates-formes iOS, Java pour les plateformes Android, et n’oublions pas non plus le C# pour Windows Phone.
Une application native permet bien évidemment de profiter de la quasi totalité des fonctionnalités du système d’exploitation.
Le problème dans tout cela c’est que lorsque l’on veut développer une application multi-plateforme via du natif, on est obligé de développer et maintenir autant de codes sources différents que de plateformes cibles. Chaque environnement ayant des spécificités et des logiques bien différentes. Cela entraîne des coûts de production et des temps de développement plus longs.
Lorsque l’on développe une application , il y a différentes phases : conception, étude ergonomique (UX Design), graphisme et enfin développement , tests et déploiement.
Le schéma ci-dessous illustre le temps nécessaire pour développer une application native sur les 3 principales plateformes actuelles du marché : iOS, Android et Windows Phone. Dans cet exemple, on considère que l’on commence par le développement sur iOS.
Les différentes étapes citées précédemment (conception, UX Design, graphisme) vont pouvoir être fortement diminuées lorsque l’on va développer sur les autres plateformes car nous aurons des fonctionnements et des ergonomies proches, (même si chaque plateforme a ses spécificités), par contre le temps de développement ne pourra pas être réduit, il faudra développer spécifiquement la totalité des fonctionnalités dans chaque langage de la plateforme cible.
l’Hybride
Une application Hybride utilise des éléments d’HTML5 combinés aux éléments natifs d’un smartphone, que ce soit l’appareil photo, les notifications, la gestion du offline, etc…
Cette application fonctionnera comme une application native et pourra être distribuée sur les plateformes de téléchargement tels que l’App Store (IOS), Google Play (Android) ou encore Windows Store (Window Phone)
Bien qu’il y a quelques années, on pouvait affirmer que les applications hybrides apparaissaient comme moins performantes que des application natives, ça l’est beaucoup moins aujourd’hui. Avec des mobiles de plus en plus puissants, et le support massif du html5 par les navigateurs mobile, on arrive à des applications hybrides très proches du natif en terme de fluidité et de rendu, que ce soit pour des applications “grand public” ou orientée “métiers”. Bien sûr on ne parle pas de développer un nouveau Candy Crush en HTML et CSS – même si techniquement ce serait possible – mais de concevoir des applications de type actualités, consultation de SI, m-commerce ou même orientées lifestyle.
Bien entendu cela ne se fait pas comme tel, il nous faut des outils permettant de faire le “pont” entre nos éléments HTML/CSS/JavaScript et les éléments natifs du téléphone. il existe différents outils permettant de développer des applications mobiles, chacune ont leurs spécificités.
La plus répandue reste Apache Cordova, initialement lancée par fondation Apache. Cordova est un projet libre et open-source, souvent confondue avec Adobe Phonegap, qui repose sur Cordova mais qui propose des fonctionnalités autour, sous la forme de service SaaS (exemple : Phonegap Build ).
Le développement d’une application Cordova se fait au début comme n’importe quel site web, c’est ensuite le coeur de Cordova qui va inclure le code source dans une Webview.
Ionic se base sur Cordova couplée avec le framework Javascript Angular, ce qui permet de pousser au maximum les possibilités offertes par Cordova et d’utiliser la force d’Angular pour proposer un panel de widgets et de fonctionnalités inhérentes aux application natives. La force de Ionic par rapport à Cordova est de permettre un développement plus rapide et avec un meilleur rendu.
Développé par Facebook, ce framework propose une approche bien différente de Cordova. plutôt que de se baser sur des éléments HTML et CSS, on développe des composants (un écran, un bouton etc…) en Javascript qui vont être réinterprété via le framework en éléments purement natifs. Bien que ce soit à l’heure actuelle un outils encore “jeune” (nous n’en sommes actuellement qu’à sa version 0.27), c’est néanmoins très prometteur pour l’avenir !
Le principale avantage de l’utilisation de l’hybride est le fait que le temps de développement sera fortement diminué pour développer sur chacune des plateformes cibles, car la majorité du code source sera commun. Cet avantage grandit d’autant plus lorsque l’on se projette sur la maintenance des applications et leur évolutivité. Maintenir un seul code source est un gain de temps considérable.
Le schéma ci-dessous illustre (comme le précédent) le temps nécessaire pour développer une application hybride sur les 3 principales plateformes actuelles du marché : iOS, Android et Windows Phone.
En opposition au précédent schéma il est clair que le gain de temps est considérable.
Conclusion : NATIF VS HYBRID WHO WINS ?
Malgré la multiplicité des plateformes et des langages de développement, il est courant de dire que les solutions natives sont les plus optimales en termes de performances mémoires et graphiques. Certains géants du web ont déjà commencé à emboîter le pas. C’est le cas par exemple pour Wikipédia qui a développé son application mobile avec Cordova, ou encore Facebook dont certaines de ses applications tierces sont réalisées avec leur technologie React Native.
Si aujourd’hui, il est difficile d’évaluer le pourcentage d’applications utilisant une technologie hybride sur la totalité des applications sur le marché, les développeurs des différents frameworks (cordova, ionic ou react native) vantent régulièrement les applications utilisant leurs technologies. On peut dire qu’adopter l’hybride aujourd’hui est un bon choix pour le présent autant que pour le futur. Si on parle de futur, il ne faut pas oublier l’écosystème qu’il y a autour des applications et notamment les objets connectés. Les technologies hybrides permettent également de communiquer avec des objets connectés, de nombreux plugins existent déjà et promettent un bel avenir pour ces technologies.
*Sources : AFJV