Electron, ou comment développer des applications desktop en Javascript
Un article qui parle de mon expérience avec Electron, ses points forts mais aussi ses points faibles !
Article publié le 09/07/2020, dernière mise à jour le 21/10/2024
Les applications web deviennent de plus en plus puissantes avec les nouvelles APIs mises à disposition par les navigateurs : Géolocalisation, notifications, bluetooth, etc...
Le problème étant que tous les navigateurs n'implémentent pas ces APIs à la même vitesse, et certains refusent même de les implémenter tout court pour tenter de faire barrage au tracking des utilisateurs.
Si le browser-fingerprinting ne vous parle pas, je vous conseille mon article à son sujet.
Toujours est-il qu'il y a certaines fonctionnalités que les navigateurs n'implémenteront jamais comme l'accès aux fichiers de la machine, bien trop dangereux.
Mais alors comme créer des applications riches lorsque l'on est développeur web ? Pour les applications mobiles il est possible d'utiliser des framework comme Ionic ou plus récemment React-Native, mais qu'existe-t'il pour le bon vieux desktop ?
Aujourd'hui nous allons parler d'Electron !
Qu'est-ce que c'est ?
Electron est un framework de développement d'application multi-plateformes basé sur NodeJS et Chromium (la base libre de plusieurs navigateurs web, dont Google Chrome).
Le principe est de pouvoir créer des fenêtres (comme en développement logiciel classique) et de pouvoir gérer leur contenu en utilisant les technologies web classiques : html, css et javascript.
Electron donne accès au système de fichier, à toutes les API web de Chromium ainsi que celles du système d'exploitation (attention si votre application se base sur les API d'un système en particulier, elle ne fonctionnera pas sur les autres).
Pour vous donner une idée, voici quelques logiciels desktops créés avec Electron :
- Slack
- Visual Studio Code
- Atom
- InVision
Les avantages
Electron offre de nombreux avantages, dont certains déjà cités précédemment :
- Simple à prendre en main
- Déploiement multi-plateformes (Windows, Mac et Linux) avec installateurs
- Compatible avec Windows App Store et Mac App Store
- Gestion des mises à jour automatiques
- APIs web Chromium
- APIs natives de l'OS (Menus, Notifications, etc...)
- Accès au système de fichiers
Les inconvénients
Des inconvénients il y en a, comme avec toute technologies, le tout reste à savoir si le jeu en vaut la chandelle et si dans votre projet, les avantages dépassent les inconvénients.
Je ne vais pas tous les citer ici, d'autres gens ayant plus d'expérience que moi avec l'outil l'ont déjà très bien fait comme sur le blog Hackernoon, mais je vais vous expliquer les deux plus gros inconvénients de l'outil selon moi :
Une app, un navigateur
Comme je vous l'ai expliqué au début, le principe d'Electron est de faire tourner une application web dans un navigateur web embarqué (Chromium).
Ce qui signifie que pour l'application la plus légère possible (disons un simple Hello World), le poids de l'application et sa consommation en RAM et en CPU sera au moins égale à celle du navigateur sous-jacent.
Avoir une application de ce type qui tourne sur sa machine ne fait pas une grosse différence, mais si l'on commence à multiplier les applications de ce genre on pose un énorme problème d'optimisation des ressources de la machine.
Le code source visible
Le code source d'une application Electron n'est pas compilé, ni crypté, ni obscurci (obfuscated), il est simplement packagé dans un container "asar". Extraire le code source complet d'une telle archive ne demande pas plus de travail que d'executer la commande: asar extract app.asar secret_source_code
Il y a des chances que le code source de votre application fasse partie de la valeur de votre entreprise (ou de votre client) et que le rendre facilement accessible à des développeurs qui pourraient cloner application ne soit pas la meilleure idée.
Il existe néanmoins quelques manières de rendre soi-même son code "illisible" ou plus difficile à extraire mais cela ne dépend que de vous, et du temps que voudra bien y passer quelqu'un intéressé par votre code !
Mon avis sur Electron
Personnellement j'ai eu l'occasion de l'utiliser, combiné à VueJS pour créer mon jeu "Candy Candy Candy" en 48h pendant ma dernière Game Jam.
Electron m'a permis de pouvoir proposer un environnement commun à tous mes joueurs, une taille de fenêtre fixe pour me faciliter le développement et permettre l'exportation d'un installeur sur Windows, MacOS et Linux rapidement!
Si vous voulez le tester, le jeu est disponible au téléchargement gratuit sur itch.io et le code source sur Github.
Je pense sincèrement qu'Electron est un outil très pratique, qu'il permet de gagner du temps et de sortir une première version d'application très rapidement.
Néanmoins je le vois comme une solution temporaire, le temps par exemple d'arriver à développer une application native (ou que React Native puisse exporter des applications Windows et Linux).
À mon avis il ne faudrait pas que les éditeurs d'applications web portent systématiquement leurs applications sur Electron, ça ne ferait du bien ni au monde du web, ni au monde du logiciel.
Mais si vous ne l'avez pas testé, foncez vous faire votre propre idée !
Aucun commentaire pour l'instant