DEV Community

Cover image for O Futuro do Desenvolvimento Web: Node.js vs Bun
Fran Borges
Fran Borges

Posted on

O Futuro do Desenvolvimento Web: Node.js vs Bun

 

Introdução

Este artigo apresentará a análise e o impacto de um dos lançamentos mais comentados no mundo da tecnologia no último mês, conhecido como Bun. Desde seu lançamento, o Bun tem gerado grande entusiasmo e levantado questionamentos sobre como ele pode potencialmente desafiar a posição do Node.js como uma das principais plataformas de execução de JavaScript. Neste artigo, exploraremos as razões por trás desse entusiasmo, bem como os aspectos em que o Bun promete oferecer uma alternativa competitiva ao Node.js, potencialmente sacudindo as bases dos ecossistemas JavaScript.
 

Contextualizando O que é Bun e Node.js? E para que eles servem?

Image description

Explorando o Potencial do Bun!

Sé você não sabe ou perdeu as últimas notícias do mundo tech no último mês foi lançada a versão 1.0 de um novo runtime para JavaScript que vem prometendo derrubar outro runtime o mais conhecido e usado até então Node.js. Bun e um novo runtime para JavaScript e Typescript que seguindo a sua descrição permite, testar, executar e agrupar projetos fazendo o bundle em JavaScript e Typescript, é um kit de ferramentas para JavaScript tudo em um, projetado para velocidade, compatível com Node.js e com algumas das seguintes premissas:

  1. Velocidade: Bun é rápido, usando o JavaScriptCore, o mecanismo JS voltado para desenvolvimento de apps que executem JavaScript incorporando diretamente nos sistemas da Apple.

  2. APIs Simplificadas: Bun oferece APIs mínimas e altamente eficientes para tarefas comuns, como iniciar servidores HTTP e manipular arquivos.

  3. Experiência de Desenvolvimento Unificada: Bun é um conjunto completo de ferramentas para criar aplicativos JavaScript, incluindo gerenciamento de pacotes, testes e empacotamento.

  4. Suporte Nativo: Oferece suporte nativo a Typescript, e compilação built-in que e o processo de transformar código Typescript em código JavaScript.

O Bun usa o JavaScriptCore da Apple e foi desenvolvido em C e C++ mais a grande parte do seu código e escrita na linguagem Zig, que é uma linguagem de programação de código aberto projetada para ser uma alternativa mais moderna, rápida e segura a outras linguagens de baixo nível, como as próprias C e C++.

Documentação do Bun
 

Node.js

Image description

O Node, o runtime até então mais famoso e usado, é um runtime também porque tem em sua base um ambiente de execução que permite que você execute código JavaScript além do navegador, e fornece as ferramentas necessárias para que o código JavaScript interaja com o sistema e realize tarefas de servidor, com algumas das seguintes premissas.

  1. Execução no servidor: Com o Node.js, você pode criar aplicativos de servidor, como sites, APIs e serviços, usando JavaScript.

  2. Plataforma única: Ele fornece uma plataforma única para desenvolver tanto o lado do servidor quanto o lado do cliente de um aplicativo, tornando mais fácil compartilhar código entre essas partes.

  3. Modelo de programação assíncrona: O Node.js utiliza um modelo de programação assíncrona, o que significa que permite que o código execute operações de forma não bloqueante, tornando-o eficiente para manipular muitas conexões simultâneas.

  4. Event-Driven: Usa um modelo de programação orientado a eventos, onde ações desencadeiam eventos e funções são executadas em resposta a esses eventos.

O Node.js foi desenvolvido principalmente usando a linguagem C e também incorpora códigos escritos em C++. É um ambiente de tempo de execução JavaScript construído sobre o motor V8 do Google, escrito em C++. Portanto, a base do Node.js é a combinação de código C/C++ e JavaScript.

Site e Doc do Node.js
 

Javascript

Image description

JavaScript é uma linguagem de programação usada principalmente na web. É uma linguagem interpretada, por trás disso, muitas vezes é utilizada a engine V8, desenvolvida pelo Google, para transformar em linguagem de máquina e executar o código JavaScript de forma eficiente.

Mas como funciona essa relação entre a linguagem JavaScript ser interpretada e a V8 transformar isso em linguagem de máquina?

