Was ist die beste Electron-Alternative? Finden wir es heraus.

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

스크립트

00:00:00Früher bedeutete die Erstellung plattformübergreifender Desktop-Apps meist die Wahl von Electron, doch heute
00:00:04haben wir die Qual der Wahl. Um etwas Licht ins Dunkel zu bringen, vergleichen wir heute die drei besten Optionen
00:00:09für plattformübergreifende Desktop-Apps: Tauri, geschrieben in Rust, Electro-Bun vom Bun-Team
00:00:14und Deno Desktop, das neue Angebot von Deno. Als Basis nehmen wir zudem Electron. Falls ihr
00:00:20ein anderes Tool auf diesem Kanal sehen wollt, lasst es mich einfach in den Kommentaren wissen.
00:00:23Wir vergleichen vier Punkte: Paketgröße, Startgeschwindigkeit, Laufzeitleistung und die Entwicklererfahrung.
00:00:29Ich habe dieselbe App viermal gebaut: ein Bildschirmaufnahme-Tool, mit dem man Ergebnisse
00:00:35auf einer Timeline bearbeiten und als MP4 exportieren kann. Ich habe diese Art von App gewählt, da Videoverarbeitung
00:00:40solche Tools an ihre Grenzen bringen kann. Natürlich kommt es nicht nur auf die Leistung an.
00:00:44Die Fähigkeiten eures Teams und die Art des Produkts beeinflussen maßgeblich, welches
00:00:49Framework ihr wählt, aber hoffentlich gibt euch dies eine Orientierungshilfe.
00:00:58Schauen wir uns kurz eine Demo der entwickelten App an. Wir starten die App,
00:01:03wählen den aufzunehmenden Bildschirm aus und klicken auf Aufnahme. Nun nehmen wir kurz
00:01:08den Bildschirm auf. Wenn wir fertig sind, drücken wir Stopp. Ein Fenster erscheint mit unserer Aufnahme
00:01:12auf der Timeline. Wir können sie zuschneiden, um Pausen zu entfernen, und als MP4 exportieren. Die App ist
00:01:18eigentlich sehr simpel, aber da wir mehrere APIs nutzen, Videos aufnehmen, verarbeiten und
00:01:24die Benutzeroberfläche rendern, ist dies ein guter Test. Als Erstes prüfen wir
00:01:28die Paketgröße. Denkt daran, die Apps bieten alle identische Funktionen. Electron als Basis liegt bei 323
00:01:35Megabyte, Tauri bei nur 57 Megabyte, Electro-Bun bei 418 Megabyte und Deno bei 111 Megabyte.
00:01:44Alle nutzen zudem eingebettetes FFmpeg für MP4-Exporte, was allein 45 Megabyte ausmacht. Electro-Bun ist so
00:01:52groß, weil ich Chromium mitliefern musste. Ich habe es versucht, aber ich konnte die
00:01:56Bildschirmaufnahme nicht mit der nativen System-Webview zum Laufen bringen, speziell zur Aufnahme aus JavaScript.
00:02:01Man benötigt die Screen-Capture-API und die getDisplayMedia-Funktion. Man fragt den Browser nach dem Bildschirm,
00:02:06er gibt einen Stream zurück, der Media-Recorder kodiert ihn – so machen es Electron und Deno. Electro-Bun
00:02:12enthält diese API gar nicht, also muss man zwingend Chromium hinzufügen, was
00:02:17weitere 200 Megabyte Ballast mitbringt. Denos API implementiert dies, also ist es derselbe Code,
00:02:24aber ohne Chromium. Deshalb landet Denos Paketgröße bei etwa 100 Megabyte und Electro-
00:02:30Buns bei fast 400. Rust brauchte das nicht, da Tauri die Aufnahme nicht über
00:02:35die Webview steuert. Es läuft alles über das Backend durch das native Screen-Capture-Kit. Das ist
00:02:40dasselbe macOS-Framework, das QuickTime nutzt, und die Aufnahme erfolgt direkt im Backend. Man übergibt
00:02:46ihm ein Display, einen Codec und einen Dateipfad, und es schreibt die Datei selbst. Die Webview ist nur die UI, sie
00:02:52berührt keinen einzigen Frame. Zudem erhält man kostenlos Dinge, die JavaScript-Builds selbst handhaben müssen:
00:02:56Screen-Capture-Kit mischt Mikrofon und System-Audio selbst und finalisiert ein korrektes MP4. Ich habe
00:03:02FFmpeg in der Tauri-App gelassen, um in andere Formate zu exportieren, aber technisch gesehen ist das
00:03:07optional. Okay, nun starten wir die Apps, um die Startzeit zu messen. Ich habe ein Skript geschrieben,
00:03:13das dies zehnmal durchführt, um den Median zu bilden. Electron lag als Basis bei 273 Millisekunden, Tauri
00:03:19kam auf 311 Millisekunden, Electro-Bun auf 773 Millisekunden und Deno auf 242 Millisekunden.
00:03:29Die Überraschung für mich war, dass Tauri nicht am schnellsten war; es liegt knapp hinter Electron. Deno
00:03:34hat tatsächlich alle geschlagen. Die Annahme wäre, dass Rust plus System-Webview für sofortige
00:03:39Starts sorgt, aber da die Rendering-Engine ohnehin hochfahren muss, trägt dies vermutlich zur
00:03:44etwas langsameren Startgeschwindigkeit bei. Electro-Bun ist der Ausreißer, fast dreimal langsamer als Electron. Es startet
00:03:50einen Launcher, der Bun startet, das wiederum Chromium startet – drei Runtimes in einer Kette, das merkt man deutlich.
00:03:56Schauen wir uns nun den Speicherverbrauch nach dem Start an. Wenn die App läuft, ist Electron
00:04:01wieder die Basis mit 128 Megabyte. Tauri kam auf 109 Megabyte, Electro-Bun auf 208 und Deno auf 98
00:04:10Megabyte. Deno und Tauri waren also fast gleichauf, während Electro-Bun fast das Doppelte verbrauchte.
00:04:15Für Tauri ist das keine zehnfache Verbesserung, wie das Marketing impliziert. Auf der Festplatte ja,
00:04:21sie ist viel kleiner, aber der tatsächliche Speicherbedarf bei laufender Anwendung ähnelt den anderen
00:04:26Tools sehr. Ein Punkt, auf den man bei eigenen Tests achten sollte: Tauri nutzt die
00:04:31System-Webview, und diese Prozesse sind keine Kinderprozesse eurer App; macOS startet sie separat,
00:04:36daher zeigt die Aktivitätsanzeige Tauri mit etwa 36 Megabyte an. Es sieht aus, als würde es Electron dreifach
00:04:42schlagen, aber das tut es nicht. Wenn man alle diese Prozesse zusammenzählt, liegen die 36 Megabyte eher bei 109
00:04:48Megabyte, was wir im Test gemessen haben. Was die Bildschirmaufnahme angeht, bemerkte ich eine viel bessere
00:04:53Leistung bei der Tauri-App. Das liegt wahrscheinlich daran, dass wir die Daten nicht in der Webview
00:04:58aufnehmen und dann über eine Bridge übertragen, sondern alles nativ mit dem System-SDK
00:05:04aufnehmen. Wenn man 60 FPS Aufnahmen anstrebt, ist Rust mit Tauri der richtige Weg.
00:05:10Schauen wir uns nun die Entwicklererfahrung an. Aufgrund der Unterschiede der Plattformen war diese
00:05:15einfache App gar nicht leicht zu bauen. Insgesamt waren Electron und Tauri am einfachsten zu
00:05:20implementieren, aber Deno und Electro-Bun hatten viele Probleme und Systemabstürze. In Deno schloss sich
00:05:26die gesamte Anwendung beim Start der Aufnahme, wenn man die App versteckte. Ich denke, das liegt daran,
00:05:30dass Deno bei unsichtbaren Bildschirmen annimmt, die Anwendung sei fertig, und beendet
00:05:36den gesamten Prozess. Der Workaround war, die Ansicht einfach außerhalb des Bildschirms zu verstecken.
00:05:41Electro-Bun hatte Probleme damit, Chromium für die Aufnahme bündeln zu müssen, und aus irgendeinem
00:05:46Grund hängt das Paket von Three.js und Babylon.js für 3D-Rendering ab, was zur
00:05:53aufgeblähten Paketgröße beitrug. Alles in allem würde ich persönlich Tauri wählen. Wenn ihr aber
00:05:58nicht in Rust programmieren wollt, ist Electron weiterhin die ausgereifte Plattform für TypeScript-Entwickler. Deno sieht okay aus, aber ich denke,
00:06:04die Plattform braucht noch Zeit. Electro-Bun war für mich die schlechteste von allen.
00:06:09Ich hoffe, ihr könnt euch nun ein eigenes Urteil bilden. Lasst mich in den Kommentaren wissen, was ihr denkt. Wir haben auch
00:06:13ein Video speziell über Deno Desktop gemacht. Wenn ihr mehr darüber erfahren wollt, klickt auf dieses
00:06:18Video hier. Ansonsten, ich bin Warren von BetterStack, danke fürs Zuschauen und bis zum nächsten Mal.

