Accueil > Les applications hybrides
Grégory Delaunay
28 juin 2022
Read this post in English

Les applications hybrides

Les applications hybrides

Au sein de l’écosystème applicatif, entre le PC, le web, les smartphones ainsi que divers objets connectés, les plateformes se font de plus en plus nombreuses. L’expérience change également puisque proposer un flux continu, unifié et interconnecté entre tous ces appareils devient aujourd’hui courant. Développer autant d’applications que de plateformes a tendance à provoquer une hausse de la complexité des développements, de la taille des équipes et du coût de la maintenance, tout en augmentant les risques d’avoir des différences trop importantes entre elles.

Des technologies d’hybridation permettant de développer de manière unique et unifiée toutes ces applications sont donc de plus en plus demandées pour répondre à ces problématiques et pouvoir capter le plus d’utilisateurs possible. C’est ce que nous allons voir ensemble dans ce nouvel article de notre série dédiée à l’hybridation.

 

Les différents types d’applications

 

Les applications hybrides visent à unifier tout l’écosystème applicatif. Afin de mieux comprendre, il me semble important de prendre quelques instants pour avoir une vue globale. Quels sont les différents types d’applications ?  Que proposent-elles et qu’adressent-elles ?  Quelles sont les différences entre les applications hybrides et natives ?

 

Applications natives

 

Les applications natives sont des applications conçues et pensées pour utiliser les outils fournis par la plateforme cible (langage, framework, SDK) et sont bien souvent des applications prévues pour une plateforme unique : Android, iOS, Windows et Mac principalement. Cela signifie que pour chaque plateforme, il y a un langage dédié et, le plus souvent, des équipes de développement consacrées à la réalisation. Ces applications nécessitent souvent d’être installées via les magasins des différents systèmes (Play Store, App Store, Microsoft Store…).

 

Les applications natives présentent cependant plusieurs avantages majeurs :

  • Performance: les applications natives étant pensées pour une plateforme unique, les développements se sont au plus proche possible de celle-ci, optimisant donc les performances de l’application que ce soit en temps de rendu, de calcul, ou bien sur la gestion des erreurs systèmes.
  • Potentiel pleinement exploité: elles permettent d’utiliser pleinement le potentiel de la plateforme cible en ayant accès à toutes ses fonctionnalités, contrairement parfois aux autres types d’applications. On pense notamment à l’utilisation des différents capteurs des téléphones ainsi qu’à celle des notifications push.
  • Un design pleinement abouti: chaque constructeur et plateforme a ses recommandations en termes de design et d’expérience qu’il est pleinement possible de respecter si l’application vise uniquement une plateforme et n’a pas besoin d’unifier ses designs.

 

Application web

 

Il s’agit, comme leur nom l’indique, d’applications développées avec les technologies web, afin d’atteindre d’autres plateformes telles que le bureau ou les smartphones.

 

Les applications web présentent également des avantages :

  • Elles permettent d’avoir un plus grand vivier de développeurs en raison de la popularité de leurs technologies et ne nécessitent pas d’installation à proprement parler sur les appareils des utilisateurs puisqu’elles sont directement lancées sur les navigateurs.
  • Elles visent à avoir un design se rapprochant au maximum de celui des applications mobiles natives afin d’avoir la meilleure expérience possible tout en réduisant les inconvénients des applications natives en termes de coût et d’installation.
  • Étant lancées via navigateur, elles ne ciblent pas une unique plateforme et peuvent être déployées partout.

Elles ne sont cependant pas sans inconvénient : en effet, contrairement aux applications natives, il est plus difficile d’exploiter pleinement les fonctionnalités intrinsèques à la plateforme. Elles ne sont pas toutes disponibles, ont un design lissé entre les différentes plateformes et sont moins optimisées au niveau des performances.

 

Les applications hybrides

 

Rentrons maintenant dans le cœur de notre sujet : les applications hybrides. Comme leur nom le laisse supposer, il s’agit d’un type application qui emprunte ses caractéristiques à la fois aux applications natives et aux applications web. En effet, elles sont également appelées « applications multiplateformes » puisque contrairement aux applications natives et à l’instar des applications web, elles permettent de cibler plusieurs plateformes différentes (Android, iOS, Mac, Windows, principalement) à partir du même code source. Code source qui, aux origines des applications hybrides, était basé sur des technologies purement web, même si cela tend à changer comme nous le verrons dans la suite de cet article. Mais tout comme les applications natives, les applications hybrides sont à installer sur chacune des plateformes !

 

Il est ainsi possible d’utiliser les applications hybrides comme des conteneurs de « WebView » qui viendront encapsuler les sites web pour les déployer sur toutes les plateformes sur lesquelles la technologie choisie permet de déployer, même si c’est une pratique souvent déconseillée en termes de performance et de rendu.

 

