Faut-il utiliser Electron pour le développement d'applications de bureau ?
Quels sont ses avantages et inconvénients ?

Le , par Michael Guilloux, Chroniqueur Actualités
« Dites non à Electron ! », suggère Renato Athaydes, un développeur logiciel travaillant dans une entreprise technologique privée. C’est sa réponse à de récentes discussions dans des forums de programmation sur Electron et son impact sur le monde du développement d’applications de bureau.

« Si vous ne connaissez pas Electron, il s'agit essentiellement d'un navigateur Web (Chromium) qui héberge seulement votre application Web... comme s'il s'agissait d'une application de bureau (non, ce n'est pas une blague) », dit-il. « Cela vous permet d'utiliser la pile Web pour développer des applications de bureau multiplateformes. »


Ce qu'il faut retenir, c'est que le framework Electron vous permet d'écrire des applications de bureau multiplateformes en utilisant JavaScript, HTML et CSS. Il est basé sur Node.js et Chromium et est utilisé par l'éditeur Atom, mais également de nombreuses autres applications. Parmi ces dernières, on peut citer :

  • Visual Studio Code, l'éditeur de code open source développé par Microsoft ;
  • Slack, l'application de messagerie pour les équipes ;
  • Nuclide, un IDE ouvert pour le développement Web et mobile natif, construit au-dessus d'Atom ;
  • l'application de bureau de WordPress ;
  • l'application de bureau de Twitch ;
  • l'application de bureau de GitHub ;
  • etc.

Vous trouverez en effet un nombre croissant d'applications de bureau modernes qui utilisent ce framework. C'est ce que note d'ailleurs Renato Athaydes, mais pour lui, c'est horrible de penser qu'on peut faire de meilleures applications de bureau en utilisant des technologies du Web.

« La plupart des nouvelles applications de bureau "branchées" de nos jours sont construites sur Electron », dit-il en reconnaissant après tout que c'est remarquable. « Nous avons écrit des applications de bureau pendant des décennies. Le Web, par contre, a vraiment commencé il y a moins de 20 ans, et la plupart du temps, il n'a été utilisé que pour servir des documents et des gifs animés, et non pour créer des applications à part entière, pas même les plus simples. »

« Penser que la pile Web serait utilisée pour créer des applications de bureau il y a 10 ans était impensable. Mais nous y sommes, en 2017, et beaucoup de gens intelligents pensent que Electron est une excellente idée ! » Pour lui, cela n'est pas pour autant le résultat de la supériorité de la pile Web sur les frameworks d'interfaces de bureau, pour le développement d'applications. « Loin de là, je ne pense pas qu'il y ait une seule personne qui ne soit pas d'accord sur le fait que le Web est un gâchis », a-t-il souligné.

Pour ironiser, en faisant allusion aux applications qui utilisent Electron, il affirme que « si les gens préfèrent livrer un navigateur Web complet avec leurs applications afin qu'ils puissent utiliser d'excellents outils tels que JavaScript pour les développer, il y a vraiment quelque chose qui ne va pas. »

C'est en fait là l'un des principaux reproches faits à Electron. Indépendamment de la question de savoir si la pile HTML + JavaScript + CSS est bonne pour les applications de bureau, l'un des points qui dérangent le plus à propos d'Electron est qu'il va empaqueter un runtime Web complet dans chaque application, même si un runtime convenable existe déjà sur le système d'exploitation. Chromium comprend plus de 20 millions de lignes de code et il semble que chaque application Electron va empaqueter une copie de cette énorme base de code sous forme de binaire. Cela aura pour conséquence de grossir la taille de votre application et créer un gaspillage de mémoire.

Il existe pourtant selon Renato Athaydes de meilleures alternatives à Electron pour le développement d'applications de bureau. Si cela ne vous pose pas de problèmes d'avoir différentes équipes pour chaque système d'exploitation populaire, il pense alors à Windows Presentation Foundation (WPF) sur Windows et AppKit sur macOS.

Mais comme l'idée derrière Electron c'est de pouvoir développer des applications de bureau multiplateformes, il estime que les concurrents réels et meilleures alternatives à Electron sont les frameworks multiplateformes, notamment GTK+, Qt et JavaFX.

