Het voortdurend verkrijgen van nieuwe frameworks en bibliotheken is iets waar JavaScript bekend om staat. In juli 2022 verwelkomde het ecosysteem een nieuw lid: Bun.js. Hier zullen we Bun.js bekijken en zien hoe dit het bredere JavaScript-ecosysteem beïnvloedt.
Wat is Bun.js?
broodje wordt gedefinieerd als "een snelle alles-in-één JavaScript-runtime". Het is de derde in zijn soort na Node.js en Deno.js, gemaakt door Jarred Sumner met behulp van de programmeertaal Zig.
Het belangrijkste doel is om een platform te bieden voor het uitvoeren van JavaScript buiten de browser, net als Node.js en Deno.js, maar Bun gaat vooruit om nieuwe niveaus van snelheid en verbeterde complexiteit te bieden.
Hoe JavaScript is geëvolueerd
JavaScript is oorspronkelijk gebouwd om alleen in browsers te worden uitgevoerd, mogelijk gemaakt door motoren zoals SpiderMonkey en V8. In 2009 heeft Ryan Dahl de V8-motor ingebed in een C++-programma dat hij Node.js noemde. JavaScript is sindsdien relevant geworden voor verschillende toepassingen, zoals server-side en real-time toepassingen.
Promises en ES-modules zijn voorbeelden van moderne JavaScript-functies die niet bestonden toen Node.js werd gemaakt. Ryan gaf in 2018 ook een lezing over dingen waar hij spijt van had over Node.js. Zijn spijt inspireerde de creatie van Deno.js die hij in 2020 uitbracht.
Deno is een uitvoerbaar bestand dat is gebouwd met Rust en dat tot doel heeft alle tekortkomingen van Node aan te pakken, zoals beveiliging, prestaties en native TypeScript-ondersteuning. Het is aanzienlijk sneller en veiliger dan Node, en het wordt geleverd met tools die ontbreken in Node.js.
Deno heeft echter niet de massale acceptatie bereikt die wordt verwacht, zelfs niet na vier jaar release, aangezien de meeste moderne systemen al op Node zijn gebaseerd en verandering lastig kan zijn voor ontwikkelaars. Moet het meeste herschrijven npm pakketten voor Deno-ondersteuning daagt ook de acceptatie ervan uit.
In juli 2022 verscheen een nieuwe runtime in bèta -- "Bun.js" -- die een trending topic is geweest in en buiten de JavaScript-gemeenschap. De interoperabiliteit met Node.js en de hoge snelheidsprestaties die het beweert te bieden, waren het paradepaardje. Het heeft ook geleid tot discussies dat er eindelijk een "Node-destroyer" in de buurt is.
Hoe verhoudt Bun.js zich tot Node.js en Deno.js?
Node, Deno en Bun zijn allemaal runtimes voor JavaScript buiten de browser, dit neutraliseert de verschillen ertussen niet.
Node.js is geschreven in C++, Deno in Rust en Bun in Zig. "De low-level controle over het geheugen en het ontbreken van verborgen controlestroom in Zig maken het makkelijker om snelle software te schrijven", zegt Bun's website.
Terwijl Node en Deno beide de V8-engine van Google gebruiken, maakt Bun gebruik van de "quick-start" -prestaties van Webkit's JavaScriptCore engine die Apple's Safari gebruikt. Benchmarkresultaten van de website laten zien hoe Bun zowel Node als Deno verslaat in prestaties, en werkt minstens 3X sneller dan beide runtimes.
Bun heeft npm (Node package manager) ingebouwd waardoor pakketinstallatie vanaf npm gemakkelijk en snel is (20x de snelheid in Node), het ondersteunt ook TypeScript en transpileert automatisch TS- en JSX-bestanden. Andere opwindende functies van Bun zijn een ingebouwde SQLite3-client, web-API's zoals fetch en WebSocket, automatisch laden van omgevingsvariabelen en een testrunner.
Van alle drie spant Bun de kroon voor de prestaties. Node blijft de meest stabiele met een zeer grote community, terwijl Deno momenteel de meest veilige is.
Zal Bun.js echt invloed hebben op het ecosysteem?
Het ecosysteem is enthousiast over de release van Bun. Het is prettig dat de hype rond Bun sinds de aankondiging enorm is. Het is absoluut zo'n big deal. JavaScript-ontwikkelaars zouden er dol op zijn, gezien de "razende" snelheid en robuuste tooling voor productiviteit.
Verder, Bun's Discord-server heeft al meer dan 2000 leden, wat de opwinding in de gemeenschap voor deze nieuwe technologie bewijst.
Wat is de toekomst van Node.js, Deno.js en Bun.js?
JavaScript zal niet snel verdwijnen. In werkelijkheid is het een van de technologieën waarvan we zeker weten dat ze er over 10 jaar nog steeds zijn. Node, Deno en Bun hebben ook een toekomst.
Node wordt nog steeds regelmatig bijgewerkt, versie 18.0 zojuist uitgebracht recent, daarom blijft de toekomst intact, zelfs met Deno en Bun in de buurt. Veel bedrijven zoals PayPal gebruiken Node in hun infrastructuur en zelfs nieuwe startups volgen dit voorbeeld.
De zaak is vergelijkbaar voor Deno, die actief wordt ontwikkeld en groter wordt. Deno evolueert ook naar een SaaS-oplossing om beheerde JavaScript-runtimeservices te bieden.
Bun.js is nog steeds onstabiel en heeft beperkte ondersteuning (je hebt Windows-subsysteem voor Linux om het op Windows uit te voeren). Hoewel het zoveel mogelijkheden heeft, kan het nu geen optie zijn voor productieklare software, omdat er nog veel werk aan te doen is.
Hoewel de toekomst zeker veelbelovend is voor Bun, is het logisch om te geloven dat deze drie technologieën hoogstwaarschijnlijk naast elkaar zullen bestaan in het ecosysteem, en niet dat de een de ander zal vervangen.
Bun.js zou een game-wisselaar kunnen zijn
Met Bun kunnen veel dingen beter worden over JavaScript. Het is waarschijnlijk tijd voor JavaScript om een betere acceptatie te krijgen in prestatiekritieke gebieden zoals AI/ML, game-ontwikkeling, enz. Ga naar de Bun.sh website om te leren hoe je Bun installeert en begint te ontwikkelen.