iOS et Android. • Plusieurs frameworks ont tenté de relever le défi : ◦ PhoneGap : l’un des premiers (HTML5, CSS3, JavaScript). ▪ Arrêté en 2020. • Apache Cordova : fork open source de PhoneGap. • Ionic : basé sur Angular, React ou Vue. • Appcelerator Titanium : SDK en JavaScript pour iOS, Android, Windows, Blackberry. ◦ Abandonné en 2022, puis open-sourcé.
web pour afficher : des contrôles natifs, ou des imitations de contrôles natifs. • Problèmes rencontrés : ◦ Communication lente entre JavaScript et le code natif. ◦ Besoin de mises à jour fréquentes à chaque changement du système d’exploitation.
basé sur le runtime .NET. ◦ Compilation native sur iOS → plus rapide qu’Android (JIT). ◦ Support arrêté le 1er mai 2024, remplacé par .NET MAUI. • React Native (Facebook) ◦ Basé sur React et JavaScript. ◦ Souffre également d’un pont lent entre le code natif et le web. • Flutter (Google) ◦ Fonctionne sur toutes les plateformes. ◦ Permet d’écrire presque toute l’interface utilisateur une seule fois. ◦ Écrit en Dart, un langage peu connu.
et desktop. Rendu rapide grâce à son moteur graphique. ⚠ Inconvénients : • Certaines UI doivent rester spécifiques (ex. : pas de toolbar sur desktop/web). • Dart n’est pas encore très populaire. • null safety récente. • Plusieurs packages exigent une génération manuelle de code.
null safety pour éviter les erreurs de nul pointer. • Offre des fonctionnalités puissantes : ◦ Data Class et Sealed Class ◦ Fonctions d’extension. • Chargement paresseux (lazy loading) des variables. • Le langage par défaut pour le développement depuis 2019
la librairie Ktor. • Intègre la null safety pour éviter les erreurs de nul pointer. • Offre des fonctionnalités puissantes : ◦ Data Class et Sealed Class ◦ Fonctions d’extension. • Chargement paresseux (lazy loading) des variables. • Le langage par défaut pour le développement depuis 2019
la JVM (Android, Desktop Java…). • Pour les plateformes sans JVM : utilisation de Kotlin/Native. • Kotlin se compile pour : ◦ JVM, natif (iOS, desktop) et web. • Permet d’écrire une logique métier commune : ◦ Comportement identique sur toutes les plateformes. ◦ Moins de tests et de risques d’erreurs. ◦ Développement plus rapide. • Chaque équipe choisit quoi partager.
natifs. • Permet de partager la logique commune entre les plateformes : ◦ Modèles de données ◦ Contrôleurs ◦ Logique métier • Réduit la duplication de code tout en conservant : ◦ L’expérience utilisateur propre à chaque plateforme. ◦ Les intégrations natives (UI, API système).
l’application. • La bibliothèque standard est minimale, seules les parties utilisées sont incluses. • De nombreuses applications sur les stores utilisent déjà KMP. • Résultat : ◦ Gain de temps pour les équipes. ◦ UI native → expérience fluide et rapide pour l’utilisateur
iOS ont souvent : ◦ Les mêmes spécifications, mais deux codes différents. • Problème : divergences possibles dans le comportement. • Avec KMP : ◦ Une seule codebase pour la logique métier. ◦ Tests unifiés et cohérence totale entre plateformes. • Collaboration renforcée entre les équipes.
petite ou grande échelle. • Pour une app existante : ◦ Utiliser KMP sur de nouvelles fonctionnalités. ◦ Remplacer progressivement la logique métier. • Exemples d’utilisation : ◦ SQLDelight pour gérer la base de données partagée. ◦ Logique d’accès réseau commune à toutes les plateformes.