Un smartphone peut être un iPhone, un Android, un Windows Phone, un Firefox OS ou un BlackBerry. Les différences entre ces différents sont techniques Une application mobile réalisée spécifiquement pour un Android ne pourra être exécuté par un iPhone, et vice-versa. Le choix des systèmes sur lesquels vous souhaiter que votre application puisse s’exécuter est donc crucial.
Une application écrite en code natif Java pour Android ne fonctionnera pas sous iPhone. Pour que votre application soit disponible sur ces deux systèmes, il faut la développer deux fois : en Java et en Objective-C (ou bien Swift). Cinq fois si vous voulez qu’elle soit disponible sur les 5 systèmes cités auparavant. Bien sûr il y a une alternative : le développement hybride. Fini la dépendance à un système d’exploitation mobile spécifique, on génère un code exécutable partout !
Nous avons interviewé un partisan de cette technologie, un développeur d’application. Il développe ses applications avec des technologies standards, connues et exécutées par tous les smartphones du marché.
Présentez-vous à nos lecteurs
Tsilavina Razafinirina : Je suis un développeur web et à la fois le manager d’une petite entreprise de développement web et de jeux vidéo dénommée Lomay.
Qu’est-ce que c’est le développement hybride ?
Tsilavina : En gros, il s’agit d’une technique de développement d’application utilisant les technologies du web (CSS, HTML et JS). Mais pour que ça fonctionne comme une application native, on enveloppe ces technologies dans un conteneur natif (webview) d’où la dénomination « hybride ».
Qu’en est-il de la performance des applications développées de cette façon ?
Tsilavina : Rien n’est plus rapide que le pur natif. Toutefois, le part de marché des applications hybrides a nettement augmenté ces dernières années. Un bon nombre d’applications que nous utilisons tous les jours sur nos smartphones sont hybrides et personne ne s’en rend vraiment compte : les app Instagram et Linkedin par exemple. Pour dire que la lacune de performance qui a longtemps été le point faible des applications hybrides ne se fait plus vraiment sentir. D’une part cela est dû à la puissance des smartphones qui ne cesse d’augmenter et d’autre part il y a l’apparition de nouvelles techniques de développement hybride toujours plus performant comme Ionic framework ou React Native.
Les langages plus souvent utilisés sont les langages Web. Le développement hybride est-il uniquement cela ?
Tsilavina : Il existe en fait deux approches : les « webview app » et les « compiled hybrid app ».
La première approche consiste à faire tourner des codes HTML, CSS et JS dans un navigateur interne aux Smartphones que l’on appelle webview. En gros c’est un navigateur « headless » sans la barre de navigation que l’on a souvent l’habitude d’utiliser. Le webview est ensuite enveloppé dans une application native, et ainsi certains API natifs peuvent être exploités (appareil photo, sms, acceleromètre etc.)
La deuxième approche consiste à écrire le code dans un seul langage C# ou JS par exemple, puis à compiler ce code en code natif pour différentes plateformes cibles. Les outils comme Xamarin, Titanium ou Embarcadero FireMonkey permettent ce genre de technique.
Avec cette technique, le langage JS est-il soudainement placé au même rang que les grands langages comme le Java, le C, les Python, etc. ?
Tsilavina : JavaScript a toujours été le vilain petit canard pour les programmeurs de par son inconsistance et son approche atypique de l’OOP (programmation orientée objet). Mais le langage a bien sûr beaucoup évolué depuis sa première apparition, nous sommes actuellement à l’avènement de ES6 (ECMA Script 6), avec beaucoup de nouveautés et d’améliorations. Malgré tout cela et sa notoriété grandissante, JavaScript reste du JavaScript, il s’aligne difficilement aux grands langages tel que Java ou C.
Vos mots de la fin ?
Tsilavina : Développement natif ou hybdride, chaque approche a ses avantages et ses inconvénients.
Développer en natif est couteux et plus difficile (compilation, manipulation de l’UI etc.), mais on a l’avantage de la disponibilité de tous les API natifs, des librairies UI et de la performance. Développer en hybride est rapide et plus facile (utilisation stack web) mais on ne bénéficie pas intégralement des librairies d’UI natif et on reste dépendant des plugins qui font l’interfaçage entre webview et API natifs. Aucune des deux ne surpasse vraiment l’autre.
Le choix a l’air compliqué mais pour un développeur le plus important c’est de créer les meilleures applications (tant sur le point de vue, performance, maintenabilité, et confort d’utilisation pour l’utilisateur) dans un temps le plus limité possible. L’objectif final est donc de savoir adapter son choix technologique par rapport à ses ressources et son budget temps.
2 Commentaires
Le parcours de cette personne me fascine.
Coder en natif est tres couteux, c’est vrai. Cette technologie hybride m’interesse beaucoup.
J’aime étudier les nouvelles technologies mais mon temps est precieux car dans le monde du dévelopement chaque seconde est tres couteux.
L’initiation de la personne est tres ambitieux et du coup ça me motive aussi à créer.
Bonne continuation
N’hésitez pas à s’initier dans cette technique qu’est l’hybride!