Développer une seule fois les applications mobiles à la fois pour iOS et Android : Flutter, Unity, des technologies montantes
Avis d’expert de David Hervé, Directeur du Pôle Applications Mobiles Connectées du Groupe IT Link.
Finis les doubles développements pour iOS et Android, les applications disponibles d’abord sur iPhone puis Android ou l’inverse. Les technologies cross-plateformes abolissent cette contrainte et deviennent incontournables.
Flutter : simple, efficace, open source, avec une communauté dynamique
Framework open source UI développée par Google, Flutter vient challenger les technologies natives que sont Kotlin (Android) ou Swift (iOS).
Flutter est capable de mutualiser 90% voire l’intégralité du code pour générer des applications natives pour iOS, Android, des sites web et des applications de bureau pour macOS, Windows et Linux, avec des performances très proches de celles des langages natifs (logique de l’app, UI moderne et fluide).
Il est facile d’intégrer les spécificités de chaque OS en Flutter et les bonnes pratiques d’expérience client sont respectées pour chacun.
Pour finir, Flutter dispose d’une grande communauté de développeurs. Plus de 6 millions de développeurs ont publié plus d’1,1 million d’applications en 2023. Flutter est notamment dans le top 3 des contributions des projets OpenSource sur GitHub3 — un statut qui permet à la technologie de vivre, d’être facile d’accès et d’utilisation (grâce à une suite d’outils moderne et fluide, comme hot reload). De plus, Google a une solide expertise pour l’intégration rapide des services (Firebase, Analytics, etc.) dans la documentation et la conduite du changement.
Une technologie comme Flutter permet de gagner 30 % de temps de développement et de maintenance par rapport au développement de deux applications en natif. Une seule technologie est nécessaire pour déployer sur 2 cibles, ce qui ne mobilise qu’une seule équipe de développement : la production est plus efficace, plus rapide, plus simple.
Unity, l’atout performance pour la 3D et la VR
Unity, technologie présentée en 2005 à l’Apple Worldwide Developers Conference s’est rapidement imposée pour les applications interactives 3D, en réalité virtuelle ou réalité augmentée, qui demandent une technologie spécifique, polyvalence et performance.
Également cross-plateforme, Unity est l’un des choix préférés des développeurs de jeux. Elle fédère autour d’elle une grande communauté très collaborative : un grand nombre de ressources d’apprentissage et des plateformes d’entraide sont disponibles pour accompagner les débutants comme les expérimentés.
Unity convient particulièrement pour des applications de type « serious game ».
Pour une application plus « classique » en 2D, il vaut mieux se tourner vers une technologie native ou cross-plateforme car Unity implique plus de complexités, des temps de développement plus longs ainsi que des compétences plus rares sur le marché or il ne faut pas oublier de penser long terme : une application doit vivre, être corrigée et mise à jour régulièrement.
Maintenir les applications développées pour iOS et Android ou redévelopper avec une technologie cross-plateforme ?
La question se pose lorsqu’il s’agit de faire évoluer d’anciennes applications. Parfois, l’audit des codes natifs met en exergue de nombreux problèmes :
- L’application Android utilise un langage obsolète : une mise à niveau est à prévoir
- Un problème d’architecture est détecté : la maintenance de l’application est complexe
- Le comportement des deux applications n’est pas équivalent : elles n’intègrent pas les mêmes fonctionnalités
Une reprise du code est possible, mais risque d’être onéreuse sur le long terme. Afin de permettre une meilleure maintenabilité et aussi réduire les coûts, une refonte complète de l’application avec une technologie cross-plateforme est à envisager.
Par exemple, si le Bluetooth est la fonctionnalité critique de l’application, un PoC (Proof-of-Concept) peut être développé en Flutter afin de s’assurer que les performances sont a minima conservées.
Flutter peut rendre équivalente l’expérience d’utilisation entre les deux plateformes iOS et Android, régler les problèmes d’implémentations de la version native Android et stabiliser la connexion.
Notre avis : Flutter est une plateforme de développement complète (desktop, web, mobile) qui permet de créer des interfaces et le core code avec une promesse de partager le code sur toutes les platesformes, la partie interface est par contre plus spécifique à chaque plateforme. Une des difficultés de Flutter est la maîtrise du langage : DART. Et les coupes récentes dans les équipes Flutter suscitent des inquiétudes.