Vous êtes actuellement en train de travailler sur votre projet d’application mobile et vous vous demandez peut-être si vous avez choisi la bonne technologie pour votre App ? Il y a actuellement tellement de technologies sur le marché, ne soyez pas étonné de vous sentir un peu perdu.

 

Comment trouver la technologie adaptée à mon projet mobile ?

Lorsque l’on fait l’état actuel du marché, on se rend très vite compte de la multiplicité des solutions à notre disposition, sans compter les nouvelles technologies qui font le buzz. À l’heure où j’écris cet article, ce sont Flutter et les PWA .

Devez-vous suivre ces nouvelles tendances ? C’est une autre question.

Avec John Thiriet nous avons eu l’occasion d’animer une matinale sur le sujet et sur les problématiques suivantes :

  • La mobilité en entreprise
  • Le multi-plateforme
  • L’Intelligence Artificielle et la Data
  • L’UX et l’UI pour une application mobile
  • Le Cloud Mobile
  • DevOps dans un projet mobile
  • La Sécurité de vos applications

Cette présentation avait pour objectif de transmettre les bonnes pratiques permettant à tout décisionnaire ou gestionnaire de projet mobile, d’effectuer des choix éclairés. De plus, nous avons créé pour cette occasion une infographie sous forme d’arbre décisionnel permettant en un coup d’œil de savoir quelle technologie envisager en fonction de son besoin.

 

Présentation des différentes technologies pour créer une App

Il y a de cela quelques années, nous avions déjà travaillé sur un référencement des différentes solutions pour créer une Mobile Apps. Aujourd’hui le marché a bien changé, voici donc ce qu’il faut savoir.

 

iOS Natif avec Swift

Swift est un langage de programmation puissant et intuitif essentiellement utilisé pour MacOS, iOS, watchOS et tvOS. L’écriture de code Swift est interactive et amusante, la syntaxe est concise, mais expressive, et Swift inclut des fonctionnalités modernes. Le code Swift est, de par sa conception, sûr. Autre point intéressant, il permet de produire une solution qui fonctionne rapidement.

Coder nativement avec Swift c’est s’assurer d’obtenir les meilleures performances possible pour son application, mais seulement sur les plateformes ciblées par se language. C’est un langage récent qui va continuer de s’améliorer. La compatibilité des versions majeures est maintenant supportée. Une des prochaines nouveautés de Swift 5 sera la stabilité ABI (Application Binary Interface) qui permettra aux développeurs de proposer des apps un petit peu plus légères et surtout plus pérennes.

 

Objective-C

Objective-C était le langage de programmation principal utilisé pour le développement des applications OS X et iOS. Objective-C hérite de la syntaxe, des types primitifs et des instructions de contrôle de flux de C et ajoute une syntaxe pour définir les classes et les méthodes. Il ajoute également un support pour la gestion des graphes d’objets et des littéraux d’objets tout en fournissant un typage dynamique et une liaison, en reportant de nombreuses responsabilités jusqu’à l’exécution.

Même si Objective-C a été choisie par Apple comme langage principal, celui-ci ne le sera plus dans quelques années. Une meilleure approche a été choisie avec Swift qui commence à remplacer ce langage.

 

Android Natif

 

Kotlin est maintenant le langage officiel sur Android. Ce langage est expressif, concis et puissant. Mieux encore, il est interopérable avec l’environnement d’exploitation Android. Tout comme Android, Kotlin est un projet open source sous Apache 2.0. Le choix de Kotlin réaffirme l’engagement de Google envers son écosystème de développeurs.

Coder nativement sur Android vous procurera les meilleures performances possibles, mais seulement sur les plateformes supportées.

 

Unity

Unity Home Page

Bien plus qu’un simple moteur, Unity vous fournit tout ce dont vous avez besoin pour créer des jeux mobiles à succès. Unity vous permet de développer votre activité en vous permettant de concevoir des contenus de qualité et d’obtenir l’aide d’une communauté dynamique. L’éditeur permet de réaliser rapidement et facilement des prototypes et prend en charge votre pipeline avec des outils intégrés pour l’animation, les systèmes de particules, le mixage audio et le support des outils tiers.

Il est également entièrement extensible, pour vous permettre de répondre à vos besoins de production spécifiques. Unity prend en charge iOS Metal et Vulkan pour vous permettre d’offrir des graphismes natifs haute-performance sur mobile.

 

Unity

 

Xamarin

xamarin-background

Xamarin était un éditeur de logiciel, fondé par Miguel de Icaza (son twitter) en 2011. Acquise par Microsoft en 2016, son nom reste celui de la suite d’outils logiciels permettant aux développeur de créer des applications mobiles multiplateformes. Les applications peuvent avoir toutes les fonctionnalités natives sans aucune restriction et également partager une base de code commune en même temps.

Comment cela fonctionne-t-il ? Au niveau le plus bas, Xamarin expose en C# tout le SDK Android et iOS existant afin que vous puissiez coder dans un seul langage. Cette exposition est obtenue grâce à un mécanisme de Binding automatique qui permet à Xamarin d’être toujours à jour lors des évolutions d’Android et iOS.

