Electron, ce génial cancer
21/12/2023 - 3 minutes
Qu’est ce qu’Electron ?
En développement, concevoir une application peut être assez complexe, surtout quand on souhaite pouvoir l’utiliser sur différents systèmes d’exploitation (MacOS, Linux, Windows).
Electron (ElectronJS), en quelques mots, c’est un outil permettant de concevoir une application en utilisant une sous-couche “web”, en clair, vous concevez votre application avec du Javascript, du HTML et du CSS, et ça sort une application que l’on peut lancer sur un ordinateur. Pour ce faire, Electron construit votre application en embarquant Chromium et nodeJS.
Gain de temps
Une entreprise se doit de pouvoir concevoir son produit rapidement, afin de le tester puis de l’améliorer. Aujourd’hui, la majorité des entreprises de service ont dans leurs équipes des développeurs web. L’avantage d’Electron est de pouvoir utiliser ces équipes pour concevoir une application.
On ouvre ainsi à la possibilité d’approcher les étapes de préconception logicielle réellement comme la préconception d’un site web, avec des maquettes pour différentes tailles d’écran, on va ainsi gagner du temps sur toute la conception logicielle.
Ressources & écoconception
On différencie deux grands types de langages, les langages interprétés – qui peuvent être exécutés sur un grand panel de machines, et les langages compilés – qui sont plus rapides, mais dépendent du processeur et du système. Javascript, HTML et CSS sont dans la première famille.
Aujourd’hui, la concurrence entre les navigateurs web a mené à une optimisation poussée des moteurs JavaScript, rendant les performances proches de langages compilés. On va juste noter un pic de consommation de ressources au moment où l’interpréteur va compiler le script. Le gros du code compilé va alors être stocké en mémoire vive. Le problème n’est donc pas vraiment là.
Pour fonctionner, Electron va devoir lancer des programmes, utilisant eux-mêmes tout un tas d’outils, ce sans chercher à savoir si les outils vont être utilisés. Une application conçue avec Electron va embarquer tout un tas d’outils qu’elle n’utilise pas, ce qui va entraîner un surcoût de traitement, et de ressources.
À l’inverse, un programme compilé va généralement pouvoir choisir finement les dépendances qu’elle choisit d’embarquer, ce qui va économiser les ressources.
Par exemple, Chromium représente environ 18 millions de lignes de code et NodeJS en représente environ 4 millions. Je doute que chaque programme ait besoin de tout ça.
Electron pour l’interface
On notera que certains produits gravitent autour de principes similaires comme Spotify, mais n’utilisent pas Electron (“seulement” un moteur chromium pour gérer le rendu graphique)
Il faut alors comprendre qu’aujourd’hui, la “mise en page” web est peut-être plus simple et flexible qu’un système de mise en forme tel que QT ou similaire.
Le problème c’est justement que ce moteur traite le rendu à l’exécution et non pas du tout à la compilation.
Dette technique
Dans le cas d’un programme conçu avec Electron que l’on souhaite passer sur une technologie plus rapide, va nécessiter un changement de sa technologie, voire du langage de conception. Il ne faudra alors pas envisager de conserver son code, le projet va alors devoir être refait dans bien des cas.
Pour conserver l’investissement initial, l’éditeur risque alors de préférer améliorer son logiciel Electron, plutôt que de changer de technologie.
C’est probablement pour cela que Slack, par exemple, utilise toujours Electron.
Projets alternatifs
- Electrino qui eut essayé d’alléger Electron, en lui retirant les applications prépackagées.
- NW.js qui était un projet similaire et antérieur à Electron