핵심 요약

Tauri ist aufgrund seiner geringen Paketgröße und nativen Performance für professionelle Anwendungen am besten geeignet, während Electron als ausgereifte Plattform für TypeScript-Entwickler eine stabile Alternative bleibt.

하이라이트

  • Tauri erreicht die kleinste Paketgröße von 57 Megabyte, während Electro-Bun aufgrund der Chromium-Integration 418 Megabyte benötigt.

  • Deno Desktop erzielt mit 242 Millisekunden die schnellste Startzeit, knapp vor Electron mit 273 Millisekunden.

  • Der tatsächliche Arbeitsspeicherbedarf laufender Anwendungen unterscheidet sich bei allen vier Frameworks nur geringfügig und liegt zwischen 98 und 208 Megabyte.

  • Tauri nutzt für die Bildschirmaufnahme das native macOS-Screen-Capture-Kit, was eine stabilere Leistung bei 60 FPS ermöglicht.

  • Die Implementierung der Bildschirmaufnahme erweist sich in Deno und Electro-Bun als fehleranfällig und instabil im Vergleich zu Electron und Tauri.

타임라인

Vergleich der Framework-Optionen

  • Electron dient als Basis für den Leistungsvergleich.
  • Tauri, Electro-Bun und Deno Desktop bilden die alternativen Testkandidaten.
  • Die Test-App umfasst Bildschirmaufnahme, Timeline-Bearbeitung und MP4-Export.

