Pour concevoir une application mobile native sur des systèmes d’exploitation différents, il n’est pas obligatoire de développer un logiciel pour chaque OS. Vous pouvez utiliser des technologies cross-platform qui permettent (en théorie) de réaliser un code source unique qui sera transformé en plusieurs logiciels adaptés aux OS visés.
Magique ? Pas si simple…
A/ Fonctionnement générique d’une technologie de développement mobile cross-platform
Dans ce schéma ci-dessus, nous retrouvons une conception en trois étapes, comme pour le développement d’une application native :
1 – Rédaction du code source
La rédaction du code source unique doit tout de même anticiper les spécificités de chaque OS visé et faire appel à tous les SDK nécessaires.
2 – Compilation du code source
Ce code source est ensuite compilé par la technologie cross-platform choisie. Celle-ci va être capable de reconnaître les parties de votre code source qui doivent être intégrées dans tous les logiciels et celles spécifiques à un OS.
3 – Génération d’une ou plusieurs application(s) mobile(s) native(s)
Après compilation, vous obtenez différents fichiers d’exécution de votre application mobile.
4 – Avantages et inconvénients
Il faut savoir qu’il existe plusieurs technologies cross-platform telles que Xamarin, Titanium, Qt, etc. qui ont chacune leur propre langage, IDE, avantages et inconvénients… Elles nécessitent donc des compétences de développement spécifiques ; plus leur structure est complexe et plus le développement et la maintenance des interfaces seront délicats.
En revanche, ces technologies peuvent aussi être utilisées pour réaliser une application sur un OS unique. L’avantage est qu’une seule compétence de développement est nécessaire (maîtrise du langage et des outils appropriés).
Retrouvez la liste et le comparatif des différentes technologies cross-plateformes 2019.
B/ Deux exemples de technologies cross-platform
TITANIUM
Le schéma ci-dessus présente le fonctionnement et les différentes étapes de l’utilisation de la technologie Titanium pour générer une application mobile iOS (iPhone), Android et Windows phone.
1 – Rédaction du code source
Le langage de développement spécifique à Titanium est le JavaScript (à vocation mobile, qui est différent du langage JavaScript utilisé dans le web). Pour utiliser les SDK nécessaires à la réalisation des différentes versions de votre application mobile, il faut faire également appel au SDK Titanium. Le code source doit donc être structuré et appeler les bons éléments dans le bon ordre pour générer des logiciels les plus performants possibles.
2 – Compilation du code source
Lors de la compilation du code rédigé par le développeur, l’IDE Titanium (Titanium Studio) fait la distinction entre le code générique et les parties spécifiques à chaque système d’exploitation.
3 – Génération d’une ou plusieurs application(s) mobile(s) native(s)
Après compilation, on obtient trois fichiers correspondant aux OS souhaités. Or ces derniers ne contiennent pas que du code binaire natif comme dans la programmation d’une application mobile native, mais vont également conserver une partie de code en JavaScript.
Ce code “mélangé” n’est en soi pas un problème tant que les applications fonctionnent, mais cela peut nuire à différentes échelles :
- pour la fluidité de l’application ;
- l’ajout ou la modification d’une fonctionnalité ;
- le poids du fichier exécutable final ;
- le diagnostic de bugs, etc.
XAMARIN
1 – Rédaction du code source
La technologie Xamarin emploie le langage de programmation C# (dit “C sharp”) qui est le même que celui employé pour le système d’exploitation Windows Phone. Contrairement à Titanium qui permet de réaliser un socle de code commun important, Xamarin nécessite de réaliser en amont d’importantes parties de codes spécifiques à chaque OS.
Le travail préliminaire est donc plus important.
2 – Compilation du code source
Une fois le code source réalisé, l’IDE de Xamarin (Xamarin Studio) va le compiler et générer trois fichiers exécutables pour les terminaux iOS, Android et Windows Phone.
3 – Génération d’une ou plusieurs application(s) mobile(s) native(s)
L’inconvénient de Xamarin est la rédaction du code source en amont qui est plus longue et plus complexe. En revanche, le code obtenu après compilation est beaucoup plus optimisé car il ne contient que du code binaire, même si celui-ci est tout de même un mélange de code natif et cross-platform.
Cela a l’avantage de générer des logiciels plus performants et plus adaptés aux différents terminaux visés.
Il existe d’autres technologies cross/multi-plateformes plus récentes tel que React Native ou Native Script.
C/ Conclusion
Par définition le développement d’applications natives générées semble être une solution polyvalente, efficace et de qualité, mais en étudiant de plus près le fonctionnement et les différentes étapes de ces technologies cross-platform, on s’aperçoit qu’il ne s’agit pas d’une solution miracle.
Tout d’abord le développement du code source n’est pas qu’un socle commun, il faut également prévoir des parties de code spécifiques pour s’adapter aux éléments natifs de chaque OS. Cela peut parfois prendre plus de temps que de passer par du développement natif.
Ensuite le diagnostic des bugs et la maintenance sont plus délicats à cause des différentes étapes de compilation, de la structure plus complexe et moins native du code source et de la technologie cross-platform en elle-même qui laisse des traces dans les codes binaires générés.
Cependant le développement natif généré peut être parfaitement adapté pour un projet mobile :
- qui vise a minima deux systèmes d’exploitation (sachant que cette solution apporte un véritable gain pour 3 OS) ;
- qui a besoin de puissance et de performance liées au natif, que des langages web ou des technologies dites “hybrides” ne peuvent pas apporter ;
- et dont les fonctionnalités n’ont pas besoin d’être parfaitement adaptées au hardware du téléphone et n’interagissent pas avec des services spécifiques à une plateforme, ce qui est par exemple indispensable dans certains domaines tels que les jeux, le m-commerce ou les beacons.
D/ Pour tout comprendre
Glossaire
- Application mobile native générée : application mobile qui n’a pas été développée avec la technologie et le langage natifs à son système d’exploitation mais via une autre technologie (Xamarin, Titanium, Qt, etc.) qui va utiliser du code partagé entre plusieurs plateformes et générer un logiciel exécutable sur chaque OS visé.
- IDE : logiciel qui rassemble des outils permettant de développer d’autres logiciels tels que des applications mobiles, des logiciels pour ordinateur ou consoles de jeux ou des sites web ainsi que de réaliser des librairies ou des frameworks.
- SDK : ensemble d’outils d’aide à la programmation pour concevoir des logiciels, jeux, applications mobiles, etc. pour un terminal et/ou un système d’exploitation spécifique.
- Technologie cross-platform : technologie pouvant générer plusieurs logiciels à destination de systèmes d’exploitation différents à partir d’un code unique
À découvrir également
- Développement d’applications mobiles natives générées (2/3) – article ci-dessus
- Développement d’une application mobile hybride (3/3)
- [Livre Blanc – Nouvelle édition] Quelle technologie pour le développement de mon application mobile ?