Développement d’applications mobiles multi-plateforme
Avec l’essor des smartphones ces dernières années, les acteurs du développement logiciel se trouvent confrontés à une nouvelle problématique: «Comment adresser tous les écosystèmes avec une seule technologie?» Une solution consiste à développer en Java des clients HTML5 qui peuvent être déployés sous forme d’applications natives.
En janvier 2007, Apple présentait en grande pompe son premier iPhone. Suivi par toute une industrie forcée de revoir matériels et systèmes, seuls les plus réactifs ont pu tirer leur épingle du jeu. Cette redistribution des cartes a eu pour effet de cloisonner encore un peu plus les écosystèmes en place, augmentant ainsi la difficulté de trouver une technologie transversale pour adresser toutes les plateformes mobiles.
Début 2012, un état des lieux des forces en présence conduit à identifier:
- Deux leaders incontournables et toujours en forte progression: Google avec Android et Apple avec iOS.
- Deux acteurs historiques en perte de vitesse: RIM avec BlackberryOS et Nokia avec Symbian.
- Deux challengers: Microsoft avec Windows Phone et Samsung avec Bada.
Les applications natives
Chaque éditeur de système d’exploitation mobile met à disposition un ensemble d’outils et de librairies (SDK) permettant la création d’applications à destination de son écosystème. Là où le bât blesse c’est qu’ils sont mutuellement incompatibles, ce qui contraint à coder une application distincte pour chaque plateforme mobile. Les langages de programmation employés par les différents SDK étant de nature bien différentes (Java, C#, objective-C ou C/C++) il faudra – dans bien des cas – s’appuyer sur des équipes de développeurs distinctes ayant des compétences différentes.
Au cours d’un projet de création d’application mobile native – hormis la phase initiale de design et de conception fonctionnelle – toutes les activités (implémentation, tests, assemblage et déploiement) sont réalisées spécifiquement pour chacune des plateformes mobiles à adresser. Dans ce cas, on parle usuellement de développement en mode silo. Actuellement cela reste le prix à payer pour pouvoir employer toutes les fonctionnalités d’une plateforme mobile; par exemple l’accès à la liste des contacts, ou à l’appareil photo.
Les applications Web
Tous les systèmes mobiles modernes disposent d’un navigateur web n’ayant pas grand-chose à envier à leur pendant desktop. A l’exception du système Windows Phone de Microsoft, basé naturellement sur Internet Explorer, tous les autres systèmes se sont appuyés sur le projet open-source WebKit pour mettre en place leurs navigateurs respectifs. Ce choix bienvenu garantit une abstraction commune pour adresser la couche de présentation des applications web mobiles. A ceci près qu’il implique le respect strict des normes en vigueur au sein de WebKit, notamment les attributs CSS préfixé par «–webkit».
Le besoin de disposer de collections de composants graphiques (widgets) à destination spécifique des smartphones se faisant sentir, les acteurs majeurs de la fabrication de librairies graphiques web proposent d’ores et déjà ce genre de boîte à outils. Sencha Touch, JQuery mobile ou GWTmobile-UI sont désormais aptes à réaliser des écrans d’application web mobile très similaires à leurs équivalents basés sur des composants natifs.
Les trois grandes limites de cette approche basée sur le développement d’application web mobile sont l’impossibilité d’accéder à toutes les fonctionnalités matérielles du téléphone (par exemple l’appareil photo du smartphone), l’impossibilité d’être déployé dans un magasin d’application mobile – d’où le manque de visibilité – et les contraintes de sécurité imposées par le «bac à sable» des navigateurs (sandbox).
Le meilleur des deux mondes
Depuis maintenant plus d’une année, le projet open-source PhoneGap se propose – via une architecture élégante – d’encapsuler les applications web mobiles pour les rendre natives aux principales plateformes mobiles du marché. PhoneGap fournit une interface Javascript permettant l’accès aux principales fonctionnalités matérielles des compagnons tactiles. Suivant les plateformes – iOS et Android étant les mieux fournies – une vaste collection de plugins (codes source natifs exposés en Javascript) mis à disposition par la communauté PhoneGap permet l’accès quasi total au matériel et au système sous-jacent.
Afin de pallier à la rareté de profils de développeurs compétents en Javascript, une approche possible consiste à mobiliser les compétences Java disponibles en utilisant GWT (Google Web Toolkit = transcodeur Java vers Javascript) et la libraire GWTmobile pour implémenter l’application web mobile. Cette libraire écrite en GWT supporte l’API de PhoneGap et met à disposition tous les éléments graphiques nécessaires à la réalisation d’une application mobile.
Une fois cette application web encapsulée avec PhoneGap, elle pourra être déployée dans tous les magasins d’application mobile du marché.
Kommentare
« Plus