Applications natives ou web HTML5 pour mon mobile ?

L'arrivée des terminaux mobiles en entreprise et la popularité de l'iPhone avec son modèle économique basé sur l'AppStore ont engendré le retour massif du développement d'applications natives, permettant de profiter de l'ergonomie, de la puissance et des nouvelles fonctionnalités des smartphones.

HTML5, la nouvelle version du standard du web, a été conçu pour remédier à ces lacunes. Quel est donc l'impact de HTML5 sur le choix entre application native ou application web?

Les nouvelles fonctionnalités de HTML5

Nous allons ici étudier les nouvelles fonctionnalités de HTML5 et voir s'il rattrape partiellement ou totalement les applications natives. #table_fct_html5 {border:2px solid;width:100%;} #table_fct_html5 th {font-size:1.1em;text-align:center;} #table_fct_html5 th+th {border:none;border-left:1px solid;} #table_fct_html5 td {border:none;border-top:1px solid;text-align:left;} #table_fct_html5 td+td {border:none;border-left:1px solid;border-top:1px solid;text-align:justify;}

FonctionnalitéApport de HTML5Retard rattrapé ?
GéolocalisationHTML5 fournit des API permettant au site web d'accéder aux informations de géolocalisation via le navigateur.Oui !
Drag n dropHTML5 permet en théorie de glisser-déposer toute portions de la page web vers une autre, comme cela est illustré ici. Si cela fonctionne très bien avec une souris, c'est plus difficile à concevoir sur un écran tacile. Pour l'instant, aucun navigateur mobile n'implémente cette fonctionnalité, il faut donc attendre de voir quelle parade ils vont trouver. Peut-être une combinaison multi-touch ?En progrès !
PushGrâce aux WebSockets, HTML5 permet à un serveur web de pousser de l'information au navigateur. Une bonne illustration est le site www.kaazing.com qui montre l'utilisation de "WebSocket". L'intérêt est cependant limité du fait que lorsque le site n'est pas ouvert dans le navigateur, ou que celui-ci est fermé, cela n'est plus possible. Contrairement aux applications natives, typiquement sur l'iPhone, où un démon peut tourner et lancer des alertes quand une information est poussée, même si l'application n'est pas ouverte.<br><br>A ce propos, nous pouvons imaginer que dans le futur, les navigateurs soient capables de gérer du push d'information de la même manière et d'ouvrir des onglets correspondants. Chrome OS prendrait ici tout son sens.En progrès !
Gestion du hors-ligneHTML5 standardise le fait de savoir si on est offline ou pas, et donc d'adapter l'application en conséquent.Oui !
Stockage de données côté clientHTML5 standardise ce que Google proposait déjà avec Gears, un plug-in pour navigateur : le stockage de données dans une base locale intégrée au navigateur (cf. cet article). Un exemple bien connu est Gmail, qui est capable de stocker tous vos mails en local pour y accéder en mode déconnecté. Les applications web sont donc désormais sur un plan d'égalité avec les clients lourds.Oui !
Multi-threadingHTML5 spécifie la gestion de processus concurrents tournant en tâches de fond (les "workers") au sein du navigateur, exécutant du JavaScript. Cela permet un véritable multi-threading au sein d'une application web, permettant d'améliorer les performances et la réactivité des applications.Oui !
MultimédiaHTML5 permet de lire de l'audio et des vidéos, modulo le choix non encore arrêté du codec. La plateforme Open video de Dailymotion en est un bon exemple. Avec la balise <canvas>, HTML5 permet aussi de dessiner. Cela permet de développer des jeux notamment, qui étaient jusqu'ici réservés aux applications natives ou à Flash. Les capacités (3D...) et les performances ne sont pas au même niveau.Oui !

Des cas d'usages qui manquent encore

