Warum Electron
Electron ist ein Framework, das es Entwicklern ermöglicht, plattformübergreifende Desktop-Anwendungen für macOS, Windows und Linux zu erstellen, indem Web-Technologien (HTML, JavaScript, CSS) mit Node.js und nativen Code kombiniert werden. Es ist Open-Source, MIT-lizenziert und kostenlos für den gewerblichen und privaten Gebrauch. In diesem Dokument erklären wir, warum Unternehmen und Entwickler Electron wählen.
Wir können die Vorteile von Electron in zwei Fragen aufteilen: Erstens, warum solltest du Web-Technologien verwenden, um deine Anwendung zu entwickeln? Warum solltest du dafür Electron als Framework nutzen?
Wenn du bereits Web-Technologien für deine Anwendung verwendest, kannst du direkt in den Bereich "Warum Electron?" springen.
Warum Web-Technologien wählen
Zu den Web-Technologien gehören HTML, CSS, JavaScript und WebAssembly. Sie sind das Herzstück des modernen Internets. Diese Technologien haben sich als die beste Wahl für den Aufbau von Benutzeroberflächen erwiesen – sowohl für Verbraucheranwendungen als auch für missionskritische Geschäftsanwendungen. Dies gilt sowohl für Anwendungen, die in einem Browser laufen müssen, als auch für Desktop-Anwendungen, die nicht von einem Browser aus erreichbar sind. Unsere kühne Behauptung ist, dass dies nicht nur für plattformübergreifende Anwendungen gilt, die auf mehreren Betriebssystemen laufen müssen, sondern dass dies insgesamt zutrifft.
Als Beispiel wird die eigentliche Mission Control der NASA mit Web-Technologien geschrieben. Das Bloomberg Terminal, das Computersystem, das bei jedem Finanzinstitut gefunden werden kann, ist mit Web-Technologien geschrieben und läuft innerhalb von Chromium. Es kostet 25.000 Dollar pro Benutzer und Jahr. Der bestellte Kiosk von McDonald, der den größten Lebensmittelhändler der Welt antreibt, wurde vollständig mit Chromium gebaut. Die SpaceX’s Dragon 2 Raumkapsel nutzt Chromium, um die Benutzeroberfläche anzuzeigen. Du verstehst schon: Web-Technologien sind ein großartiger Technologie-Stapel zum Erstellen von Benutzeroberflächen.
Hier sind die Gründe, warum wir, die Electron-Instandhalter, auf das Web setzen.
Vielseitigkeit
Moderne Versionen von HTML und CSS ermöglichen es Ihren Entwicklern und Designern, sich voll auszudrücken. Das Schaufenster des Internets umfasst Google Earth, Netflix, Spotify, Gmail, Facebook, Airbnb oder GitHub. Welche Benutzeroberfläche auch immer deine Anwendung braucht, du kannst es mit HTML, CSS und JavaScript machen.
Wenn du dich darauf konzentrieren willst, ein großartiges Produkt zu entwickeln, ohne herauszufinden, wie du die Vision deines Designers in einem spezifischen UI-Framework verwirklichen kannst, kannst du dich auf das Web verlassen.
Zuverlässigkeit
Webtechnologien sind die am meisten genutzte Grundlage für Benutzeroberflächen auf der Welt. Diese wurden entsprechend verhärtet. Moderne Computer wurden von der CPU bis zum Betriebssystem optimiert, um die Web-Technologien gut laufen zu lassen. Die Hersteller der Geräte deiner Benutzer – sei es ein Android-Handy oder das neueste MacBook – stellen sicher, dass du Webseiten besuchen kannst Videos auf YouTube abspielen oder E-Mails anzeigen. Im Gegenzug stellen sie auch sicher, dass deine App über eine stabile Basis verfügt, auch wenn du nur einen Benutzer hast.
Wenn du dich darauf konzentrieren willst, ein großartiges Produkt zu bauen, ohne seltsamen Code zu debuggen, das noch niemand zuvor gefunden hat, kannst du dich auf das Web verlassen.
Kompatibilität
Egal, mit welchen Provider- oder Kundendaten du interagieren musst, wirst du wahrscheinlich an einen Integrationspfad mit dem Web gedacht haben. Je nach Wahl deiner Technik, dauert das Einbinden eines YouTube-Videos entweder 30 Sekunden oder erfordert die Einstellung eines Teams, das sich mit Streaming und Hardware-Beschleunigung der Video-Dekodierung beschäftigt. Im Falle von YouTube ist die Verwendung von allem anderen als den Videoplayer von YouTube selber tatsächlich gegen die AGBs von YouTube, dass du wahrscheinlich einen Browser-Frame einbettest, bevor du deinen eigenen Video-Streaming-Decodierer implementierst.
Es wird praktisch keine Plattform geben, auf der deine App nicht ausgeführt werden kann, wenn sie mit Web-Technologien gebaut wurde. Praktisch alle Geräte mit einem Display – sei es ein Geldautomat, ein Auto-Infotainment-System, ein Smart-TV, ein Kühlschrank oder eine Nintendo Switch – mit Mitteln zur Darstellung von Web-Technologien. Das Web ist eine sichere Wahl, wenn du plattformübergreifend sein willst.
Freiheiten
Es ist einfach, Entwickler mit Erfahrung im Bau von Apps mit Web-Technologien zu finden. Wenn du Entwickler bist, wird es einfach sein, Antworten auf deine Fragen zu Google, Stack Overflow, GitHub oder einer KI deiner Wahl zu finden. Egal, welches Problem du lösen musst, ist ziemlich wahrscheinlich, dass jemand es schon vor dir gelöst hat – und dass du die Antwort auf das Puzzle online finden kannst.
Wenn du dich auf den Bau eines guten Produktes mit reichlichem Zugriff auf Ressourcen und Materialien fokussieren willst, ist das Web ein guter Platz.
Warum Electron wählen
Electron kombiniert Chromium, Node.js und die Fähigkeit, benutzerdefinierten nativen Code in einem Framework zu schreiben, um leistungsstarke Desktop-Anwendungen zu erstellen. Es gibt drei Hauptgründe Electron zu nutzen:
Unternehmenstauglich
Electron ist zuverlässig, sicher, stabil und ausgereift. Es ist die erste Wahl für Unternehmen, die ihr Vorzeigeprodukt entwickeln. Wir haben eine Liste mit einigen dieser Unternehmen auf unserer Homepage, aber nur unter den Chat-Apps sind Slack, Discord und Skype mit Electron gebaut. Unter den KI-Anwendungen verwenden sowohl ChatGPT von OpenAI als auch Claude von Anthropic Electron. Visual Studio Code, Loom, Canva, Notion, Docker und unzählige andere führende Softwareentwickler setzen auf Electron.
Wir haben es uns zur Priorität gemacht, Electron so zu gestalten, dass es einfach zu handhaben ist und den Entwicklern Freude bereitet. Das ist wahrscheinlich der Hauptgrund, warum Electron so populär wurde, wie es heute ist - aber was Electron am Leben erhält und gedeihen lässt, ist der Fokus des Maintainers darauf, Electron so stabil, sicher, performant und fähig für geschäftskritische Anwendungsfälle für Endbenutzer wie möglich zu machen. Wir bauen eine Electron, das bereit ist, in Szenarien eingesetzt zu werden, in denen nicht behebbare Bugs, ungepatchte Sicherheitslücken und Ausfälle jeglicher Art den schlimmsten Fall darstellen.
Reife
Wir schätzen, dass auf den meisten Desktop-Computern der Welt mindestens eine Electron-Anwendung läuft. Electron ist gewachsen, indem es auf die Talente seiner Maintainer-Gruppe Wert gelegt hat, hervorragende und nachhaltige technische Praktiken bei der Verwaltung der laufenden Wartung gefördert hat und proaktiv Unternehmen, die auf Electron setzen, eingeladen hat, direkt zum Projekt beizutragen. Wir sind ein Impact-Projekt der OpenJS Foundation, die wiederum Teil der Linux Foundation ist. Wir teilen Ressourcen und Fachwissen mit anderen Basisprojekten wie Node.js, ESLint, Webpack - oder dem Linux-Kernel oder Kubernetes.
Was bedeutet das alles für dich als Entwickler in der Praxis?
- Verlässlicher Veröffentlichungszeitplan: Electron wird eine neue Hauptversion im Gleichschritt mit jeder zweiten Chromium-Hauptversion veröffentlichen, normalerweise am selben Tag wie Chromium. Um dies zu ermöglichen, ist eine Menge Arbeit erforderlich, sowohl in Form von Prozessen und Werkzeugen als auch in Form von wöchentlich investierten Stunden.
- Keine Diktatoren: Wenn du auf eine Technologie setzt, müsst du manchmal auch auf eine einzelne Person oder ein einzelnes Unternehmen setzen. Das wiederum setzt voraus, dass du darauf vertraust, dass diese Person oder dieses Unternehmen niemals einen Zusammenbruch erleidet, dich direkt bekämpft oder irgendetwas anderes Drastisches tut, das dich dazu zwingen würde, dein gesamtes technisches Konzept zu überdenken. Electron wird von einer Vielzahl von Unternehmen (Microsoft, Slack/Salesforce, Notion und anderen) betrieben und wird auch in Zukunft weitere Unternehmen aufnehmen, die daran interessiert sind, ihren „Sitz am Entscheidungstisch“ zu sichern.
Stabilität, Sicherheit, Leistung
Electron liefert die beste Erfahrung auf allen Zielplattformen (macOS, Windows, Linux), indem es die neueste Version von Chromium, V8 und Node.js direkt mit dem Anwendungsbinary bündelt. Wenn es um die Ausführung und das Rendering von Webinhalten mit höchster Stabilität, Sicherheit und Leistung geht, halten wir diesen Stack derzeit für „best in class“.
Warum alles bündeln
Sie werden sich vielleicht fragen, warum wir den Web-Stack von Chromium mit unseren Anwendungen bündeln, wo doch die meisten modernen Betriebssysteme bereits einen Browser und eine Form der Webansicht enthalten. Die Bündelung erhöht nicht nur den Arbeitsaufwand für die Electron-Maintainer drastisch, sondern auch die Gesamtgröße der Electron-Anwendungen (die meisten Anwendungen sind >100MB). Viele Electron-Maintainer haben einst Anwendungen entwickelt, die eingebettete Web-Ansichten nutzten - und haben seitdem die erhöhte Festplattengröße und die Arbeit der Maintainer als lohnenden Kompromiss akzeptiert.
Wenn du die integrierte Webansicht eines Betriebssystems verwendest, bist du durch die Browserversion eingeschränkt, die in der ältesten Version des Betriebssystems enthalten ist, die du unterstützen musst. Wir haben die folgenden Probleme mit diesem Ansatz festgestellt:
- Stabilität: Die moderne Webtechnologie ist komplex, und daher werden Sie früher oder später auf Bugs stoßen. Wenn du die Webansicht des Betriebssystems verwendest, kannst du deine Kunden nur auffordern, ihr Betriebssystem zu aktualisieren. Wenn für diesen Computer kein Upgrade verfügbar ist (weil er nicht auf das neueste macOS oder Windows 11 aktualisiert werden kann), musst du ihn bitten, einen neuen Computer zu kaufen. Wenn du Pech hast, verlierst du jetzt einen wichtigen Kunden, weil er seine gesamte Flotte von Tausenden von Geräten nicht aufrüsten wird, nur weil ein Team die App deines Start-ups ausprobieren wollte. In dieser Situation haben Sie keine Möglichkeit, sich zu wehren. Selbst das Risiko, dass dies geschieht, ist für die Unternehmen, die die Electron-Maintainer beschäftigen, nicht akzeptabel.
- Sicherheit: Ähnlich wie du Stabilitätsfehler durch die Veröffentlichung eines App-Updates beheben kannst, kannst du auch Sicherheitskorrekturen für deine Anwendung veröffentlichen, ohne deine Kunden zu bitten, ihr Betriebssystem zu aktualisieren. Auch wenn die Anbieter von Betriebssystemen Aktualisierungen deines integrierten Browsers Vorrang einräumen, haben wir nicht gesehen, dass sie die integrierten Webansichten mit ähnlicher Dringlichkeit aktualisieren. Die Bündelung eines Web-Renderers gibt dir, dem Entwickler, die Kontrolle.
- Leistung: Bei einfachen HTML-Dokumenten verbraucht eine integrierte Webansicht manchmal weniger Ressourcen als eine Anwendung mit einem gebündelten Framework. Bei größeren Anwendungen haben wir die Erfahrung gemacht, dass wir mit der neuesten Version von Chromium eine bessere Leistung erzielen können als mit den integrierten Webansichten. Man könnte meinen, dass die integrierte Ansicht viele Ressourcen mit anderen Anwendungen und dem Betriebssystem teilen kann - aber aus Sicherheitsgründen müssen Anwendungen in ihren eigenen, voneinander isolierten Sandboxen laufen. An diesem Punkt stellt sich die Frage, ob die Webansicht des Betriebssystems leistungsfähiger ist als Chromium. Bei vielen Anwendungen haben wir die Erfahrung gemacht, dass wir durch die Bündelung von Chromium und Node.js bessere und leistungsfähigere Erfahrungen machen können.
Warum Chromium und Node.js bündeln
Ziel von Electron ist es, den von Electron unterstützten Anwendungen die bestmögliche Nutzererfahrung zu ermöglichen, gefolgt von der bestmöglichen Entwicklererfahrung. Chromium ist derzeit der beste verfügbare plattformübergreifende Rendering-Stack. Node.js nutzt die JavaScript-Engine V8 von Chromium, sodass wir die Stärken beider Systeme kombinieren können.
- Nativer Code, wenn du ihn willst: Dank des ausgereiften nativen Addon-Systems von Node.js kannst du jederzeit nativen Code schreiben. Es gibt keine System-API, die für dich unerreichbar ist. Was auch immer du unter macOS, Windows oder Linux integrieren willst - solange du es in C, C++, Objective-C, Rust oder einer anderen nativen Sprache tun kannst, kannst du es auch in Electron tun. Auch hier hast du, der Entwickler, die maximale Kontrolle. Mit Electron kannst du Webtechnologien verwenden, ohne nur Webtechnologien zu wählen.
Entwicklererfahrung
Zusammenfassend möchten wir ein Electron bauen, das ausgereift, unternehmenstauglich und für missionskritische Anwendungen bereit ist. Zuverlässigkeit, Stabilität, Sicherheit und Leistung stehen bei uns an erster Stelle. That said, you might also choose Electron for its developer experience:
- Leistungsstarkes Ökosystem: Alles, was du auf npm findest, läuft innerhalb von Electron. Jede dir zur Verfügung stehende Ressource darüber, wie du mit Node.js arbeitest, gilt auch für Electron. Zusätzlich hat Electron selbst ein blühendes Ökosystem — inklusive einer Vielzahl von Optionen für Installer, Updater, tiefere Betriebssystemintegration und mehr.
- Viele eingebaute Funktionen: In den letzten zehn Jahren hat der Electron's Kern eine Vielzahl von nativen Funktionen erhalten, die du für die Entwicklung deiner Anwendung benötigen könntest. Geschrieben in C++ und Objective-C, Electron hat Dutzende einfach zu bedienender APIs für tiefere Systemintegration — wie erweiterte Fensteranpassung für transparente oder seltsame Widgets, erhalte Push-Benachrichtigungen vom Apple Push-Benachrichtigungsnetzwerk oder bearbeite ein benutzerdefiniertes URL-Protokoll für deine App.
- Open Source: Der gesamte Stapel ist Open Source und offen für deine Inspektion. Dies garantiert dir die Freiheit, alle Funktionen hinzuzufügen oder Fehler zu beheben, die in Zukunft auftreten könnten.
- Nativer Code, wenn du ihn benötigst: Es muss wiederholt werden, dass Electron es dir erlaubt Web-Technologien und C++, C, Objective-C, Rust und andere Sprachen zu kombinieren. Egal ob SQLite, eine ganze LLM oder nur die Möglichkeit, eine bestimmte native API aufzurufen, wird Electron es einfach machen.
Warum etwas anderes wählen
Wie oben beschrieben, ist das Web eine erstaunliche Plattform für das Erstellen von Benutzeroberflächen. Das bedeutet nicht, dass wir, die Instandhalter, alles mit HTML und CSS bauen würden. Hier sind einige bemerkenswerte Ausnahmen:
Ressourcen-eingeschränkte Umgebungen und IoT: In Szenarien mit sehr begrenzter Speicher- oder Prozessleistung (z.B.: ein Megabyte Speicher und 100MHz Prozessleistung auf einem unterversorgten ARM Cortex-M), Musst du wahrscheinlich eine Low-Level-Sprache verwenden, um direkt mit dem Display zu comunizieren, um grundlegende Texte und Bilder auszugeben. Selbst bei etwas höheren Single-Chip-Geräten solltest du vielleicht ein eingebettetes UI-Framework in Betracht ziehen. Ein klassisches Beispiel ist eine Smart Watch.
Geringer Speicherplatzbedarf: Komprimierte Electron Apps sind normalerweise etwa 80 bis 100 Megabyte groß. Wenn ein kleinerer Speicherplatz eine wichtige Anforderung ist, musst du etwas anderes verwenden.
Betriebssystem-UI-Frameworks und -Bibliotheken: Durch die Möglichkeit, nativen Code zu schreiben, kann Electron alles tun, was eine native Anwendung tun kann, einschließlich der Verwendung der UI-Komponenten des Betriebssystems, wie WinUI, SwiftUI oder AppKit. In der Praxis nutzen die meisten Electron-Apps diese Funktionen selten. Wenn du möchtest, dass der Großteil deiner Anwendung mit vom Betriebssystem bereitgestellten Schnittstellenkomponenten entwickelt wird, ist es wahrscheinlich besser, vollständig native Anwendungen für jedes Betriebssystem zu entwickeln, welches du ansprechen möchtest. Es ist nicht so, dass es mit Electron unmöglich ist, es wird nur ein insgesamt einfacherer Entwicklungsprozess sein.
Spiele und Echtzeit-Grafiken: Wenn du ein Hochleistungsspiel oder eine Anwendung entwickelst, die komplexe Echtzeit-3D-Grafiken erfordert, bieten native Frameworks wie Unity, Unreal Engine oder DirectX/OpenGL eine bessere Leistung und einen direkteren Zugriff auf die Grafikhardware. Web-Fans könnten auf Vorbehalte hinweisen, wie z. B. die Tatsache, dass sogar die Unreal Engine mit Chromium ausgeliefert wird - oder dass WebGPU und WebGL sich rasant entwickeln und viele Spiele-Engines, einschließlich der hier aufgeführten, ihre Spiele jetzt in einem Format ausgeben können, das in einem Browser läuft. Wenn du uns bitten würdest, das nächste AAA-Spiel zu entwickeln, würden wir wahrscheinlich etwas anderes als nur Webtechnologien verwenden.
Einbettung leichtgewichtiger Websites: Electron Anwendungen sind in der Regel hauptsächlich Webanwendungen mit nativem Code, wo es sinnvoll ist. Prozessorlastige Electron-Anwendungen neigen dazu, die Benutzeroberfläche in HTML/CSS zu schreiben und das Backend in Rust, C++ oder einer anderen nativen Sprache zu entwickeln. Wenn du vorhast, eine primär native Anwendung zu entwickeln, die auch eine kleine Website in einer bestimmten Ansicht anzeigen soll, ist es vielleicht besser, die vom Betriebssystem bereitgestellte Webansicht oder etwas wie ultralight zu verwenden.