Ir para o conteúdo

Node.js

Origem: Wikipédia, a enciclopédia livre.
Node.js
AutorRyan Dahl
DesenvolvedoresNode.js Developers, Linux Foundation
Lançamento inicial27 de maio de 2009 (16 anos)[1]
Lançamento estável
22.9.0 / 17 de setembro de 2024; há 14 meses[2]
Repositórionode no GitHub
Escrito emC, C++, JavaScript
Sistema
operacional
Linux, Windows, macOS, SmartOS, AIX, FreeBSD[3]
TipoSistema de tempo de execução[4]
LicençaMIT[5]
Websitenodejs.org

Node.js é um software de código aberto, multiplataforma, baseado no interpretador V8 do Google e que permite a execução de códigos JavaScript fora de um navegador web.[6][7]

A principal característica do Node.js é sua arquitetura assíncrona e orientada por eventos.[8] O runtime do Node.js é single-thread — uma única thread (chamada de Event Loop) é responsável por executar o código Javascript, sem a necessidade de criar novas threads, o que torna o código mais simples de manter.[9] Chamadas que seriam bloqueantes, como entrada/saída, são realizadas de forma assíncrona usando a libuv.[9]

Node.js é usado pela GoDaddy,[10] Groupon,[11] IBM,[12] LinkedIn,[13][14] Microsoft,[15][16] Netflix,[17] PayPal,[18][19] Rakuten, SAP,[20] Voxer,[21] Walmart,[22] e Yahoo!.[23]

Histórico

[editar | editar código]
Ryan Dahl, Criador do Node.js

O Node.js foi inicialmente escrito por Ryan Dahl em 2009,[24] cerca de 13 anos após a introdução do primeiro ambiente JavaScript para servidores, o LiveWire Pro Web da Netscape.[25] A versão inicial oferecia suporte apenas a Linux e Mac OS X. Seu desenvolvimento e manutenção foram liderados por Dahl e posteriormente patrocinados pela Joyent.[26]

Dahl criticou a capacidade limitada do Apache HTTP Server de lidar com muitas (10.000+) conexões simultâneas, bem como o paradigma dominante de programação sequencial, no qual aplicações poderiam bloquear processos inteiros ou causar a criação de múltiplas pilhas de execução para conexões simultâneas.

Dahl demonstrou o projeto na conferência inaugural European JSConf em 8 de novembro de 2009. O Node.js combinou o mecanismo JavaScript do Google V8, um event loop e uma API de I/O de baixo nível.[27]

Em janeiro de 2010, foi introduzido um gerenciador de pacotes para o ambiente Node.js chamado npm.[28] O gerenciador de pacotes permite que programadores publiquem e compartilhem pacotes Node.js junto com o código-fonte correspondente, sendo projetado para simplificar a instalação, atualização e desinstalação de pacotes.[27]

Em junho de 2011, a Microsoft e a Joyent implementaram uma versão nativa de Node.js para Windows.[29] A primeira versão do Node.js com suporte ao Windows foi lançada em julho de 2011.

Em janeiro de 2012, Dahl entregou a gestão do projeto ao criador do npm, Isaac Schlueter.[30] Em janeiro de 2014, Schlueter anunciou que Timothy J. Fontaine lideraria o projeto.[31]

Em dezembro de 2014, Fedor Indutny criou o io.js, um fork do Node.js criado devido à insatisfação com a governança da Joyent — como uma alternativa de governança aberta com um comitê técnico separado. O objetivo era permitir uma estrutura mais receptiva à contribuição da comunidade, incluindo a atualização do io.js com as versões mais recentes do mecanismo Google V8 JavaScript, divergindo da abordagem do Node.js na época.[32]

A Node.js Foundation, criada para reconciliar o Node.js e o io.js sob uma bandeira unificada, foi anunciada em fevereiro de 2015.[33]

A fusão foi concretizada em setembro de 2015, com o Node.js v0.12 e o io.js v3.3 se combinando no Node v4.0.[34]

