Over 10 years we help companies reach their financial and branding goals. Engitech is a values-driven technology agency dedicated.

Gallery

Contacts

411 University St, Seattle, USA

engitech@oceanthemes.net

+1 -800-456-478-23

Development

Bun, l’incubo di Node.js è arrivato

Node.js è da tempo una pietra miliare nel universo JavaScript, tuttavia sta entrando in scena un nuovo sfidante da non sottovalutare. Il nuovo arrivato genera intorno a sè un entusiasmo innegabile. 

Nel lontano 2008, JavaScript era il linguaggio di coding utilizzato principalmente per la creazione della parte frontend di siti Web e per la gestione eventi. Nel 2009 poi, Ryan Dahl introdusse NodeJs, permettendo agli sviluppatori di scrivere JavaScript non solo sul lato client (frontend) ma anche sul lato server (backend). Mano mano che Node.js cresceva, aumentava anche la sua complessità. Era un ambiente di runtime rivoluzionario, ma presentava molti difetti, alcuni dei quali persistono ancora oggi. 

Volendo risolvere questi problemi, Ryan Dahl tornò nel 2020 con Deno, che risolse tutti i problemi e i difetti di NodeJs. Tuttavia, ci sono problemi comuni sia in NodeJs che in Deno, che rimangono tuttora senza risoluzione. Per affrontare i problemi di entrambi e a causa della frustrazione per la velocità di NodeJs durante lo sviluppo di un progetto NextJs, Jarred Summer ha introdotto Bun nel 2022. 

Bun è il nuovo rivale da non sottovalutare, che sta generando intorno a sè un entusiasmo innegabile. L’ultimo ambiente runtime e toolkit JavaScript all-in-one, è progettato per la velocità, completo di bundler, test runner e gestore di pacchetti compatibile con Node.js. Si può dire che è il terzo del suo genere dopo Node.js e Deno.js, frutto della mente di Jarred Sumner e creato utilizzando il linguaggio di programmazione di basso livello Zig.

Ecco Bun vuole essere l’evoluzione del sistema trasporti che che allevia la congestione cittadina della metropoli che è ormai diventata Node.js, rendendo le cose più fluide e semplici. 

Un runtime JavaScript è un ambiente che fornisce tutti i componenti necessari per utilizzare ed eseguire un programma JavaScript.

Cos’è Bun

Bun è un nuovo runtime JavaScript creato da zero per servire l’odierno ecosistema JavaScript. Il suo obiettivo è eseguire la maggior parte del JavaScript lato server, fornendo gli strumenti necessari per migliorare le prestazioni, ridurre la complessità e moltiplicare la produttività degli sviluppatori.

Le librerie sono tutte costruite in C e Zig, questo per evitare qualsiasi dipendenza da Node o NPM, riducendo così al minimo JavaScript nel suo stack, decisioni finalizzate a massimizzare le prestazioni del nuovo runtime.  La bellezza di Bun risiede proprio nella sua capacità di snellire il processo di sviluppo, in modo da renderlo più fluido ed efficiente. 

I suoi vantaggi principali sono tre:

  • Velocità. Bun inizia veloce e corre veloce. 

    Con motore JavaScript si intende un programma che capace di convertire il codice JavaScript in codice macchina, così da permettere al computer di eseguire tutte le attività richieste.

    Node.js utilizza il motore V8 di Google, che alimenta il browser Chrome.
    Bun invece utilizza JavaScriptCore (JSC), un motore JavaScript open source sviluppato da Apple per il browser Safari.

    V8 e JSC utilizzano architetture e strategie di ottimizzazione molto diverse: JSC dà priorità a tempi di avvio più rapidi e a un utilizzo ridotto della memoria con un tempo di esecuzione leggermente più lento, mentre V8 dà priorità all’esecuzione rapida con una maggiore ottimizzazione del runtime che può portare a un maggiore utilizzo della memoria. Grazie a questo, Bun è risultato 2 volte più veloce di Deno e 4 volte più veloce di Node

    Poiché l’informatica si sposta verso l’edge, questo è fondamentale.
  • API eleganti. Bun fornisce un set minimo di API altamente ottimizzate per l’esecuzione di attività comuni, come l’avvio di un server HTTP e la scrittura di file.

    Il motore JS, non potendo funzionare da solo, si combina con API esterne, code di messaggi e il ciclo di eventi per creare un runtime Javascript. In passato, le API standard Web disponibili nei browser non erano supportate in modo nativo e ciò costringeva gli sviluppatori a fare affidamento su pacchetti di terze parti per quanto riguarda questa funzionalità. 

    Bun rende tutto questo più semplice e immediato, offrendo supporto integrato per le API standard Web. Gli sviluppatori non devono così ricorrere a pacchetti aggiuntivi di terze parti, le quali, in confronto, risultano anche meno veloci e affidabili rispetto a quelle offerte da Bun.

  • DX coeso. Bun è molto più di un semplice runtime, è un toolkit avanzato e completo per la creazione di app JavaScript, che include un potente gestore di pacchetti, un test runner e un bundler.

Un’altra caratteristica importante di Bun è che da la possibilità di utilizzare i moduli ES e CommonJs insieme all’interno dello stesso file, cosa impossibile in Node.js.

Bundler e test runner

Il raggruppamento è il processo che prende più file JavaScript e li unisce in uno o più bundle ottimizzati.

Con Node.js, il raggruppamento è solitamente gestito da strumenti di terze parti invece che da Node.js stesso. Bun è invece progettato per raggruppare codice JavaScript e TypeScript per varie piattaforme.

Particolarità propria di Bun è la presenza in esso delle macro JavaScript, che consentono l’esecuzione di funzioni JavaScript durante il raggruppamento, con i risultati direttamente integrati nel pacchetto finale. Questo meccanismo offre un’ alternativa che potrebbe rimodellare il panorama del raggruppamento.

Il test è un passaggio cruciale nello sviluppo del software, in quanto garantisce che il codice si comporti come previsto, mentre individua potenziali problemi prima che emergano in fase di produzione. Mentre gli sviluppatori di Node.js si affidano a terzi per le loro esigenze di test, Bun integra un test runner che garantisce velocità, compatibilità e una gamma di funzionalità adatte ai moderni flussi di lavoro di sviluppo.

Nonostante sia ancora agli inizi, Bun sta velocemente conquistando la platea. Ad oggi risulta ottimizzato per MacOS e Linux, con tutto quello che offre, Bun è sicuramente un kit di strumenti da provare.


Vuoi saperne di più

Negli episodi precedenti



Fonti

Bun vs Node.js: tutto quello che devi sapere
https://www.builder.io/blog/bun-vs-node-js

Scopri Bun: un runtime JavaScript moderno e veloce
https://dev.to/thevinitgupta/discover-bun-a-faster-modern-javascript-runtime-5fob


Bun: rivoluzionare lo sviluppo JavaScript: una guida approfondita con esempi reali

https://maheshbasnet.medium.com/bun-revolutionizing-javascript-development-an-in-depth-guide-with-real-world-examples-e8f6ce212ad9

Leave a comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *