Blog
Blog
Blog
Blog
Bien choisir son application en 2021: React, flutter, Java ou ionic ?

A travers nos articles, notre mission est de vous éclairer autour de nos savoir-faire en web et nos connaissances du digital. Raconter nos métiers nous semble être un bon moyen de partager notre passion avec vous. Que vous soyez novice ou expert du web, que vous soyez web friendly ou webophobe, notre ambition est d'intéresser le plus grand nombre et d'apporter des réponses dans chacun de nos articles.

30 octobre 2020 separateur 971 Vues separateur 7.30 MIN DE LECTURE
Bien choisir son application en 2021: React, flutter, Java ou ionic ?

Vous souhaitez développer votre application mais ne savez pas quelle technologie choisir ? Cet article devrait vous guider. En effet, le développement d’une application est plus coûteux qu’un site web, c’est pourquoi il est nécessaire de bien se renseigner en amont et d’élargir son champ de connaissances quant aux différentes technologies, telles que react, flutter, java et ionic. A savoir qu’il existe plusieurs types de développement d'applications tels que le natif, l’hybride et le multiplateforme.

Java, le natif pour Android

Java est très répandu, il n’est pas difficile de trouver des développeurs. Très performant et hautement sécurisé, il est largement utilisé dans les secteurs de la finance. Développer son application avec Java implique de la rendre disponible uniquement sur Android, si l’on veut que notre application soit disponible aussi sur iOS, il faut alors la développer une deuxième fois, avec une technologie différente (Swift par exemple). Ainsi, le temps et le coût de développement sont assez importants.

Les quelques bases de Java à connaître

Java a été créée en 1995, c’est le développement natif pour Android, son équivalent pour iOS est Swift. Avant toute chose, il est bon de rappeler que Java et Javascript ne sont pas à confondre, bien qu’ils soient tous deux des langages de programmation. L’une de leurs principales différences est que Java permet de créer des applications qui sont exécutées sur une machine ou un navigateur virtuel tandis que le code JavaScript est exécuté uniquement sur un navigateur. Ainsi, la technologie Java est à la base de la plupart des applications en réseau ; elle est exploitée dans le monde entier pour développer et fournir des applications mobiles et imbriquées, des jeux, du contenu Web et des logiciels d'entreprise. Le java dispose d’API (Interface de programmation qui permet à des applications de communiquer entre elles et de s'échanger mutuellement des services ou des données) très pratiques telles que la manipulation de chaîne, d’image/sprite etc. A savoir, Java est beaucoup utilisé dans le secteur de la finance (Fintech).

Avantages & inconvénients de Java