Nous pouvons d'ores et déjà distinguer ces besoins justifiant le choix de développer en client lourd plutôt qu'en HTML5:

  • le push de données : même si comme on l'a vu, HTML5 apporte de nouvelles fonctionnalités concernant le push de données, cela n'atteint pas les possibilités des clients natifs. En effet, vous ne pourrez pas contrôler que l'utilisateur ne ferme pas son navigateur;
  • le multi-touch : les applications web gèrent très difficilement le multi-touch, même si des initiatives sont déjà lancées (cf. http://vimeo.com/6214945). Il est par exemple très difficile de manipuler une carte dans Google Maps avec ses deux doigts sur un mobile tactile, l'action se mélangeant avec la navigation sur la page;
  • le besoin d'accès aux ressources système : pour des raisons de sécurité, les applications web ne peuvent pas accéder directement aux ressources systèmes et aux fichiers stockés sur disque. Typiquement un système à la Dropbox ou un lecteur de musique stockée en local (et non en streaming) n'est pas réalisable aujourd'hui en web.

Les navigateurs mobiles sont-ils prêts pour HTML5 ?

HTML5 apporte de nouvelles fonctionnalités mais où en sont les navigateurs des mobiles sur le support ce standard ? Peut-on déjà en bénéficier sur les différents smartphones du marché ?

Google et Apple participent énormément au standard HTML5, cette participation est un réel bénéfice pour les utilisateurs de smartphones Android et iPhone qui bénéficient ainsi des avancées de Chrome et Safari dans leurs mobiles. Cependant il faut prendre en compte que la majorité des téléphones Android est encore en version 1.5 ou 1.6 dont le navigateur ne bénéficie pas des fonctionnalités d'HTML5 [1]. Ce n'est pas le cas des iPhones, dont la majorité utilisent la dernière version majeure de l'OS [2].

Les autres OS mobiles tels que RIM OS (BlackBerry), Symbian ou Windows mobile n'ont pas de navigateurs intégrés prenant en compte HTML5. Leur seule alternative est le navigateur d'Opera mais Opera mobile commence seulement à intégrer quelques fonctionnalités d'HTML5 et accuse du retard par rapport aux navigateurs d'Android et de l'iPhone.

Si nous prenons les dernières versions d'OS d'Android et iPhone, leur navigateur est capable de gérer la plupart des fonctionnalités d'HTML5 à part le drag&drop et le multimédia qui ne sont pas du tout implémentées. Concernant le drag&drop, on imagine mal avoir cette fonctionnalité dans nos mobiles étant donné que nous utilisons cette technique pour se déplacer dans la page de notre navigateur.

Il également intéressant de voir le trafic Internet des différents navigateurs mobiles [3]. Ces chiffres sont variables entre les différentes zones géographiques mais l'iPhone est le téléphone le plus utilisé pour naviguer sur Internet même si Opera est beaucoup utilisé en Europe. En Amérique du Nord où le marché des smartphones est plus développé, les navigateurs supportant HTML5 (iPhone et Android) représentent 77% du traffic Internet mobile.

Conclusion sur l'impact de HTML5

En conclusion, si l'intérêt de choisir une application web concerne en général plutôt la réduction des coûts de développement (une seule application à développer pour tous les terminaux), HTML5 permet d'augmenter la valeur des applications web en offrant de nouvelles fonctionnalités et donc d'augmenter la compétitivité des applications web par-rapport aux applications natives. Le canal de diffusion restera cependant le même, une application web et une application native ne s'acquerra pas de la même façon. La volonté d'être présent dans un Application Store peut être l'élément déterminant de ce choix.

~[1] <a href="http://developer.android.com/resources/dashboard/platform-versions.html">Android Platform Versions</a>, 3 mai 2010~ ~[2] <a href="http://metrics.admob.com/2009/12/updated-iphone-os-stats/">Updated iPhone OS Stats</a>, 22 décembre 2009~ ~[3] <a href="http://www.quantcast.com/docs/display/info/Mobile+Report">2009 Mobile Web Trends Report</a>, 5 janvier 2010~