Att få nya ramverk och bibliotek hela tiden är något JavaScript är känt för. I juli 2022 välkomnade ekosystemet en ny medlem: Bun.js. Här ska vi ta en titt på Bun.js och se hur det påverkar det bredare JavaScript-ekosystemet.
Vad är Bun.js?
Bulle definieras som "en snabb allt-i-ett JavaScript-runtime". Det är den tredje i sitt slag efter Node.js och Deno.js, skapad av Jarred Sumner med hjälp av Zig-programmeringsspråket.
Dess huvudsakliga syfte är att tillhandahålla en plattform för att köra JavaScript utanför webbläsaren precis som Node.js och Deno.js, men Bun går vidare för att ge nya nivåer av hastighet och förbättrad komplexitet.
Hur JavaScript har utvecklats
JavaScript byggdes ursprungligen för att endast köras i webbläsare, som drivs av motorer som SpiderMonkey och V8. 2009 bäddade Ryan Dahl in V8-motorn i ett C++-program som han kallade Node.js. JavaScript har sedan dess blivit relevant för olika användningsområden som serversida och realtidsapplikationer.
Promises och ES-moduler är exempel på moderna JavaScript-funktioner som inte fanns när Node.js skapades. Ryan höll också ett föredrag 2018 om saker han ångrade med Node.js. Hans ånger inspirerade till skapandet av Deno.js som han släppte 2020.
Deno är en körbar byggd med Rust som syftar till att ta itu med alla Nodes brister som säkerhet, prestanda och inbyggt TypeScript-stöd. Det är betydligt snabbare och säkrare än Node, och det kommer med verktyg som saknas i Node.js.
Deno har dock inte fått den massiva adoption som förväntas ens efter fyra års utgivning, eftersom de flesta moderna system redan är nodbaserade och förändring kan vara jobbigt för utvecklare. Måste skriva om det mesta npm paket för Deno-stöd utmanar också dess antagande.
I juli 2022 dök en ny körtid upp i beta - "Bun.js" - som har varit ett trendämne i och utanför JavaScript-communityt. Interoperabiliteten med Node.js och höghastighetsprestanda som den påstår sig erbjuda har varit spektakulära. Det har också väckt diskussioner om att det äntligen finns en "Node-destroyer" runt.
Hur jämför Bun.js med Node.js och Deno.js?
Node, Deno och Bun är alla körtider för JavaScript utanför webbläsaren, detta neutraliserar inte skillnaderna mellan dem.
Node.js skrevs i C++, Deno i Rust och Bun i Zig. "Lågnivåkontrollen över minnet och avsaknaden av dolt kontrollflöde i Zig gör det lättare att skriva snabb mjukvara", säger Buns hemsida.
Medan Node och Deno båda kör Googles V8-motor, utnyttjar Bun "snabbstarts"-prestandan hos Webkits JavaScriptCore motor som Apples Safari använder. Benchmarkresultat från webbplatsen visar hur Bun slår både Node och Deno i prestanda och fungerar minst 3 gånger snabbare än båda körtiderna.
Bun har npm (Node package manager) inbyggd vilket gör paketinstallationen från npm enkel och snabb (20x hastigheten i Node), den stöder även TypeScript och autotranspilerar TS- och JSX-filer. Andra spännande funktioner i Bun inkluderar en inbyggd SQLite3-klient, webb-API: er som hämta och WebSocket, miljövariabler som laddas automatiskt och en testkörning.
Av alla tre tar Bun kakan för prestation. Node är fortfarande den mest stabila med en mycket stor community, medan Deno för närvarande är den säkraste.
Kommer Bun.js verkligen att påverka ekosystemet?
Ekosystemet är upphetsat över Buns släpp. Det är behagligt att hajpen kring Bun har varit enorm sedan tillkännagivandet. Det är absolut en så stor sak. JavaScript-utvecklare skulle verkligen älska det med tanke på dess "flammande" hastighet och robusta verktyg för produktivitet.
Vidare, Buns Discord-server har redan över 2000 medlemmar vilket bevisar spänningen i samhället för denna nya teknik.
Vad är framtiden för Node.js, Deno.js och Bun.js?
JavaScript försvinner inte när som helst snart. I verkligheten är det en av de teknologier som vi är säkra på att det fortfarande kommer att finnas om tio år från och med nu. Node, Deno och Bun har också en framtid.
Node uppdateras fortfarande regelbundet, version 18.0 precis släppt nyligen, därför förblir dess framtid intakt även med Deno och Bun runt. Många företag som PayPal använder Node i sina infrastrukturer, och även nya startups följer efter.
Fallet är liknande för Deno, som aktivt utvecklas och växer sig större. Deno avancerar också till en SaaS-lösning för att tillhandahålla hanterade JavaScript-runtime-tjänster.
Bun.js är fortfarande instabil och har begränsat stöd (du behöver Windows undersystem för Linux för att köra den på Windows). Även om det har så många möjligheter, kan det inte vara ett alternativ för produktionsklar programvara nu eftersom det fortfarande finns mycket arbete att göra med det.
Även om framtiden definitivt är lovande för Bun, är det logiskt att tro att dessa tre teknologier med största sannolikhet kommer att samexistera i ekosystemet, inte den ena ersätter den andra.
Bun.js kan vara en spelomvandlare
Med Bun kan många saker bli bättre med JavaScript. Det är förmodligen dags för JavaScript att få bättre användning inom prestandakritiska områden som AI/ML, spelutveckling, etc. Gå till Bun.sh webbplats för att lära dig hur du installerar och börjar utveckla med Bun.