Essa fusão trouxe recursos ES6 do V8 para o Node.js e iniciou um ciclo de lançamentos de suporte de longo prazo.[35] Em 2016, o site do io.js recomendava o retorno ao Node.js e anunciava que não haveria mais versões do io.js, encerrando efetivamente o fork e consolidando o sucesso da fusão.[36]

Em 2019, a JS Foundation e a Node.js Foundation se fundiram para formar a OpenJS Foundation.

Características

[editar | editar código]

A principal característica e diferença de outras tecnologias (como PHP, Java, C# e C) é a execução das requisições/eventos em single-thread, onde apenas uma thread (chamada de Event Loop) é responsável por executar o código Javascript, sem a necessidade de criar nova thread que utilizaria mais recursos computacionais (por exemplo memória RAM) e sem o uso da fila de espera.[37]

Gerenciamento de pacotes

[editar | editar código]

O gerenciamento dos pacotes é feito através do node package manager (npm), e npx (node package extractor), o npx foi introduzido na versão 5.2.0 do JavaScript, antes deveria ser instalado individualmente. O primeiro tem o propósito de instalar para uso posterior código armazenado num package de nodejs, instalando o software globalmente ou localmente, já o segundo tem o propósito de executar a nível local o código instalado globalmente. Um exemplo disso é o npx create-react-app que tem como propósito instalar em nível local um gabarito (template) vazio de um site de react, pronto a ser usado, através de uma fórmula instalada com npm.

Vantagens de uso

[editar | editar código]

Flexibilidade

[editar | editar código]

O Node.js possui o gerenciador com inúmeros pacotes e software reusável NPM (Node Package Manager), dando ao interpretador um potencial a ser utilizada em qualquer situação. O pacote mais conhecido é o Express.js, um arcabouço (framework) completo para desenvolvimento de aplicações web.[37]

Um ambiente Node.js não exige muitos recursos computacionais tradicionais. Se utilizado em conjunto com a ferramenta Docker, o ganho na velocidade de deployment e replicação de máquinas pode ser muito significativo e, em ambientes escaláveis, de microsserviços e serverless, representa menos custo e mais eficiência.[37] Um exemplo de uso é uma aplicação de troca de mensagens (conversa, bate-papo ou webchat).[37]

Conta com suporte das principais empresas de serviços de armazenamento na nuvem, como a AWS, Google Cloud e, Microsoft Azure, com suporte nativo ao Node.JS.

Produtividade

[editar | editar código]

O gerenciador NPM fornece pacotes reusáveis disponíveis gratuitamente para uso em grupo;[37]

Mesma linguagem no front end e back end, que pode representar ganhos de reúso de código e criação de equipes multidisciplinares, reaproveitando recursos;[37]

A possibilidade de deployments e iterações mais rápidas, e resolução de problemas on the fly, também permitem a criação de soluções próprias e inovadoras, como a Uber faz para resolver alguns problemas.[37]

Ver também

[editar | editar código]

Referências

  1. «Release v0.0.1». Github (em inglês). 27 de maio de 2009. Consultado em 22 de maio de 2021 
  2. «Release 2024-09-17, Version 22.9.0 (Current), @RafaelGSS». Github (em inglês). 17 de setembro de 2024. Consultado em 12 de outubro de 2024 
  3. «node/BUILDING.md at master». Github. Consultado em 22 de maio de 2021 
  4. «Sobre | Node.js». Node.js. Consultado em 22 de maio de 2021 
  5. «node/LICENSE at master». GitHub (em inglês). Consultado em 22 de maio de 2021 
  6. «node/README.md at master». Github (em inglês). Consultado em 22 de maio de 2021 
  7. «Home | Node.js». Node.js (em inglês). Consultado em 22 de maio de 2021 
  8. «About». Node.js. Consultado em 25 de novembro de 2022 
  9. a b «Introduction to Node.js». Node.js. Consultado em 25 de novembro de 2022 
  10. Why GoDaddy’s Nodejitsu deal is great for Node.js, VentureBeat, February 10, 2015
  11. Geitgey, Adam (30 de outubro de 2013). «I-Tier: Dismantling the Monoliths». Groupon. Consultado em 30 de abril de 2014 
  12. «IBM Bluemix». Consultado em 4 de julho de 2015 
  13. «You'll never believe how LinkedIn built its new iPad app». VentureBeat. 2 de maio de 2012. Consultado em 10 de maio de 2012 
  14. «Blazing fast node.js: 10 performance tips from LinkedIn Mobile». Consultado em 7 de abril de 2015 
  15. Baxter-Reynolds, Matthew (9 de novembro de 2011). «Here's why you should be happy that Microsoft is embracing Node.js». London: The Guardian. Consultado em 10 de maio de 2012 
  16. «WebMatrix - Front End Web Developers take note (ASP.NET, PHP, node.js and more)». Consultado em 2 de agosto de 2014 
  17. Node.js in Flames November 19, 2014
  18. «Clash of the Titans: Releasing the Kraken, NodeJS @paypal». fluentconf.com. 28 de maio de 2013. Consultado em 11 de setembro de 2013 
  19. «All such companies and their products in which Node.js is used». Consultado em 2 de agosto de 2014 
  20. «SAP AppBuilder». SAP. 10 de março de 2014. Consultado em 10 de março de 2014 
  21. The Node Ahead: JavaScript leaps from browser into future, The Register, March 1, 2011
  22. «Why Walmart is using Node.js». VentureBeat. 24 de janeiro de 2012. Consultado em 10 de maio de 2012 
  23. «Yahoo! Announces Cocktails Shaken, Not Stirred». Consultado em 7 de abril de 2015 
  24. «About Node.js, and why you should add Node.js to your skill set?». Training.com. 11 de setembro de 2016. Consultado em 23 de outubro de 2016. Arquivado do original em 1 de abril de 2017 
  25. Staff, CNET News (15 de outubro de 1996). «Netscape opens intranet attack». CNET (em inglês). Consultado em 20 de abril de 2017 
  26. Ryan Dahl (9 de novembro de 2010). «Joyent and Node». Google Groups. Consultado em 5 de fevereiro de 2015 
  27. a b [https://books.google.com/books?id=ZH6bpbcrlvYC&q=nodejs Professional Node.js: Building JavaScript Based Scalable Software], John Wiley & Sons, 01-Oct-2012
  28. «Earliest releases of npm». GitHub. Consultado em 27 de julho de 2016 
  29. Ryandahl (23 de junho de 2011). «Porting Node to Windows With Microsoft's Help». nodejs.org. Consultado em 17 de abril de 2016 
  30. Dahl, Ryan. «New gatekeeper». Consultado em 26 de outubro de 2013 
  31. Schlueter, Isaac (15 de janeiro de 2014). «The Next Phase of Node.js». Consultado em 21 de janeiro de 2014 
  32. [https://www.infoworld.com/article/2855057/application-development/why-iojs-decided-to-fork-nodejs.html Q&A: Why io.js decided to fork Node.js], InfoWorld Tech Watch
  33. «Node.js Foundation Advances Community Collaboration, Announces New Members and Ratified Technical Governance». Consultado em 4 de julho de 2015. Arquivado do original em 24 de junho de 2015 
  34. «Node.js Foundation Combines Node.js and io.js Into Single Codebase in New Release». nodejs.org. 14 de setembro de 2015. Consultado em 28 de janeiro de 2016 
  35. «io.js and Node.js merge». medium.com. 19 de maio de 2015. Consultado em 27 de junho de 2015 
  36. [https://iojs.org/en/ Io.js, JavaScript I/O], "io.js has merged with the Node.js project again. There won't be any further io.js releases. All of the features in io.js are available in Node.js v4 and above."
  37. a b c d e f g lenon (5 de setembro de 2018). «Node.js - O que é, como funciona e quais as vantagens». Opus Software. Consultado em 10 de outubro de 2019 

Ligações externas

[editar | editar código]
Ícone de esboço Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.