GTK+ est un toolkit permettant de créer des interfaces utilisateur graphiques. GTK + est multiplateforme et dispose d'une API facile à utiliser, ce qui permet d'accélérer le temps de développement. Il est écrit en C, mais a été conçu de manière à supporter un large éventail de langages, pas seulement C/C ++.

Qt est un framework de développement d'applications multiplateformes, pour desktop, l'embarqué et le mobile. Les plateformes prises en charge incluent Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS et bien d'autres.

Son choix est toutefois JavaFX qui avec la JVM, selon lui, est parfait pour développer des applications de bureau rapides et responsives.

Source : Billet de Renato Athaydes

Et vous ?

Pensez-vous qu’Electron (ou la pile Web) est adapté pour développer de bonnes applications de bureau ?
Quels sont ses avantages et inconvénients ? Partagez votre expérience


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de nnovic nnovic - Membre expérimenté https://www.developpez.com
le 08/10/2017 à 17:31
Je crois que ce billet est un peu à côté de son sujet. Oui, je peux parfaitement comprendre le succès d'Electron: pour des équipes qui développent des applis Web (Twitch, GitHub, Wordpress,...), c'est l'outil idéal pour proposer aux utilisateurs une alternative "desktop" à moindre frais. D'un côté les développeurs restent sur les mêmes technologies/langages, et de l'autre les problèmes de portabilité sur différentes plateformes (windows, linux, etc...) sont délégués à un tiers (Chromium). C'est tout bénéf'.

Quand l'auteur cite JavaFX, c'est d'ailleurs la même logique qui est à l'oeuvre: grâce à la JVM, les développeurs "sous-traitent à Oracle" tout ce qui concerne les problèmes de plateforme.

Du coup, proposer GTK+ ou Qt comme alternative à Electron, je ne trouve pas ça pertinent: cela nécessiterait de recruter de nouveaux développeurs, de faire attention à bien gérer toutes les plateformes, voire à en laisser tomber certaines, et à maintenir un code source sans base commune avec l'appli web de départ.

Bref, GTK+, Qt, JavaFX et les autres, ça peut avoir du sens pour des applications nativement "desktop", mais dans les exemples cités par l'auteur on parle de migrer des applis web. Et dans ce cadre, je pense qu'Electron est parfaitement légitime.

Et ce n'est même pas une idée neuve: Adobe propose déjà Air depuis 2008, pour créer une version "desktop" d'une appli Flash.
Avatar de blbird blbird - Membre éclairé https://www.developpez.com
le 09/10/2017 à 9:34
Comme le posteur précédent, je ne vois pas du tout le rapport entre WPF, QT et autres langages et Electron...

Electron permet d'avoir une application de bureau très rapidement à partir d'une application Web existante.

Très bon exemple avec Discord.
Avatar de micka132 micka132 - Membre expert https://www.developpez.com
le 09/10/2017 à 9:49
Citation Envoyé par nnovic Voir le message
D'un côté les développeurs restent sur les mêmes technologies/langages, et de l'autre les problèmes de portabilité sur différentes plateformes (windows, linux, etc...) sont délégués à un tiers (Chromium). C'est tout bénéf'.
C'est je crois une erreur de croire que parce que l'on reste sur du html/js/css on est sur du réutilisable en terme de compétence. Tout ça c’était avant! Le fameux JS est assez inutile, en tout cas pas plus utile qu'il ne l'a été pendant 20 ans. En effet pour arriver à un minimum de productivité il faut passer par un des innombrables frameworks qui changent chaque semaine...Elles sont bien utiles les compétences d'angular 1, alors que maintenant faut passer sur du React (ouai désolé ca doit faire 6 mois que je me tiens pas au courant doit y avoir autre chose maintenant).
Tiens pour le fun https://colorlib.com/wp/javascript-frameworks/ top 23 framework JS. On parie qu'en 2018 la moitié sont dépassés ou abandonnés?
Citation Envoyé par nnovic Voir le message
Quand l'auteur cite JavaFX, c'est d'ailleurs la même logique qui est à l'oeuvre: grâce à la JVM, les développeurs "sous-traitent à Oracle" tout ce qui concerne les problèmes de plateforme.
C'est ça qui me fait penser qu'il n'y a rien de logique derrière cette explosion du web...Java ça fait 20 ans que ça promet la même chose, Flash également. A mon avis la seul différence c'est Google qui pousse derrière avec un lobby de malade.
Avatar de Guntha Guntha - Membre confirmé https://www.developpez.com
le 09/10/2017 à 9:58
Loin de là, je ne pense pas qu'il y ait une seule personne qui ne soit pas d'accord sur le fait que le Web est un gâchis
Je trouvais la citation un peu chelou et radicale, alors j'ai regardé le billet original:

