Applications mobiles : développement natif ou technologie cross-platform ? On refait le match

Le 11/01/2022 Par Philippe AUBERTINkotlinmobileiosswift

On doit l’avènement des applications mobiles au tout premier Iphone sorti en 2007. Depuis, elles ont chamboulé notre quotidien.

QR code, mobilité accrue et télétravail : dans le contexte actuel, les applications mobiles sont plus que jamais utilisées, dans le cadre privé mais aussi professionnel.

De la frénésie où toutes les entreprises voulaient leur app à tout prix, sans forcément d’utilité, jusqu'à aujourd'hui : où en sommes-nous côté développement d’applications mobiles ?

Il existe deux manières de programmer une application mobile, on vous explique les avantages et inconvénients de chacune et on vous donne les nouveautés, ainsi que nos convictions !

Bonne lecture

Développer une application mobile nativement : on fait le point

Historiquement, le développement natif était la seule manière de concevoir une application mobile. Cette solution est encore très utilisée aujourd’hui, faisons le point sur les technologies.

Quoi de neuf côté iOS avec Swift ?

Au départ, le développement iOS était réalisé avec Objectif C basé sur le C, un langage assez lourd. Celui-ci a laissé place à Swift en 2013. Après une fièvre de sorties de versions majeures tous les 6 mois, la volonté d’Apple est de stabiliser le langage depuis quelques années. Conséquence : peu d’évolutions !

Aujourd’hui, on est en Swift 5.4. La version majeure date de 2019.

Les dernières évolutions sont facultatives mais notons quand même Swift UI qui a pour volonté d’unifier toutes les interfaces au sein de l’écosystème Apple : Iphone, Ipad, mac.

Quoi de neuf côté Android avec Java et Kotlin ?

Initialement, le développement d’applications mobiles sur Android était sur du Java natif, puis on est passé progressivement sur du Kotlin, né en 2016, poussé par Google et développé par JetBrain, qui sont aussi derrière Android Studio.

Kotlin est plus une surcouche de Java qu’un langage en tant que tel, mais elle simplifie grandement les choses pour les néophytes. De plus, les erreurs sont mieux gérées, ce n’est pas rien ! La syntaxe de Kotlin, qui ressemble un peu à celle de Swift, empêche de faire des nulls.

Le développement d’applications mobiles sur Java est encore très utilisé, grâce à la communauté de développeurs et aux projets open source disponibles.

Application mobile et développement cross-platform : avantages et inconvénients

Pour contourner l’onéreux multi-développement sur iOS et Android en parallèle, avec plusieurs périphériques et systèmes ciblés, le cross-platform a vu le jour. L’idée est simple : une application unique qui se déploie sur plusieurs périphériques.

Développement cross-platform : comment ça marche ?

Plusieurs types de cross-platform existent :

  • Le premier se base sur un équivalent navigateur : l’application crée des pages navigateur et les affiche
  • Le second utilise des frameworks qui creusent au plus proche du natif en créant du code Java et du code iOS pour que ça soit plus fonctionnel.

Les principaux frameworks de développement cross-platform sont les suivants :

React Native

React Native est un framework 100% JavaScript basé sur React.

Ce framework est né à l'origine chez Facebook en 2012. React Native avait pour objectif premier de moderniser et de simplifier le développement des applications Facebook Android et iOS qui se faisaient vieillissantes. Depuis, l’application Facebook a fait marche arrière mais le framework marche toujours ! Depuis 2015, il est passé open source.

Les avantages de React Native :

  • Basé sur React
  • Hot Reloading très efficace
  • Possibilité d'utiliser Expo pour un lancement et des tests quasiment instantanés
  • Une grande communauté
  • Bonnes performances
  • Beaucoup de librairies disponibles
  • Simple à apprendre si on connaît déjà React

Les inconvénients de React Native :

  • Difficile à débugger
  • Supporte un peu moins bien Android qu'IOS

Ionic

Ionic repose sur les langages de développement Angular et TypeScript, deux technologies qui, associées, forment un combo très productif !

Les avantages d’ Ionic :

  • Basé sur Angular : un framework connu, efficace et fiable
  • Multiple framworks compatibles
  • Beaucoup de documentation
  • Possibilité de migrer un composant Web Angular sur une app mobile simple (voir même une application entière)
  • Design embarqué

Les inconvénients d’ Ionic :

  • Performance limitée
  • API native parfois inaccessible (notamment sur iOS)
  • MAJ fréquente (cycle de vie limité)
  • Design assez rigide est complexe

Flutter

Le langage dont on parle régulièrement dans nos podcasts prend de plus en plus de parts de marché. Seul hic : il faut réapprendre un nouveau langage pour s’en servir !