Die Auswahl der Frameworks basiert auf dem Markt für plattformübergreifende Desktop-Anwendungen. Als Testobjekt dient ein Bildschirmaufnahme-Tool, da die Videoverarbeitung die Grenzen der verschiedenen Laufzeitumgebungen effizient aufzeigt.

Analyse der Paketgröße

  • Tauri reduziert die Paketgröße durch den Verzicht auf mitgelieferte Webview-Engines.
  • Electro-Bun erreicht 418 Megabyte, da Chromium zwingend für die Screen-Capture-API erforderlich ist.
  • Deno und Electron nutzen die Standard-Webview-Implementierung für die Bildschirmaufnahme.

Die Paketgrößen variieren zwischen 57 Megabyte bei Tauri und 418 Megabyte bei Electro-Bun. Tauri profitiert davon, dass die Bildschirmaufnahme direkt über das native System-Backend gesteuert wird, anstatt auf JavaScript-basierte APIs in der Webview angewiesen zu sein.

Startgeschwindigkeit und Speicherauslastung

  • Deno erreicht mit 242 Millisekunden die schnellste Startzeit aller getesteten Tools.
  • Electro-Bun startet aufgrund einer mehrstufigen Runtime-Kette mit 773 Millisekunden am langsamsten.
  • Der reale Arbeitsspeicherbedarf liegt bei laufender Anwendung trotz Marketingversprechen für alle Tools in einem ähnlichen Bereich.

Messungen über zehn Durchläufe hinweg zeigen, dass Deno beim Kaltstart am schnellsten reagiert. Bei der Speicherauslastung offenbaren Systemtools, dass die scheinbar niedrigen Werte von Tauri die externen Prozesse der nativen Webview nicht vollständig widerspiegeln.

Entwicklererfahrung und Fazit

  • Tauri und Electron zeigen die höchste Stabilität bei der Implementierung.
  • Deno und Electro-Bun leiden unter Systemabstürzen bei der Verwendung von Bildschirmaufnahme-Funktionen.
  • Tauri ist für performante Anforderungen die bevorzugte Wahl.

Die Entwicklererfahrung zeigt erhebliche Stabilitätsprobleme bei Deno, wo beispielsweise versteckte Fenster zum Prozessabbruch führen. Für Anwender, die Rust als Sprache vermeiden möchten, bleibt Electron aufgrund der hohen Reife die zuverlässigste Plattform.

커뮤니티 글

모든 글 보기