
Bun
Bun ist ein Programm, mit dem man in der Programmiersprache JavaScript geschriebene Software auf einem Computer ausführen kann. Es gilt als schnelle Alternative zu Node.js und bündelt mehrere Werkzeuge, die Entwickler sonst einzeln installieren müssten.
JavaScript ist die Programmiersprache, in der fast alle interaktiven Webseiten geschrieben sind. Ursprünglich lief sie nur im Browser. Damit solcher Code auch auf einem normalen Computer oder auf einem Server läuft, braucht man ein zusätzliches Programm, eine sogenannte Laufzeitumgebung. Bun ist so eine Laufzeitumgebung: Man übergibt ihr eine Datei mit JavaScript-Code, und sie führt ihn aus. Bun wurde 2021 von dem Entwickler Jarred Sumner gestartet und 2023 in einer ersten stabilen Fassung veröffentlicht. Der große Konkurrent heißt Node.js und existiert seit 2009.
Warum Entwickler auf Geschwindigkeit und ein Rundum-Paket schauen
Wer Software schreibt, wartet ständig. Der Code muss gestartet, umgewandelt und getestet werden, oft hunderte Male am Tag. Bun verspricht genau hier Sekunden statt Minuten. Bei manchen Aufgaben, etwa dem Installieren von fremden Code-Bausteinen, ist es laut eigenen Messungen mehrfach schneller als die etablierten Werkzeuge.
Der zweite Punkt ist die Bündelung. In der JavaScript-Welt ist es üblich, für jede Teilaufgabe ein eigenes Programm zu benutzen: eines zum Installieren von Bibliotheken, eines zum Testen, eines zum Zusammenpacken des Codes für den Browser. Diese Werkzeuge muss man einrichten und aufeinander abstimmen. Bun bringt all das in einem einzigen Programm mit. Für Einsteiger bedeutet das weniger Konfiguration, für Firmen weniger Bauteile, die kaputtgehen können.
Bun ist deshalb auch ein wirtschaftliches Thema. Hinter dem Projekt steht die Firma Oven, die Risikokapital eingesammelt hat. Wenn Serverprogramme schneller laufen, braucht man weniger Rechenleistung, und das senkt Cloud-Rechnungen. Genau damit wirbt das Projekt.
JavaScriptCore, Zig und die Node-Kompatibilität
Jede JavaScript-Laufzeitumgebung braucht einen Motor, der den Code in Maschinenbefehle übersetzt. Node.js benutzt V8, den Motor aus Googles Browser Chrome. Bun benutzt stattdessen JavaScriptCore, den Motor aus Apples Browser Safari. Dieser Motor startet in vielen Fällen schneller, was bei kurzlebigen Programmen deutlich auffällt.
Der Rest von Bun ist in der jungen Programmiersprache Zig geschrieben. Zig arbeitet sehr nah an der Hardware und überlässt dem Programmierer die Kontrolle über den Speicher. Das ist aufwendiger zu schreiben, erlaubt aber sehr sparsamen Code. Zusätzlich hat das Team viele Funktionen selbst neu programmiert, statt fertige Bausteine zu übernehmen. Kürzere Wege im Inneren sind ein wesentlicher Grund für die gemessenen Vorteile.
Wichtig ist außerdem die Verträglichkeit mit Node.js. Bun versucht, die Befehle und Bibliotheken von Node nachzubilden, damit bestehende Projekte ohne Umschreiben laufen. Vollständig gelingt das nicht, gerade bei selten genutzten Funktionen gibt es Lücken. Ein häufiger Irrtum ist, Bun sei einfach eine schnellere Version von Node. Es ist ein eigenes Programm, das sich nur bemüht, kompatibel zu sein.
Bun in Projekten, Stellenanzeigen und der Debatte um Node-Alternativen
Direkt sichtbar wird Bun nur für Menschen, die programmieren. Man installiert es und tippt dann Befehle wie bun run oder bun install in die Kommandozeile. In Tutorials für Web-Entwicklung taucht es inzwischen regelmäßig neben Node.js auf. Auch in Stellenanzeigen für Webentwickler wird es gelegentlich genannt.
In Tech-News begegnet man dem Namen meist im Zusammenhang mit dem Wettbewerb der Laufzeitumgebungen. Neben Node.js und Bun gibt es Deno, ein weiteres Projekt mit ähnlichem Ziel. Berichte drehen sich um Geschwindigkeitsvergleiche, um Finanzierungsrunden oder um die Frage, ob große Firmen wechseln. Solche Vergleiche sollte man vorsichtig lesen, denn Messwerte hängen stark von der gewählten Aufgabe ab.
Indirekt profitieren am Ende auch normale Nutzer. Viele Webseiten und Apps werden mit solchen Werkzeugen gebaut. Schnellere Werkzeuge bedeuten kürzere Entwicklungszyklen und, bei Servern, geringeren Stromverbrauch pro Anfrage.