Retour de veille sur Kotlin / Flutter et ReactNative

Posté le 3 septembre 2021 - Concentré du Web - Par Grafikart - Proposer une correction

Aujourd'hui je vous propose de partager les résultats d'une petite veille que j'ai pu faire sur le développement d'application mobile. Afin de mieux comprendre certains outils j'ai décidé d'essayer de créer une même application avec différents outil afin de les comparer. J'ai décidé pour cette session de tester 3 approches différentes :

  • Développement natif avec Android & Kotlin
  • Développement avec Flutter
  • Développement avec React Native

13:38 Mon avis sur kotlin
15:43 Flutter
27:34 Mon avis sur Flutter
30:52 React Native
38:00 Avis React Native
41:00 Ressentit final

Vous pouvez retrouver les lives de mes expérimentations sur la chaine secondaire.

Développement natif Android avec Kotlin

Kotlin est un langage de programmation orienté objet et fonctionnel, avec un typage statique qui peut être compilé pour la machine virtuelle Java et qui est aujourd'hui considéré comme le langage recommandé pour le développement d'application Android. Le langage s'apprend relativement rapidement (la syntaxe est assez familière) et la documentation dispose d'une très bonne série de contenu qui permet d'apprendre progressivement les bases du développement android.

Les plus

  • Une très bonne documentation
  • Interopérable avec Java et son écosystème
  • Des patterns bien définis pour structurer le code
  • Très bonne expérience de développement avec Android Studio

Les moins

  • On ne cible qu'une seule plateforme
  • Composer des vues peut s'avérer complexe (A voir avec jetpack compose)
  • Il faut recompiler pour voir les changements
  • Des erreurs parfois difficiles à deboguer (dans le cas d'une erreur dans le XML par exemple)
  • Verbeux

Développement cross-platform avec Flutter

Flutter est une technologie qui permet de développer des application cross-platform avec un seul et même code. Il se repose sur le langage Dart, qui est un langage de programmation orienté objet avec un typage statique qui peut être utilisé avec une compilation just-in-time (JIT) pendant le développement et ahead-of-time (AOT) pour la production.
Pour le rendu, Flutter utilise son propre moteur et ne se repose pas sur les composants natifs.

Les plus

  • Une interface unique quelque soit la plateforme
  • Le rechargement à chaud
  • De nombreux composants offerts par défaut
  • Un fonctionnement simple (découpage en composant)

Les moins

  • La syntaxe n'est pas très lisible pour déclarer les vues
  • Le système de navigation n'est pas clair
  • Les performances du moteur de rendu peuvent être inconsistentes et difficile à déboguer.

React Native

Reat native permet d'utiliser la librairie React pour développer des applications natives. Le code ne va pas être compilé en natif mais sera éxécuté par un moteur JavaScript qui communiquera avec la couche native pour générer l'interface..

Les plus

  • Facile à prendre en main si on connait react
  • Un écosystème bien fourni

Les moins

  • Il faudra chercher des librairies tiers très rapidement
  • Toujours pas en version 1.0
  • Il faudra faire attention aux performances
  • Certains composants n'ont pas la même apparence suivant les plateformes

Conclusion

Au delà des retours sur les différentes approches l'important est ici de vous montrer comment se passe la veille et comment on peut rapidement explorer les spécificités de certaines technologies pour se faire une idée de leur fonctionnement. Ce travail de veille est important car il permet de comprendre les besoins auxquelles ces technologies répondent et quant leur utilisation est optimale.

  • Kotlin, si on ne cible qu'Android et que l'on veut utiliser les éléments natifs.
  • Flutter, si on veut une interface cross-platform identique et si on utilise Material Design.
  • React native, si on connait déjà React.