Exploration des options de développement sur plateformes mobiles

Publié par Vincent Crépin le dimanche 17 mars 2013 à 21:07

Depuis quelques mois, j'ai décidé de m'intéresser au développement sur les plateformes mobiles. Mon objectif principal était d’identifier une approche me permettant de tirer profit de la richesse de l’ensemble des plateformes que l’on retrouve aujourd’hui sur le marché. Je voulais éviter le piège du développement d’applications natives autant que celui des applications « one-size fits all ».

Après de nombreuses recherches sur les différents frameworks et outils de développement disponibles, voici les choix technologiques que j'ai effectués:

  • JBoss Aerogear: framework pour développer des applications HTML5 hybrides ciblant toutes les plateformes mobiles et aussi les navigateurs standards et utilisant un backend java avec des services REST s'exécutant sur le serveur d'application JBoss. Il existe un archetype MAVEN pour générer un projet de base complet et très illustratif. La partie présentation est construite en utilisant HTML5, Javascript, CSS3, JQuery et JQuery mobile.
  • Apache Cordova: projet open source qui permet de convertir des applications HTML5 en applications natives (Android et IOS particulièrement) et ainsi d'accéder aux fonctionnalités natives des plateformes mobiles. J'ai ainsi pu intégrer des fonctionnalités avancées telles que la reconnaissance vocale et le traitement d'image (OCR) à mes projets.

Avantages

Bien entendu, le plus grand avantage de cette approche est la possibilité de développer une application unique qui est ensuite portée sur les diverses plateformes mobiles et standards disponibles. Il est important de comprendre que la partie présentation peut être divisée de façon à offrir des fonctionnalités destinées au mobile uniquement et d'autres destinées aux navigateurs standards.

Ce découpage se fait assez bien et le code applicatif de présentation demeure facilement maintenable. Il est possible de séparer ce code complètement en des fichiers séparés, si nécessaire. En plus, il n'est pas nécessaire de maîtriser les nombreuses plateformes mobiles qui sont très différentes les unes des autres.

Les technologies de présentation utilisées (HTML5/CSS3/Javascript) sont standardisées et extrêmement répandues. La tendance du marché est clairement dans cette direction. Les différents projets de la famille JQuery simplifient énormément plusieurs aspects du développement web et sont très bien documentés.

Les outils de tests unitaires et d'intégration disponibles (tel Arquillian ou QUnit) sont assez complets et simples d'utilisation. Les applications que j'ai développées sont étonnamment stables comparativement à mes expériences antérieures avec les technologies web (Seam, JSF, Richfaces, GWT). De plus. les services REST représentent une simplification importante par rapport à SOAP avec lequel je travaille depuis plusieurs années.

Difficultés rencontrées

Mes expérimentations m'ont permis de développer 2 applications complètes qui s'exécutent sur tous les navigateurs modernes en plus des plateformes mobiles courantes. Elles comportent des fonctionnalités assez avancées comme la géolocalisation, l'exécution de tâches en arrière-plan, la reconnaissance vocale et le traitement d'images. Cependant, je dois admettre que j'ai fait face à certains écueils et j'ai cru bon de vous faire part de ceux qui ont eu le plus d'impact pour moi.

Javascript: langage en apparence anodin mais en réalité très puissant et différent des langages orientés-objets auxquels j'étais habitué (Java, .NET). Certains concepts très importants (closure, variable scope) sont essentiels à maîtriser pour utiliser le langage de façon efficace et éviter la prolifération des variables globales.

CSS3: technologie de présentation très puissante mais qui comporte un niveau de difficulté important. Le modèle d'affichage est parfois contre-intuitif.

IOS: pour convertir une application ciblant l’IPhone avec Cordova, il a quand même fallu que je me familiarise quelque peu avec la plateforme Apple (XCode), ce qui s'est avéré un effort considérable.

Le résultat final

Les images qui suivent illustrent une page de l’application de géolocalisation telle que rendue dans un navigateur standard, sur la plateforme Android et sur un iPhone.

Gps Logbook Desktop

Gps Logbook Droid

Gps Logbook Iphone
Fureteur "classique" Android iOS

Un des grands avantages de l'approche retenue est celle de pouvoir tirer profit de la richesse de chaque plateforme sans avoir à cibler celles-ci explicitement. Dans l'exemple ci-dessous on voit l'intégration avec le GPS qui permet de simplifier grandement l'entrée des données pour l'utilisateur.

GPS-Logbook-Mobile-Specific

Recommandations

 Après cette expérimentation je me permet de formuler quelques recommandations dans le but de vous faciliter la tâche.

  • Utiliser le site html5test.com pour vérifier le niveau de conformité des différents navigateurs au standard HTML5 (je vous laisse deviner lequel est le moins avancé…).
  • Prendre le temps de se documenter sur JavaScript pour bien maîtriser ses subtilités.
  • Utiliser les outils de support disponibles (ex : JSLint, un validateur de JavaScript) pour faciliter le développement.

En conclusion, je suis très satisfait de la plateforme que j'ai retenue et je crois que cela représente le présent et l'avenir de notre profession.

Références utiles

Voici quelques références aux différents outils et utilitaires utilisés dans le cadre de cette expérimentation.

Mots-Clés :
blog comments powered by Disqus

0 Comments:

Post a comment

Comments have been closed for this post.