far from that, I don't think anyone disagrees that the web is a mess
Là en effet, personne ne discutera le fait que le web, c'est le bordel.

Et sans même parler de JavaFX, souvent pour shipper des applis Java on recommandait de fournir la JVM avec, au cas où le client ne l'avait pas installé lui-même, et pour être sûr que le client en avait une compatible, donc le problème est loin d'être nouveau

Dans le fond, je suis d'accord que c'est mieux d'avoir une équipe capable de gérer chaque plate-forme, surtout si on a de gros besoins d'intégration à la plate-forme ou de performance, mais si une appli web fait le boulot...
Avatar de xurei xurei - Membre averti https://www.developpez.com
le 09/10/2017 à 11:02
J'ai utilisé Electron personnellement pour deux projets persos. Un logiciel de snippets et un autre qui me permet de créer des raccourcis clavier globaux.

Mon avis

+ Electron est LARGEMENT suffisant pour écrire une application qui n'a pas besoin de hautes performances.
+ Pour un projet perso, c'est beaucoup plus efficace de créer l'UI dans un langage connu et maîtrisé que d'essayer autre chose. Je code aussi en Java et C/C++ mais je les réserve pour les logiciels où la performance est le critère principal. Pour les UI, mon opinion est pour React+ES6.
+ Il est possible d'écrire des parties de l'application en natif et de l'utiliser dans Electron.

- Electron consomme énormément de mémoire vive pour l'usage qu'on en a. J'utilise Rambox qui est écrit en Electron et il prend 1Go de mémoire vive avec une dizaine d'onglets ouverts.
- C'est évidemment moins performant qu'une app native mais ce serait le cas pour n'importe quel langage natif. Personne n'est choqué quand une app est écrite en Python, mais quand c'est du JS oh lala !

J'ai essayé Qt avant Electron, j'en ai eu une très mauvaise expérience. Si je dois souffrir 4x plus pour un gain théorique de performances de 10% pour l'UI, je ne vois pas l'intérêt.

Javascript + HTML est excellent pour créer des UI. Ne pas s'en servir "parce que c'est Javascript, c'est pour le Web" c'est un biais cognitif, rien de plus.

Pour conclure

Javascript a toujours été un langage avant-gardiste. Il a toujours essayé de nouvelles choses, a toujours été violemment critiqué, et s'en est toujours sorti.
Electron va évoluer et régler ses problèmes, comme React l'a fait, comme Node.js l'a fait, comme JS vanilla lui-même l'a fait.

Et si vous êtes toujours du côté des anti-JS, pensez à ceci :


