Après nous être consacrés aux PWAs, nous poursuivons notre tour d’horizon des technologies mobiles en nous penchant cette fois-ci sur un framework hybride parmi les premiers à avoir mis les technologies web au service du développement d’applications mobiles. Il s’agit de Cordova, la plateforme de développement mobile de la Fondation Apache.
Cordova : le fork de PhoneGap est-il réellement multiplateforme ?
Fork de la plateforme PhoneGap, Callback a été cédé par Adobe à la Fondation Apache en 2011 puis rebaptisé Cordova. Présenté comme un framework de développement mobile open-source, Cordova offre historiquement la possibilité de créer des applications compatibles avec de nombreux OS : Android, iOS, Blackberry OS, Firefox OS, Ubuntu, WindowsPhone, WebOS, Symbian, Bada, Tizen etc.). Pour fonctionner, Cordova s’appuie majoritairement sur des langages de programmation web, ce qui lui confère son caractère hybride. Les applications réalisées s’apparentent donc à des pages HTML qui appellent logiquement l’ensemble des ressources nécessaires pour fonctionner (CSS, JavaScript, fichiers images ou multimédias etc.). L’application est ensuite exécutée par l’intermédiaire d’une WebView au sein du wrapper de l’application native.
Une telle architecture n’est pas forcément en mesure d’accéder à nombre de fonctionnalités intrinsèques au smartphone. Pour faire face au potentiel quasiment illimité du développement mobile natif, Cordova offre de puiser dans une riche banque d’extensions aisément disponible depuis son site web (plus de 5000 plugins sont téléchargeables). Dans les faits, la plupart de ces add-ons concerne Android et iOS. Il faut reconnaître que les autres systèmes d’exploitation (en premier lieu Windows et MacOS) sont les parents pauvres de cette base de données. Ça n’est pas vraiment bloquant dès lors qu’on s’intéresse à Cordova pour réaliser des applications mobiles. Mais il faut bien reconnaître, d’une part, que cela nuance le caractère réellement multiplateforme du framework et d’autre part, que les usages qui en sont essentiellement faits par la communauté sont avant tout cantonnés au développement d’applications mobiles.
N’oublions pas non plus que l’emploi de plugins génère inévitablement une dépendance vis-à-vis de ces derniers (et vis-à-vis de leurs créateurs) et que chaque mise-à-jour d’iOS et/ou d’Android fait peser le risque d’une rupture plus ou moins définitive du service sous-jacent.
Dans quelle mesure, Cordova demeure une plateforme de développement mobile d’actualité ?
Comme d’autres frameworks multiplateformes du début des années 2010, Cordova a fait naître de nombreux espoirs dans le domaine des alternatives techniques au développements natif pour iOS et Android. À l’instar de PhoneGap, son ancêtre, le framework de la fondation Apache promettait de rendre le développement mobile accessible à n’importe quel développeur web. Il s’agissait également de diviser les temps de développement (build) et de maintenance (run) par deux voire plus, via la conjugaison de trois avantages :
- un seul développeur est nécessaire pour développer deux applications (voire davantage) ;
- un seul code source est partagé entre chaque application ;
- la couche graphique est unique et similaire quel que soit l’OS de destination (iOS + Android).
Près d’une décennie après la parution de Cordova, ces avantages théoriques ont fait long feu. Si la mutualisation de la couche graphique demeure possible techniquement, ça n’est plus une démarche que l’on est en mesure de préconiser aujourd’hui. Dix ans de développement mobile, ont en effet démontré qu’en matière d’ergonomie et de navigation, les recommandations d’Apple et de Google donnent le La ; chaque écart est en effet susceptible de se faire durement sanctionner en matière d’expérience utilisateur. D’un point de vue technique, la situation est globalement similaire. De nombreuses applications développées avec Cordova ont par exemple été rejetées de l’App Store lorsqu’Apple décida en 2019 de ne plus accepter les apps qui employaient le composant UIWebView.
Enfin, compte tenu de l’usage qui est fait de JavaScript notamment, il faut avoir à l’esprit que la prise en main de Cordova conjuguée à une méconnaissance des bonnes pratiques de développement d’une application mobile peuvent aisément se traduire en failles de sécurité. Ce risque n’est pas l’apanage de Cordova mais il est bien présent.
En conclusion, faut-il aujourd’hui développer une application mobile avec Cordova ?
La version 10.0.0 de Cordova est parue courant 2020. Il faut donc reconnaître que l’on peut encore compter sur le framework de la Fondation Apache (et son riche catalogue d’extensions), plus de dix ans après sa parution. C’est d’autant plus remarquable que ce n’est pas le cas de tous ses homologues. Pour autant, faut-il encore miser sur lui aujourd’hui ? Rien n’est moins sûr. Si votre projet s’apparente à un MVP (Most Valuable Project) ou bien à une application mobile à dominante éditoriale, pourquoi pas. Mais à l’heure des React Native, Xamarin ou Flutter (voire dans certains cas des PWAs), ces plateformes plus récentes et pour certaines d’entre elles, bien plus populaires désormais, ne manqueront pas de remporter les suffrages d’une majeure partie des développeurs. A contrario, si l’expérience utilisateur est fondamentale pour vous, si vous ne souhaitez pas non plus être pénalisé par les évolutions stratégiques des politiques appliquées par Apple et Google, le développement natif continue alors d’apporter de solides garanties.