Java bénéficie d’une grande robustesse c’est-à-dire que son langage est fortement typé, sa mémoire et ses erreurs sont gérées automatiquement. C’est un langage tout objet, à l’exception des types primitifs, sa portabilité est exemplaire car aucune compilation n’est nécessaire : une fois le code Java compilé, son exécution sans erreurs ne dépend que de la JVM8 (Java Virtual Machine : environnement d'exécution pour applications Java). Ce langage de programmation est aussi avantageux en termes de gestion de la sécurité, de sa forte capacité d’intégration aux environnements web et de sa facilité d’écriture d’interfaces graphiques professionnelles. Ses inconvénients résident principalement dans deux points : il y a une certaine difficulté d’accès aux ressources matérielles et sa vitesse d'exécution est généralement inférieure à un langage compilé en natif. En effet, cette technologie étant à la fois un langage compilé et interprété, Java nécessite un interprète pour devenir exécutable et c’est ce besoin d’être constamment traduit qui induit un chargement plus long.

Pourquoi utiliser Java ?

Très performant, Java compte 9 millions de développeurs dans le monde, 97% des bureaux d’entreprise exécutent Java, c’est la plate-forme de développement n°1, 3 milliards de téléphones mobiles exécutent Java. Ces quelques données nous montrent bien que Java est très connu et utilisé dans le monde. Il est intéressant d’utiliser Java pour une application puissante et efficace pour les portables, processeurs à distance, microcontrôleurs, modules sans fil, capteurs, passerelles, produits de consommation et tous les autres types de dispositif électronique. Aussi, utiliser Java est pertinent dans le cas où l’on veut combiner des applications ou services basés sur le langage Java pour en créer des plus personnalisés. Pour développer notamment des applications côté serveur pour des forums, des magasins et des sondages en ligne, pour le traitement de formulaires HTML, le langage Java se révèle très performant, tout en utilisant l’intégralité des capacités d’Android

Java est donc plutôt une technologie traditionnelle, très répandue, ultra performante et de type native : exclusivement pour des applications sur Android.  Par exemple, NASA WorldWind utilise Java, tout comme Minecraft, la NSA Ghidra ou encore Wikipédia. 

Voyons maintenant une technologie assez récente correspondant à un type de développement hybride.

Ionic, pour un développement hybride

Une application sous Ionic est rapide à développer car un seul code est nécessaire pour être disponible à la fois sur iOS et Android. Qui dit développement rapide dit coût attractif et il n’est pas difficile de trouver des développeurs Ionic. Seulement, ses performances sont limitées : Ionic supporte moins bien les applications d’une certaine ampleur et l’accès aux fonctions natives est plus difficile.

Présentation d’une technologie intéressante : Ionic

L’application faite par ionic sera déployable sous Android et iOS car c’est une technologie de développement hybride. Ionic est un framework open-source créé en 2013 qui est en réalité un mélange d’outils et de technologies permettant de développer des applications mobiles hybrides rapidement et facilement. Ionic c'est d'abord Apache Cordova et ses nombreux plugins natifs, Angular de Google, NodeJS et bien d'autres technologies Open Source qui ont fait leur preuve depuis des années et continuent de croître de façon exponentielle. Ionic a donc des fondations solides. 

Les avantages de Ionic

Tout d’abord, Ionic bénéficie d’une large communauté de développeurs enthousiastes prêts à aider en cas de conflit de code. Une documentation très riche, claire et simple à prendre en main est aussi disponible. Ensuite, le fait d’être une technologie pour un type de développement hybride, cela implique qu’une seule base de code est nécessaire donc il y a de nombreux avantages. En effet, les coûts de développement sont réduits, la maintenance est facilitée par les instruments intégrés tout comme les outils de débogage, la mise sur le marché sur iOS et Android est rapide et il y a la possibilité de transformer l’application Ionic en une application de bureau ou PWA.

Les limites de Ionic

Ionic se positionne moins bien sur des applications “lourdes”, sa performance est limitée. Une application est dite lourde lorsqu’elle nécessite par exemple de la réalité augmentée, des rendus 3D ou des jeux : si elle est faite avec Ionic, l’application sera lente et le rendu insatisfaisant. Ainsi, en termes de performances, choisir Ionic pour des applications nécessitant une utilisation intensive du matériel téléphonique n'est pas une bonne idée. Par ailleurs, construire une application avec Ionic implique d’utiliser des plug-ins pour accéder aux fonctionnalités natives (iOS et Android), et il y a certains cas où le plugin ou module peuvent ne pas exister. Cela arrive dans le cas où l’on aurait besoin de fonctionnalités spécifiques ou d’accès à un matériel non standard. Il faudra alors développer soi-même le plug-in, ce qui prend du temps et augmente le coût de développement.  

Après avoir explicité deux technologies chacune pour deux types de développement différents à savoir natif et hybride, voyons désormais une technologie particulière.

React, la combinaison du natif et de l’hybride

React permet de développer une application avec un code à 80% identique pour les deux plateformes iOS et Android, seul 20% du code est à adapter spécifiquement pour chacune d’elles. Le temps de développement est donc inférieur à un développement natif, ce qui en réduit le coût. React est reconnu comme très performant notamment en termes de fonctionnalités, d’affichage et de maintenance. Les développeurs React se font de plus en plus nombreux, avec ainsi un coût plus attractif.

React : 2 systèmes d’exploitation pour 1 code

React native est un framework javascript qui a été développé par Facebook en 2015 et est utilisé par un large panel d'applications réputées telles que Leboncoin, Instagram, Pinterest, Skype, Uber, Tesla etc. Sa popularité s’explique en partie grâce à sa combinaison de l’hybride et du natif. En effet, React native est totalement optimisée à chaque plateforme (native) tout en ayant une grande partie de son code mutualisé (hybride). React part d’un langage du web en utilisant les vues d’Android et d’iOS. Ceci a l’avantage de n’avoir qu’un seul et même code à développer pour iOS et Android. Le temps et le coût sont ainsi divisés par deux, une seule maintenance est nécessaire et React permet une agilité considérable grâce à ce qu’on appelle l’hot-reload (modification en temps réel).

React, une jeune technologie

React répond donc aux exigences d’une application visant à exister sur iOS et Android, avec un temps et un coût très compétitifs. Cette combinaison semble être la solution parfaite, ce n’est donc pas le seul sur ce marché.

Le fait que React soit un jeune framework, la communauté d’entraide est restreinte et les documentations se font plus rares. Il se peut donc que le code ait encore quelques particularités méconnues des développeurs qui doivent consacrer un peu de temps à la recherche lorsque le conflit n’est pas documenté. Pour conclure, React est exemplaire en matière d’adaptabilité, de maintenance, d’optimisation et d’agilité tout en ayant sa légère part d’ombre dû à sa récence.

Flutter, un framework multiplateforme

Flutter permet de développer une application en une seule fois, disponible sur deux plateformes : iOS et Android. Le temps de développement est donc moindre, reste cependant à trouver un développeur Flutter, ce qui n’est pas si simple car ils sont rares et coûtent donc plus cher. Aussi, si vous comptez miser beaucoup sur l’ASO (App Store Optimisation : référencement de l’application), Flutter n’est pas l’idéal pour son optimisation. Enfin, Flutter montre de belles performances, ce qui fait de lui un framework prometteur. A savoir, Flutter est utilisé notamment par Google, Alibaba, Groupon, Ebay, BMW.

Flutter, nouveau sur un marché en vogue

Flutter est le framework développé par Google fin 2018, c’est le plus récent de tous. Il permet de concevoir des applications multiplateforme pour Android et iOS. Le gros avantage de Flutter réside dans sa capacité à concevoir des applications natives multiplateforme pour Android et iOS (Windows/Mac/Linux sont également supportés). Au même titre que React, Flutter permet de concevoir des applications utilisant les fonctionnalités natives des systèmes d’exploitation, en utilisant un même code source. Le fonctionnement est d’ailleurs assez impressionnant. Toutefois, son arrivée récente sur le marché des framework multiplateforme implique de se démarquer de son principal concurrent React Native, qui lui a déjà su s’imposer sur le marché.  

Flutter, un futur prometteur

Les applications Flutter sont écrites avec le langage de programmation Dart et permettent d’utiliser de nombreuses fonctionnalités plus avancées du langage. Certes, l’apprentissage d’un nouveau langage peut paraître contraignant pour certains développeurs, mais c’est un risque pris par Google pour avoir une combinaison proche de la perfection. La communauté est en pleine expansion, ce qui est un signe encourageant. En outre, l’agilité de Flutter est remarquable grâce à la compilation “just in time” qui permet “l’hot reload” : modification en temps réel, sans avoir besoin de redémarrer l’application en cours d'exécution. Une autre compilation est utilisée par Flutter : “ahead-of-time (AOT)” à la fois sur Android et iOS, permettant de hautes performances. Ainsi, Flutter se positionne donc comme un futur leader du développement mobile.

Pour résumer, voici notre vision de ces 4 technologies de développement d’applications : 

  • Java, la technologie traditionnelle, populaire, qui rassure et assure
  • Ionic, le pratique 
  • React, la bonne élève qui apprend des existants 
  • Flutter, le petit dernier très prometteur

Pour conclure, le marché du développement d’application mobile s’est accru ces dernières années, faisant émerger de nouvelles technologies de développement multiplateforme. Ces dernières sont un bon compromis entre la recherche de performance, de visibilité et de gain de coût/temps. Si ce dernier critère est le plus important pour vous, c’est le type de développement hybride avec Ionic qui se positionne le mieux. Toutefois, en termes de performances et d’expérience utilisateur, rien ne vaut l’application native. Finalement, ce sont vos priorités qui dictent votre choix.
Selon nous, c’est React Native qui représente le meilleur compromis pour développer son application aujourd’hui.