Des conteneurs comme « Electron » permettent également de travailler avec la même logique pour rendre les versions web compatibles avec le bureau. C’est notamment ce qu’utilisent des applications populaires comme Slack ou Figma.

 

Les applications hybrides semblent donc très attractives puisqu’elles semblent combiner les avantages des applications web avec leurs coûts de développement réduits et plus rapides de par le code unique et la possibilité de cibler plusieurs plateformes à la fois, et les avantages des applications natives de par leur installation sur l’appareil et l’accès aux fonctionnalités avancées.

 

Pesons donc le pour et le contre, en commençant par les avantages des applications hybrides :

 

  • Coût de développement réduit: il est possible d’utiliser une base de code unique pour toute la logique applicative et une partie des interfaces, réduisant ainsi la quantité de code à fournir pour délivrer l’application sur plusieurs plateformes vis-à-vis des applications natives. La technologie étant également unique, la taille des équipes est également plus faible, tout comme le besoin en formation.
  • Vivier de développeurs: pour étendre le point précédent, le fait d’utiliser une seule technologie et de ne pas avoir à se contraindre aux technologies des constructeurs permet d’avoir un vivier plus large.
  • Coût de maintenance réduit: toujours grâce au code relativement unique, il est plus facile à maintenir.
  • Extensibilité: puisque la logique de développement est centralisée, si de nouvelles plateformes viennent à être supportées, il devrait suffire de développer le code spécifique à la plateforme à intégrer plutôt que d’avoir à développer une application complète.
  • Potentiel exploité: les applications hybrides étant installées et construites comme des applications à destination des plateformes cibles, il est plus facile que via des applications web d’accéder aux fonctionnalités spécifiques à la plateforme telles que l’utilisation des différents capteurs (comme l’appareil photo ou le capteur GPS par exemple). Il n’y a cependant toujours pas autant d’efficacité qu’avec les applications natives.

 

Quelques points viennent néanmoins nuancer ce tableau jusque-là très positif :

  • Le nombre de plateformes à pleinement intégrer: lorsque l’on parle d’applications hybrides, on a tendance à penser « code unifié ». C’est en partie vrai et c’est l’un des gros points forts de l’hybridation applicative. Cependant, si on veut utiliser pleinement les fonctionnalités de chacune des plateformes ciblées et donc tirer la pleine puissance de son application en fonction de la cible, c’est possible, mais cela demande souvent des développements spécifiques pour chaque plateforme. Plus la customisation est forte, plus les développements seront nombreux et spécifiques, ce qui vient ainsi nuancer fortement les points positifs évoqués précédemment sur la maintenance du code et le coût de développement. Les points spécifiques à chacune des plateformes demandent bien souvent également une expertise sur la plateforme cible, transformant parfois même les points positifs en inconvénients. La question de customisation par plateforme est un point essentiel sur lequel il faut réfléchir lors du choix de l’adoption d’une technologie d’application hybride, pour ne pas se retrouver avec une application encore plus complexe que s’il fallait en gérer deux.
  • Le design: les applications hybrides permettent d’obtenir un design unifié pour qu’il soit le même sur toutes les plateformes, ce qui est une bonne chose pour la vitesse de déploiement. En revanche, pour les mêmes raisons qu’évoquées ci-dessus, cela peut complexifier le développement. Bien conscients de ce problème, nous verrons les propositions faites par différentes technologies pour y remédier.
  • L’attente comparée aux sorties constructeurs: lorsqu’Android, iOS ou toute autre plateforme sort une nouvelle itération de son OS/Framework/outil, les nouveautés sont directement disponibles pour le développement natif puisque les SDK viennent accompagner ces mises à jour. Dans le cadre de développement hybride, il faut attendre un certain temps que les technologies hybrides adaptent ces nouvelles fonctionnalités.
  • Les performances: d’un point de vue technique, nous avons vu qu’une technologie hybride permet de pouvoir cibler un ensemble de plateformes à partir du même code source. La qualité, d’un point de vue performances, va varier selon que la technologie choisie est capable – ou non – de compiler les applications de manière purement adaptée pour le natif ou non. Une grande partie des technologies hybrides ne le permet pas, et même celles qui y parviennent ne le font pas sans devoir embarquer du contenu supplémentaire. Il est ainsi très difficile d’égaler les applications natives sur chacune des plateformes quand il s’agit des performances, que ce soit en termes de vitesse ou de poids.

 

De nouvelles propositions pour une hybridation renforcée

 

Très conscients des problématiques liées à l’hybridation ainsi qu’à l’attrait autour de celle-ci, les technologies et frameworks associés regorgent d’idées pour réduire l’impact des quelques points faibles tout en proposant le plus de plateformes disponibles et chercher à accélérer et faciliter le développement. Voyons deux technologies intéressantes.

 

.NET MAUI Blazor Hybrid

 

