Applications web vs. applications natives

Dans Pourquoi JavaScript, on vous explique tout ce qu’il est possible de faire aujourd’hui en JavaScript, et notamment des applications. Cela ne signifie cependant pas que ce soit la seule possibilité pour créer une app. Deux solutions principales existent aujourd’hui :

  • créer une application dite « native », c’est-à-dire avec les langages propres à chaque téléphone et tablette (Java pour Android, Objective-C pour iOS, etc.) ;
  • créer une application web ou hybride, avec JavaScript.

On a longtemps entendu qu’une application native était préférable, notamment pour les performances, mais ce n’est plus vrai aujourd’hui. Faisons le point.

Temps, coût et compétences

L’avantage principal d’une application web est qu’elle nécessite un seul développement, quel que soit le périphérique, alors qu’une application native nécessitera un développement spécifique pour Android, puis un autre pour iOS, puis éventuellement un autre pour Windows Phone, etc.

C’est évidemment au minimum le double de temps et d’argent nécessaires.

Mais cela pose aussi un problème moins évident et plus compliqué à résoudre : il faudra aussi des compétences multiples. S’il est facile de trouver des développeurs Java (pour Android), il est plus difficile de trouver des développeurs connaissant les langages propriétaires d’Apple.

Fonctionnalités natives

Le revers de la médaille, c’est qu’on a beaucoup entendu qu’une application web n’avait pas accès à toutes les fonctionnalités du téléphone. C’est faux.

Tout d’abord, beaucoup de nouvelles APIs sont apparues en JavaScript, et on peut déjà quasiment tout faire directement : stockage hors ligne, notifications push, synchronisation en arrière-plan, géolocalisation, et même du paiement.

Il reste très peu de choses qui ne soient pas faisables directement en JavaScript, et qui concernent un nombre marginal d’applications. Même si vous êtes dans ce cas, des outils comme Cordova ou NativeScript vous donnent accès à ces fonctionnalités manquantes.

Performances

Les performances ont été la principale critique contre les applications web. Cela n’était pas faux au début du HTML5, qui faisait ses premiers pas. Depuis, de nombreuses années se sont écoulées, et on fait aujourd’hui des jeux 3D en JS. C’est donc que JavaScript est performant et qu’il peut sans souci faire tourner une application web.

Le seul inconvénient, c’est que contrairement à des langages comme Java ou Objective-C qui crient au feu au moindre faux pas et obligent donc à un code de bonne qualité, JavaScript est un langage flexible et permissif. Cela a ses avantages (la facilité d’apprentissage) mais aussi ses inconvénients, en autorisant du code qui n’est pas forcément optimisé.

Ce n’est pas la faute du JS : en se formant à JavaScript et en l’utilisant correctement, il sera performant. Et si vous voulez de meilleurs outils pour coder proprement, vous allez adorer TypeScript, qui rapproche JavaScript très fortement de langages comme Java.

Par ailleurs, on peut aller plus loin aujourd’hui. Contrairement à Cordova qui permet d’accéder à des fonctionnalités natives mais en restant dans le cadre d’une application web, NativeScript permet de coder en JavaScript mais d’avoir un code final natif pour chaque OS après compilation.

Et cela va aller encore plus loin avec WebAssembly, qui va permettre à JavaScript d’être aussi performant que du C.

Marketplaces

Une application web peut tout à fait être packagée pour le Play Store d’Android ou l’App Store d’iOS. Beaucoup d’applications sont simplement des pages web embarquées dans une WebView.

Cependant, les app stores ont de nombreux désavantages : censure, délais de validation, règles strictes à respecter, commissions parfois élevées pour les applications payantes, etc.

Leur autre grand inconvénient, c’est la visibilité, qui est fonction de la popularité. Si votre app fait le buzz rapidement, elle se retrouvera peut-être dans les tops du moment, et les téléchargements seront exponentiels. Sinon, elle restera perdue au milieu de millions d’autres applications.

Par ailleurs, il faut savoir que le téléchargement d’applications, contrairement à ce qu’on croit, est un phénomène de marge. A part pour les très grosses applications comme Facebook ou des apps spécifiques comme les jeux, c’est une minorité d’utilisateurs qui installent régulièrement des applications. Le trafic web mobile est très nettement supérieur à l’usage des applications correspondantes. La plupart des services qui avaient tenté d’imposer leur application sur mobile ont perdu un grand nombre d’utilisateurs, et sont en train de faire machine arrière pour revenir à des versions web.

L’avantage d’une application web, c’est qu’en plus des marketplaces, elle peut aussi être accessible directement sur le web, via une URL, exactement comme un site web classique. En plus de passer outre toutes les restrictions des stores, vous pourrez faire jouer le référencement naturel !

C’est clairement la tendance aujourd’hui avec les Progressive Web Apps, c’est-à-dire un site web accessible de façon classique mais qui s’installe automatiquement et de façon transparente comme une application.

Conclusion

Bref, vous l’aurez compris, le gap entre le natif et le web est aujourd’hui quasiment comblé, et sauf cas particuliers, il est donc bien plus avantageux de développer son application en JavaScript, pour avoir un développement unique et pouvoir faire jouer le référencement naturel.

Découvrez notre formation Angular pour créer des applications en JavaScript