Les avantages de Flutter :

  • Basé sur Dart
  • Excellente performance (compile en ARM natif)
  • Permet de faire du Desktop et du Browser en plus du mobile
  • Bon hot reloading
  • Sa popularité est en constante croissance depuis quelques années
  • La documentation est très agréable
  • L'UI sera exactement la même pour Android ou IOS
  • Open Source

Les inconvénients de Flutter :

  • Dart n'est pas un langage populaire, et est assez unique en son genre.
  • L'UI sera exactement la même pour Android ou IOS
  • Le framework est assez nouveau, peu manquer de maturité

Kotlin multi-platform

Le petit dernier concocté par JetBrains, encore en alpha mais prometteur pour le développement mobile et desktop. Il utilise du natif, et non un conteneur web utilisé dans une application mobile, à surveiller de près !

Une progressive web app : c’est quoi au juste ?

L’idée est d’avoir une application web installable sur un téléphone sans passer par les stores. C’est un peu l’équivalent d’un favori sur un navigateur.

Gros problème : Google et Apple n’aiment pas le fait qu’on ne passe pas par leur store et qu’on les prive de leurs commissions sur les installations et achats.

La technologie fonctionne, mais on reste bloqués par les fournisseurs avec une très forte limitation de l’accès au device : pas d’achat in-app, pas de notification… On se prive d’une bonne partie de l’intérêt d’une application mobile.

Pour une application professionnelle, c’est possible ! Si vous vous posez la question d’une PWA, on vous en dit plus en vidéo par ici.

Développement natif vs cross-platform : le match !

Performance

Disons-le directement : on peut presque tout faire avec du cross-platform, mais ça sera toujours un peu moins performant que le natif à cause de la couche d’abstraction. Ce n’est pas toujours l’objectif, mais il faut le prendre en compte !

UX

Sur ce point, Flutter et React se calent sur les packages de base d’iOS et d’Android. Les logiques UX et graphismes sont respectées, un point partout. Avec Ionic moins, car cela reste du web.

Temps de développement et coûts

80 % du coût d’une application mobile, c’est sa maintenance.

Vous vous en doutez, développer deux fois c’est plus cher. On n’ira pas jusqu’à doubler le prix de l’application mobile car il y a tout de même des éléments qui se recoupent.

Avec du cross-platform, il y aura moins de coûts d’entrée. En revanche, le coût de la maintenance sera plus élevé car il faudra maintenir presque trois stacks applicatives : cycle de vie de l’application iOS et Android et du langage intermédiaire.

Pour l’équipe de développement, c’est pareil, des spécialistes seront toujours les bienvenus pour préciser des points ou corriger des bugs.

Enfin, le cross-platform est un choix définitif. Le code ne pourra pas être transformé en natif. L’inverse est vrai mais la rétrocompatibilité est plus forte avec le même système.

À long terme, une application cross-platform peut donc se révéler plus chère. Cela va dépendre du degré de complexité de l’app !

Développement d’appli mobile : nos conseils de codeurs

Comment choisir entre natif et cross-platform ?

Pour une application complexe et des fonctionnalités poussées, si vous avez les moyens, nous vous conseillons le développement natif pour garantir une stabilité sur le long terme.

Pour une application standard et des fonctionnalités classiques, le cross-platform fait sens pour éviter d’avoir deux applications.

Quelle évolution pour le développement d'applications mobiles ?

Nos convictions chez AXOPEN :

  • On aura toujours du natif, tant que les deux géants ne voudront pas le contraire
  • L’effet parc va continuer à peser : plus les technos sont utilisées dans le temps, plus il est difficile de les changer
  • Les applications mobiles vont être moins nombreuses au profit du web devenu responsive
  • La maintenance et l’évolution des applications existantes vont devenir les principaux projets IT mobile

Vous l’avez compris : avec toutes les options disponibles, faire une application mobile, ça ne s’improvise pas ! Si vous souhaitez en discuter, on sera ravis d’échanger avec vous en tant qu’agence développement mobile, pour nous contacter, c’est par ici !

Sommaire

  • fleche vers la droite Développer une application mobile nativement : on fait le point
  •         fleche vers la droite Quoi de neuf côté iOS avec Swift ?
  •         fleche vers la droite Quoi de neuf côté Android avec Java et Kotlin ?
  • fleche vers la droite Application mobile et développement cross-platform : avantages et inconvénients
  •         fleche vers la droite Développement cross-platform : comment ça marche ?
  • fleche vers la droite Une progressive web app : c’est quoi au juste ?
  • fleche vers la droite Développement natif vs cross-platform : le match !
  •         fleche vers la droite Performance
  •         fleche vers la droite UX
  •         fleche vers la droite Temps de développement et coûts
  • fleche vers la droite Développement d’appli mobile : nos conseils de codeurs
  •         fleche vers la droite Comment choisir entre natif et cross-platform ?
  •         fleche vers la droite Quelle évolution pour le développement d'applications mobiles ?

À voir aussi

Tous les articles