Application hybride ou cross-plateforme : quelle technologie choisir ?

lignes de code

Chez Mobizel, nous développons des applications mobiles depuis 2010, et en 10 ans les technologies ont beaucoup bougé ! Notre défi a toujours été de concevoir la meilleure expérience utilisateur possible pour tous les projets. Un des challenges est le choix de la meilleure technologie de développement pour chaque projet et chaque époque, tout en respectant la règle d’or : la qualité n’est pas négociable.

Application « hybride » versus application native

La recommandation numéro 1 des plateformes (Apple, Google, et avant Microsoft ou BlackBerry…) a toujours été d’utiliser leurs solutions propres, c’est à dire leur langage de programmation, leur SDK, leurs outils de développement… En suivant régulièrement les évènements majeurs pour développeurs mobiles (Apple WWDC, Google I/O…), on voit bien que le message ne change pas, et c’est aussi notre recommandation. Si vous en avez la possibilité, le développement natif est toujours à privilégier car il sera le plus pérenne. 

Ces solutions propres à chaque OS sont bien sûr incompatibles entre elles, ce qui nécessite un développement spécifique pour iOS et un autre pour Android, et précédemment un troisième pour Window. Sont apparues progressivement différentes solutions – appelées le plus souvent « hybrides » ou parfois « cross-plateformes » – pour éviter de multiplier les développements plateforme par plateforme (PhoneGap, Ionic, Titanium, Xamarin, NativeScript, ReactNative…). Pendant longtemps, toutes les solutions que nous avons testées ne nous permettaient pas de garantir un résultat de qualité (expérience utilisateur, rapidité, fiabilité, évolutivité…). Donc, si vous souhaitiez une application pour iOS et Android de bonne qualité, nous avons jusqu’à présent toujours conseillé  2 développements spécifiques. Mais en 2020, où en sommes-nous concernant les développements cross-plateforme ? 

Les technologies et langages cross-plateforme

Hybride : PhoneGap, Cordova, Sencha, Ionic

Il s’agit de langage HTML et Javascript.

Avantages : adapté aux équipes ayant principalement des compétences web (mêmes langages)

InconvénientsFonctionne sur la base d’un navigateur internet embarqué dans l’application. Parfois très lent et présente souvent de nombreux problèmes de stabilité et de fiabilité avec de nombreuses fonctionnalités avancées du terminal mobile. Le diagnostic est souvent rendu compliqué du fait des surcouches logicielles.

Notre avis : Nous déconseillons fortement ces approches.

Natif et cross-plateforme : Titanium, Xamarin, NativeScript, React Native

On parle aussi de développement natif généré, avec Titanium (Appcelerator, depuis 2009) et Xamarin(Microsoft, depuis 2011) pour les plus anciennes, puis récemment NativeScript(Telerik depuis 2014) et React Native(Facebook, depuis 2015).

Avantages : un seul code pour les 2 plateformes et des performances bien meilleures que les solutions à base de navigateur internet (hybrides).

Inconvénients : le choix de la technologie est stratégique car il engage le projet sur la durée alors que la stabilité du code et la reprise par un autre développeur peuvent être complexes pour l’évolution du projet.

Notre avis : Bien que ces technologies soient intéressantes, elles manquent de stabilité et de pérennité. Nous ne conseillons pas d’investir sur ces technologies, suite à nos expérimentations et celles d’autres plateformes, comme Airbnb qui a fait marche arrière sur React Native.

Natif et multi-Platform : Futter

Flutter est la technologie multi-plateforme annoncée par Google en 2015 et introduite en mai 2017.

Avantages : un seul code pour les 2 plateformes, des performances égales au développement natif et une adoption très rapide du marché.

Inconvénients : c’est une technologie récente (version 1.0 stable en novembre 2018, 1.2 en mars 2019), sur laquelle nous avons moins de recul que sur les autres technologies.

Notre avis : Flutter offre un rendu et des performances de qualité en proposant un fonctionnement différent des technologies précédentes. 

Flutter : la petite révolution du multi-plateforme ?

Flutter propose une nouvelle alternative en repensant entièrement son approche, dans le but de résoudre les limites de ses prédécesseurs : une approche qui est appelée « multi-platforme ». Elle se démarque des solutions cross-platforme par une approche différente sur les aspects spécifiques aux plateformes :

  • cross-platforme : accès de base prévu au « plus petit dénominateur commun » entre les 2 plateformes (on réduit les possibilités)
  • multi-platforme : accès de base à toutes les fonctionnalités spécifiques (pas de compromis).

En d’autres termes, le multi-plateforme se débarrasse de la surcouche qui lisse les différences entre les 2 plateformes. Flutter ne cherche pas à tout prix l’exhaustivité qui nécessite des compromis parfois décevants, mais s’appuie sur les fonctionnalités proposées par chacun des OS.

En conclusion, Flutter bénéficie d’avantages que nous n’avions jusqu’alors jamais rencontrés pour des technologies non natives :

Au regard de tous ces éléments et après avoir poussé Flutter dans les retranchements que nous connaissions des technologies qui la précédaient, nous pouvons conclure à une solution fiable, d’avenir et économiquement avantageuse pour des applications mobiles iOS et Android de qualité. Il apparaît de plus en plus probable que les développements cross/multi-plateformes vont se généraliser en Flutter aux dépens des autres technologies non-natives.

Quelques sources pour poursuivre votre lecture :