Xamarin permet au final la création d’applications de même qualité et tout aussi performantes que les applications créées nativement.

 

Xamarin Forms

xamarin-forms-background

Xamarin.Forms est une surcouche multiplatesformes de l’interface utilisateur, qui permet aux développeurs de partager le code graphique entre Android, iOS, macOS, Linux, et Windows avec UWP. Ces interfaces utilisent ensuite les contrôles natifs des plateformes ciblées. Elles ont donc l’apparence des applications créées nativement tout en ayant une excellente réactivité.

Microsoft travaille constamment à l’amélioration de Xamarin.Forms. Ces améliorations successives et rapides permettent de gagner encore plus de temps lors du développement d’une application. L’interface utilisateur est souvent difficile à faire et nécessite d’y passer un temps conséquent pour réaliser quelque chose de qualité. Xamarin.Forms allège fortement cette charge.

Malgré tout ces avantages, Xamarin.Forms n’est cependant pas une solution miracle. Il n’exprime pas pleinement toutes ses capacités sur tout les projets. Il conviendra donc de bien évaluer son intérêt sur un projet donné.

 

PWA (Progressive Web App)

Les PWA ont été introduites en 2015. Parce qu’elles sont plus légères qu’une application mobile ordinaire, elles ont d’abord décollé dans les marchés émergents qui souffrent d’un manque d’infrastructure Internet. Maintenant, elles suscitent un intérêt général. Des centaines de spécialistes du marketing mondial les utilisent pour créer des expériences utilisateur mobiles plus homogènes. Les PWA permettent d’offrir des expériences applicatives en utilisant le Web. Les consommateurs n’ont pas besoin de trouver ces applications dans les Stores et de les installer. Elles peuvent accéder à ces dernières à partir de n’importe quel navigateur, Chrome, Safari…

Les PWA sont très bien pris en charge avec Chrome sur les appareils Android, mais beaucoup moins sur les appareils sous iOS. Beaucoup de fonctionnalités telles que les Pushs Notifications, la gestion complète des WebManifest ne sont pas disponibles et ne seront peut-être jamais disponibles. Concernant Windows, le comportement des PWA sur Desktop n’en est qu’à c’est débuts et doit pour l’instant passer obligatoirement sur les Store.

Google a mis en ligne toute une liste à rectifier pour rendre les PWA acceptables : Progressive Web App Checklist

 

React Native

React Native est, comme son nom l’indique, un framework basé sur le populaire React.JS. Il reprend les mêmes principes et les applique au développement mobile natif. Comme son grand-frère, il a une approche orientée composants et états. Lorsqu’un état est mis à jour, la vue se met à jour.

L’utilisation de JavaScript comme langage principal lui a permis de rapidement séduire les développeurs web et de mettre en place le Live-Reload. Le LiveReload est un mode de développement qui envoie chaque modification au mobile sans compilation faisant gagner du temps aux développeurs lors de la conception des interfaces graphiques. C’est un concept auquel les développeurs web sont familiers et attachés.

L’utilisation de fonctionnalité native nécessite l’ajout de plugins, lesquels sont développés dans les langages natifs de chaque plateforme : Objective-C et Java. C’est ici que le bat blesse car, la cible principale de ReactNative est le développeurs Web lesquels n’ont souvent que très peu, voire aucune expérience dans ces technologies natives. De même l’écosystème mobile et ses règles sont fondamentalement différentes du web, nécessitant un temps certains d’adaptation ou la présence de compétences mobiles natives dans les équipes.

Flutter

Flutter

 

Comme React Native, Flutter fourni également des vues de style réactives. Flutter adopte une approche différente pour éviter les problèmes de performances causés par la nécessité d’un pont JavaScript en utilisant un langage de programmation compilé, à savoir Dart. Dart est compilé “à l’avance” (AOT) en code natif pour plusieurs plateformes et communique avec ces dernières sans passer par un pont JavaScript. Ces caractéristiques permettent d’obtenir de très bonnes performances.

Tout ce que Flutter requiert de la plateforme est un canevas dans lequel il va dessiner son interface graphique et accéder aux événements (touch…) et aux services (emplacement, caméra, etc.). Pour ce faire, Flutter utilise le moteur Skia (Moteur graphique de Chrome). Enfin, l’une des caractéristiques les plus populaires de Flutter est son rechargement rapide et dynamique et son support du Live Reload, fonctionnalité très appréciée par les développeurs.

 

Arbre de décision : quelle technologie pour créer une application mobile

Maintenant que vous avez un petit aperçu sur certaines technologies pour faire des applications, je vous laisse télécharger l’arbre de décision mobile que nous avons créé avec John Thiriet.

Il vous permettra de vous guider ou de vous rassurer sur votre choix technologique.

N’hésitez pas à revenir vers nous pour plus de conseils !

arbre décisionnel