Comment créer une application mobile aujourd’hui ? Comment choisir la bonne technologie ? Commençons d’abord par un petit point historique avant de voir ce que nous proposent les technologies actuelles.

Petit retour en arrière

Avant l’apparition de l’iPhone, le monde se divisait entre applications web et natives sur les OS historiques : Windows, Unix/Linux, OSX.

Pour faire du Web, on utilisait :

  • Html/Javascript/Css
  • Et pour le backend, .Net/Java, php, ou cgi…

Pour le Natif, c’était plutôt :

  • .Net
  • Java
  • C++
  • Etc.

Les premiers téléphones permettaient de consulter des pages web très peu optimisées. La solution était alors de créer des pages web spécifiques au mobile (WAP). BlackBerry a démocratisé l’utilisation de l’internet sur téléphone portable, surtout grâce au push des e-mails.

Nous avions le choix entre de nombreuses technologies. Le choix le plus facile était celui du développement web. Mais, dans certain cas, le développement d’une application native était obligatoire. Par exemple, dans le cas où votre application était utilisée hors-ligne, sans connexion internet.

A l’époque, le seul acteur intéressant sur le marché des applications mobiles natives était Microsoft avec Windows Mobile. Une plateforme flexible, un SDK bien fourni, et des fonctionnalités d’entreprise (VPN,…). Mais on ne peut pas dire que Windows Mobile ait été un énorme succès.

Et maintenant, qu’en est-il du développement mobile ?

Apple a mis un coup de pied dans la fourmilière en apportant une chose que Microsoft n’avait pas réussi à faire jusqu’alors avec Windows Mobile : l’ergonomie ! Depuis l’iPhone et iOS, on parle de design, d’UX, d’ergonomie, de graphisme, etc. Maintenant, on veut un téléphone aussi simple qu’un grille-pain, mais avec les fonctionnalités d’un ordinateur.

L’iPhone a révolutionné l’expérience utilisateur mobile. Apple a créé un téléphone avec une ergonomie simplifiée, le premier téléphone qui répond vite avec des applications qui démarrent vite. L’interaction est rapide, tout s’utilise au doigt, pas besoin de stylo.

La société a aussi réussi à fidéliser des développeurs. Ainsi, des milliers d’applications sont développées pour iOS. Face à ce succès, Google avec Android et Microsoft avec Windows Phone ont suivi le même chemin.

Aujourd’hui, il y a donc 3 plateformes majeures qui nous permettent de développer sur mobile :

  • Android
  • iOS
  • Windows Phone

 

Comment cibler ces plateformes pour un projet de développement mobile ?

Pour cibler ces 3 plateformes, nous avons le choix entre du web, du natif, et de l’hybride (Multi-plateformes).

Le Web :

Le Web d’aujourd’hui a beaucoup évolué : les normes sont plus respectées, avec des différences plus faibles entre chaque browser. Le Web nous permet d’intégrer des fonctionnalités intéressantes comme la géolocalisation par exemple. Le design est, quant à lui, plus souple et les applications web sont plus riches et fluides. Les technologies HTML5/Javascript/CSS3 permettent de définir un standard et des comportements similaires en fonction des plateformes. Les frameworks Javascript, tel que AngularJS ou JQuery sont maintenant très matures et nous permettent de créer des applications riches avec un minimum de code. Toutefois, il nous manque l’accès à certaines API de la machine. Internet demeure un pré-requis pour utiliser votre application pour beaucoup de cas d’usage.

Le Natif :

Le natif permet de profiter des performances de chaque type de mobile. Grâce au framework propre à chaque plateforme, on a accès à l’ensemble des ressources matérielles et logicielles : GPS, boussole, contacts, téléphone, Bluetooth, etc. Il n’y a presque plus de limite avec ces applications. Toutefois, chaque plateforme possède son langage de développement, son SDK, et ses patterns de programmation :

  • iOS : XCode, Swift
  • Android : Java, Dalvik
  • Windows Phone : .Net, Silverlight

 

L’hybride :

Les applications hybrides (Xamarin, PhoneGap, Cordova,…) promettent de réunir le meilleur des deux mondes. L’idée est de mutualiser les développements en utilisant le même framework. Ainsi, on va utiliser le même langage et les mêmes outils pour développer sur chaque plateforme. En fonction de la technologie choisie, on peut avoir les contraintes suivantes :

  • Des performances dégradées
  • Des fonctionnalités en moins (pas d’accès au Bluetooth par exemple)

Il y a beaucoup d’inégalités entre les différents applications hybrides. Les performances ne sont pas les mêmes. Les outils sont différents. Les API sont différentes.

  • Xamarin (Performant, C#, …)
  • PhoneGap (HTML, CSS, …)
  • Cordova (HTML, CSS, …)

 

Quelle technologie choisir pour mon projet mobile ?

Pour choisir il faut prendre en compte plusieurs critères imposés par votre projet de développement mobile. Pour tenter d’y voir plus clair, voici quelques éléments à garder en tête lorsque vous aller faire votre choix.

Natif :

Les avantages du Natif :

– Look and feel du téléphone.
– Performances.

Les inconvénients du Natif :

– Développement sur 3 plateformes.
– 3 SDKs.
– 3 ergonomies.
– Maintenance de 3 plateformes.

Web :

Les avantages du Web :

– Look and feel custom.
– Standard de développement (HTML5…).
– Mutualisation du code.

Les inconvénients du Web :

– Fonctionnalités limitées (pas d’accès aux API).
– Dépendance à une connexion internet.
– Performance limitée.

Hybride :

Les avantages de l’Hybride :

– Performance (Pour certains Frameworks)
– Mutualisation des développements

Les inconvénients de l’Hybride :

– Look and feel (Pas dépendant de la plateforme)
– Performance limitée (Pour certain Framework)
– Fonctionnalités limitées (pas d’accès l’ensemble des API)
– Pas matures et peu de documentation.

A mon sens, il y a un compromis à trouver entre tous ces critères.

Conclusion

Aujourd’hui, si vous souhaitez cibler les 3 plateformes, je vous conseille la solution Native. Toutefois, il faut pour cela avoir un budget dédié à la création et à la maintenance de l’application. Vous aurez alors des applications parfaitement adaptées à chaque plateforme mais vous aurez également 3 applications à maintenir simultanément et 3 équipes de développement.
Si vous possédez un site web, vous pouvez partir sur du web mutualisé avec vos services existants (voire le même site web avec du responsive design).

Si vous n’avez pas de site, préférez un framework hybride. Les applications Hybrides sont encore un peu jeunes mais elles sont très prometteuses. Ces Frameworks ne sont pas la solution idéale au multi-plateforme, mais ils ont l’avantage de mutualiser vos développements et votre maintenance. Partir sur ces architectures est un pari, mais un pari avec lequel vous avez de bonnes chances de gagner.

 

Livre Blanc Cell'insight 5 Xamarin