Microsoft a une forte expérience dans le développement d’applications hybrides avec ses Framework « Xamarin » et « Xamarin Forms ». .NET MAUI (Multi-platform App UI) en est l’évolution intégrée au sein du framework .NET 6 afin d’en tirer toute la puissance.

.NET multiplatform applications

 

 

 

.NET MAUI permet :

  • De développer sur toutes les plateformes : iOS, Android, macOS et Windows ;
  • De développer les interfaces de toutes les plateformes avec un unique langage de description : le XAML ;
  • Une customisation composant par composant, bien plus efficace que sur Xamarin, afin de minimiser les coûts liés au développement d’interfaces spécifiques pour chaque OS tout en gardant une grande souplesse ;
  • D’accéder à une librairie « Essentials » pour intégrer la plupart des accès aux fonctionnalités spécifiques de plateformes de manière unifiée, réduisant ainsi fortement l’inconvénient d’une surspécialisation de son application (déjà présent dans Xamarin) ;
  • D’obtenir une application compilée en bytecode natif permettant d’avoir de très bonnes performances.

 

De son côté, Blazor est un framework open source développé par Microsoft afin de permettre le développement de site web en C# via le framework .NET. Il est exécuté soit directement sur le serveur, soit via le WebAssembly (WASM) avec un .NET Runtime interprété.

Un site web Blazor WASM peut déjà être rendu hybride en application pour le bureau via des solutions comme « Electron » qui supportent le WebAssembly mais uniquement pour le bureau et avec des performances limitées.

 

.NET MAUI vient changer cela avec un composant « BlazorWebView » qui permet d’intégrer des pages Blazor au sein de ses applications MAUI, et donc de déployer ses pages non plus seulement sur navigateur et bureau mais également sur mobile via Android et iOS !

Cela permet également de faire exécuter les pages Blazor ainsi liées directement sur le .NET Runtime de MAUI et donc d’obtenir un grand gain de performance. Ces pages peuvent interagir librement avec tout le code commun.

Microsoft prévoit de renforcer encore les liens entre ces deux frameworks avec .NET 7.

On a donc une solution qui permet soit de développer de zéro des applications hybrides disponibles pour Android, iOS, MAC et Windows, soit de faire porter son site web en application hybride sans concessions de performances.

 

 

Kotlin et Kotlin Mobile Multiplatform (KMM)

 

Kotlin est un langage développé par Jetbrains qui vise notamment à remplacer Java dans ses usages. Il est également le langage plébiscité par Google pour le développement des applications natives Android. Pour plus d’informations spécifiques au langage, je vous invite à consulter cet article sur Kotlin : le nouveau Java ?

Kotlin Mobile Multiplatfom (KMM) est l’ensemble d’outils permettant de développer des applications hybrides à partir de Kotlin.
L’approche est différente de ci-dessus puisque le développement d’interfaces reste natif. Il propose un noyau commun ainsi qu’un ensemble d’outils pour permettre de développer les applications hybrides comme le montre ce schéma :

OUtils eéveloppement d'applications sur Kotlin

Avec l’ensemble des outils, il est possible de développer sur les plateformes de son choix de manière unitaire tout en profitant de toute la puissance du langage.
L’approche peut aussi être bidirectionnelle, c’est-à-dire qu’il est possible d’intégrer les modules Kotlin dans les applications de plateformes cibles déjà existantes ou bien d’intégrer ses applications existantes au sein de projets Kotlin KMM.

Il est donc tout à fait possible de partir d’un projet Kotlin Android natif pour le rendre hybride sur iOS et sur Web notamment.

 

Applications hybrides : peser le pour et le contre

 

Le champ des possibles s’élargit, les approches sont différentes et les technologies proposant de l’hybridation sont de plus en plus matures et proposent de plus en plus de plateformes. Cependant, même si les offres sont toujours plus séduisantes et fortes de proposition, l’hybridation n’est pas encore un choix automatique quand il s’agit du développement d’applications. Comme bien souvent, il s’agit donc de bien peser le pour et le contre avant de s’orienter vers une technologie précise !

Pour donner quelques pistes, tout cela dépendra de s’il s’agit d’un nouveau projet ou non, des technologies maîtrisées au sein de l’entreprise, des moyens financiers à disposition et d’un ensemble d’autres paramètres. Cellenza peut néanmoins vous épauler sur le sujet, notamment grâce à notre arbre décisionnel qui accompagnera votre prise de décision en vous aidant à vous poser les bonnes questions.

 

Vous voulez en savoir plus sur l’hybridation ? Consultez dès à présent les autres articles de cette série :

Nos autres articles
Kotlin le nouveau Java
Kotlin : le nouveau Java ?
Kotlin est un langage de programmation orienté objet et fonctionnel principalement développé par JetBrains. Conçu pour pouvoir être compilé pour...
Commentaires
Laisser un commentaire

Restez au courant des dernières actualités !
Le meilleur de l’actualité sur le Cloud, le DevOps, l’IT directement dans votre boîte mail.