JavaScript Interpretado:

  • JavaScript é uma linguagem de programação interpretada, o que significa que o código é lido e executado linha por linha em tempo real, como se você estivesse lendo um livro linha por linha e página por página.

    • Quando você abre uma página da web, um site, com código JavaScript, o navegador interpreta cada linha de código e a executa sequencialmente, realizando as ações especificadas no código, como abrir um modal, mostrar animações ou mostrar um botão para clicar.

A V8

  • É uma engine de JavaScript desenvolvida pelo Google.

    • Ela é usada principalmente no ambiente de execução Node.js e no navegador Google o Chrome.
    • A V8 é responsável por executar código JavaScript de uma maneira eficiente, compilando-o, ela não executa o código diretamente como texto, mas sim o converte em código de máquina antes da execução, para ser executado rapidamente.
  • A V8 se concentra na velocidade de execução e é projetada para tornar o JavaScript mais rápido e utiliza uma técnica chamada Compilação Justin-In-Time (JIT), que transforma o código JavaScript em um código de máquina mais otimizado e sob demanda, á medida que o código é executado.

Isso significa que enquanto o JavaScript faz a festa é e interpretado linha por linha, a V8 compila e otimiza o código à medida que avança, melhorando a velocidade de execução e afins.

Portanto, a relação entre a linguagem JavaScript ser interpretada e a V8 estar na V8 atuando como um intermediário que compila e otimiza o código JavaScript em código de máquina, tornando a execução mais rápida e eficiente à medida que o código é interpretado.
 

O Potencial Impacto do Bun no Ecossistema Node.js

Image description

O Bun, tem a ambição de criar o seu ecossistema próprio, e já vimos que promete trazer mudanças significativas ao cenário do Node.js e de outros, mas tomando como exemplo outras criações como a de outro ambiente de execução JavaScript, o Deno criado coincidentemente pelo mesmo criador do Node.js Ryan Dahl, sé formos comparar o impacto que o Deno trouxe ao Node, só foram impactos positivos e abaixo eu exploro um pouco melhor esses impactos.

  1. Diversidade e Inovação:
    O surgimento do Bun como um novo ambiente de execução JavaScript representa uma oportunidade para a diversificação do ecossistema. A concorrência pode ser saudável entre as plataformas pode levar a uma maior inovação para todos os lados, resultando em melhorias nas ferramentas, na eficiência e na experiência de desenvolvimento para os usuários do Node.js.

  2. O Deno: também criado também por Ryan Dahl, forneceu valiosas lições sobre como melhorar o ecossistema JavaScript. Suas ênfases na segurança, sistema de módulos e suporte ao TypeScript inspiraram melhorias no Node.js. O Bun pode continuar essas evoluções, incorporando as melhores práticas aprendidas com o Deno para beneficiar os desenvolvedores e a comunidade Node.js

  3. Escolha e Flexibilidade:
    A existência do Bun oferece a nós desenvolvedores mais opções, podemos escolher a plataforma que melhor atender às necessidades dos nossos projetos e essa flexibilidade pode resultar em um ecossistema mais adaptável e ágil.
     

Conclusão

Em resumo, o Bun representa uma emocionante reviravolta no ecossistema JavaScript e pode desempenhar um papel vital no desenvolvimento futuro de aplicações JS/TS e melhorias contínuas ao Node.js e outros. À medida que ambas as plataformas evoluem, os desenvolvedores podem esperar colher os frutos dessa competição e inovação, resultando em um ambiente de desenvolvimento JavaScript cada vez mais robusto e diversificado.

Espero que esse artigo seja útil de alguma forma!!

Minhas redes sócias e outros!

Meu LinkedIn
Meu Instagram
Meu GitHub

Top comments (4)

Collapse
 
loremimpsu profile image
Lorem Impsu

o bunourtinho vai vir com tudo

Collapse
 
canhassi profile image
Canhassi

nice article

Collapse
 
mels profile image
Melina Schneider

really liked it!

Collapse
 
clintonrocha98 profile image
Clinton Rocha

O bun causou um BUN na comunidade node 🤣ótimo artigo, estou na espera dos próximos conteúdos !!