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.