(source : https://www.slideshare.net/BrendanEi...et_on_JS_First)

Nous sommes simplement à l'étape "They said it's stupid to use it for Desktop apps"
Avatar de micka132 micka132 - Membre expert https://www.developpez.com
le 09/10/2017 à 11:32
Citation Envoyé par xurei Voir le message
Et si vous êtes toujours du côté des anti-JS, pensez à ceci :
La question n'est pas d’être pro ou anti, c'est d'essayer de voir les avantages de telle ou telle techno. On peut changer ton petit dessin en remplaçant JS par Assembleur, ou Brainfuck.
JS ne fait rien tout seul, comme n'importe quel langage, et ce sont des gens qui décident de créer des outils pour le faire fonctionner dans tel ou tel environnement.
Aujourd'hui on veut nous faire croire cette nieme chimère de LA solution cross plateforme qui va résoudre n'importe quel problème est la bonne.
Ben moi j'y crois pas, même si y a un gus qui à fait un OS en JS, ça reste un beau défi de fou furieux, mais ça ne va pas plus loin.
Tout est faisable, dans n'importe quel langage...
Avatar de sbeex sbeex - Membre actif https://www.developpez.com
le 09/10/2017 à 13:19
Nan sans rire... ce monsieur affirme utiliser JavaFX pour des applications desktop ? C'est juste ridicule. A moins qu'il bosse chez tableurSoftInc je vois pas trop ce qu'il peut faire de bien en javaFX... c'est juste bon à faire des applicatons de gestion.

JavaFX est a l'abandon total à se demander si Oracle savent qu'ils possède ce truc.

Swing super mais malheureusement niveau esthétisme on a vu mieux...

Qt : ok la on se rapproche de quelque chose de pas mal et au moins on peut accéder de façon naturelle au hardware car bon c'est le but d'une application native généralement. Dans le cas contraire on a gentillement des siteweb/webapp pour a peu près tout faire.

Ahhh mais attends c'est pas justement pour ca qu'électron est la ? Comme ça on code la webapp et on l'intègre dans une appli "semi native" qui nous permet de ne coder qu'une fois l'appli et d'y ajouter 2 ou 3 features comme les notifications intégrées à l'OS ?

Electron sa force c'est ça ! Code once run everywhere ! Mais ça fait peur aux vieux Senior JAVA qui ont toujours refusé de s'ouvrir au monde et d'apprendre autre chose que java...

Faut sortir de votre bulle les gars... Java c'est génial niveau backend mais il existe d'autres trucs hein :p
Avatar de Uther Uther - Expert éminent https://www.developpez.com
le 09/10/2017 à 13:42
Citation Envoyé par nnovic Voir le message
Bref, GTK+, Qt, JavaFX et les autres, ça peut avoir du sens pour des applications nativement "desktop", mais dans les exemples cités par l'auteur on parle de migrer des applis web. Et dans ce cadre, je pense qu'Electron est parfaitement légitime.
Pour Github, Wordpress ou Twitch, ok.
Mais parmi les applications citées il y a Atom et VS Code et pour le coup c'est le genre d'applications qui n'ont pas particulièrement intérêt à employer des technologies Web, d'ailleurs, les performances s'en ressentent (surtout pour Atom).
Avatar de abriotde abriotde - Membre éclairé https://www.developpez.com
le 09/10/2017 à 14:00
ce monsieur affirme utiliser JavaFX pour des applications desktop ? C'est juste ridicule.
Tout a fait d'accord. Le but est toujours de développer une application au bon rapport performance/maintenabilité.
Pour une application ayant de gros besoin de ressources il vaux mieux se tourner vers Qt ou Gtk+ mais sinon Elektron est très bien. JavaFX est juste pas maintenable car Oracle n'y à jamais mis les ressources nécessaire pour la rendre performante donc il n'y a pas de talents et la technologie est en perte de vitesse.

Le choix que je trouve assez peu judicieux c'est utiliser JS pour Atom car un IDE a de gros besoin de ressource. Cela se comprenait au départ pour un éditeur de texte. Mais pour un IDE...
Avatar de kedare kedare - Membre expérimenté https://www.developpez.com
le 09/10/2017 à 15:35
Personnellement par défaut j'évite les applications faites avec Electron pour la simple et le bonne raison que 90% sont des usines a gaz, des gouffres en CPU et mémoire.

Le soucis c'est que les développeurs JS ne sont pas des développeurs de client lourds ou de GUI, 99% ne s'occuperont pas de l'optimisation CPU / Mémoire (Faut juste que ca soit joli et vite fait)

Aussi il ne faut pas oublier que c'est généralement totalement incompatible avec les mesures d'accessibilités comme les lecteurs brailles ou autre dispositifs. (Comme ce ne sont ni des composants natif ni un browser complètement configurable)

Aller un petit cadeau, la consommation en mémoire de Slack qui utilise Electron (Un client de messagerie très populaire en entreprise... ( malheureusement )) :

Offres d'emploi IT
Architecte Systèmes et Réseaux H/F
Michael Page - Nord Pas-de-Calais - Lille (59000)
Développeur Windev H/F
Page Personnel - Centre - Tours (37000)
Developpeur WEB/BDD
Manzalab - Ile de France - Paris (75001)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil