Node.js
| Node.js | |
|---|---|
| Autor | Ryan Dahl |
| Desenvolvedores | Node.js Developers, Linux Foundation |
| Lançamento inicial | 27 de maio de 2009 (17 anos)[1] |
| Lançamento estável | |
| Repositório | node no GitHub |
| Escrito em | C, C++, JavaScript |
| Sistema operacional | Linux, Windows, macOS, SmartOS, AIX, FreeBSD[3] |
| Tipo | Sistema de tempo de execução[4] |
| Licença | MIT[5] |
| Website | nodejs |
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]
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 laço de eventos e uma API de E/S 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 modelo vazio de um app React.
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]
Leveza
[editar | editar código]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 bate-papo.[37]
Suporte
[editar | editar código]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]
Exemplo
[editar | editar código]Exemplo de um web service RESTful (HTTP) com serialização para JSON, usando o framework Express.js:
import express from 'express'
const app = express()
const port = 3000
app.get('/', (req, res) => {
const now = new Date()
res.status(200).send({
message: `Olá, Mundo!`,
timestamp: now.toJSON(),
})
})
app.listen(port, () => {
console.debug(`Listening on http://localhost:${port}`)
})
Considerando que o código acima está num arquivo chamado server.js, pode ser executado com o seguinte comando:
$ npm start
Ver também
[editar | editar código]Referências
- ↑ «Release v0.0.1». Github (em inglês). 27 de maio de 2009. Consultado em 22 de maio de 2021. Cópia arquivada em 25 de fevereiro de 2026
- ↑ «Release 26.7.0». 5 agosto 2026. Consultado em 6 agosto 2026
- ↑ «node/BUILDING.md at master». Github. Consultado em 22 de maio de 2021. Cópia arquivada em 15 de maio de 2022
- ↑ «Sobre | Node.js». Node.js. Consultado em 22 de maio de 2021. Cópia arquivada em 27 de julho de 2026
- ↑ «node/LICENSE at master». GitHub (em inglês). Consultado em 22 de maio de 2021. Cópia arquivada em 3 de junho de 2022
- ↑ «node/README.md at master». Github (em inglês). Consultado em 22 de maio de 2021. Cópia arquivada em 15 de maio de 2022
- ↑ «Home | Node.js». Node.js (em inglês). Consultado em 22 de maio de 2021. Cópia arquivada em 31 de julho de 2026
- ↑ «About». Node.js. Consultado em 25 de novembro de 2022. Cópia arquivada em 24 de setembro de 2023
- 1 2 «Introduction to Node.js». Node.js. Consultado em 25 de novembro de 2022. Cópia arquivada em 24 de setembro de 2023
- ↑ Why GoDaddy’s Nodejitsu deal is great for Node.js, VentureBeat, February 10, 2015
- ↑ Geitgey, Adam (30 de outubro de 2013). «I-Tier: Dismantling the Monoliths». Groupon. Consultado em 30 de abril de 2014. Cópia arquivada em 16 de janeiro de 2021
- ↑ «IBM Bluemix». Consultado em 4 de julho de 2015
- ↑ «You'll never believe how LinkedIn built its new iPad app». VentureBeat. 2 de maio de 2012. Consultado em 10 de maio de 2012. Cópia arquivada em 17 de maio de 2022
- ↑ «Blazing fast node.js: 10 performance tips from LinkedIn Mobile». Consultado em 7 de abril de 2015. Cópia arquivada em 16 de maio de 2026
- ↑ 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
- ↑ «WebMatrix - Front End Web Developers take note (ASP.NET, PHP, node.js and more)». Consultado em 2 de agosto de 2014. Cópia arquivada em 21 de agosto de 2020
- ↑ Node.js in Flames November 19, 2014
- ↑ «Clash of the Titans: Releasing the Kraken, NodeJS @paypal». fluentconf.com. 28 de maio de 2013. Consultado em 11 de setembro de 2013. Cópia arquivada em 29 de abril de 2024
- ↑ «All such companies and their products in which Node.js is used». Consultado em 2 de agosto de 2014. Cópia arquivada em 10 de agosto de 2015
- ↑ «SAP AppBuilder». SAP. 10 de março de 2014. Consultado em 10 de março de 2014. Cópia arquivada em 26 de outubro de 2016
- ↑ The Node Ahead: JavaScript leaps from browser into future, The Register, March 1, 2011
- ↑ «Why Walmart is using Node.js». VentureBeat. 24 de janeiro de 2012. Consultado em 10 de maio de 2012. Cópia arquivada em 21 de maio de 2022
- ↑ «Yahoo! Announces Cocktails Shaken, Not Stirred». Consultado em 7 de abril de 2015
- ↑ «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
- ↑ Staff, CNET News (15 de outubro de 1996). «Netscape opens intranet attack». CNET (em inglês). Consultado em 20 de abril de 2017. Cópia arquivada em 28 de janeiro de 2022
- ↑ Ryan Dahl (9 de novembro de 2010). «Joyent and Node». Google Groups. Consultado em 5 de fevereiro de 2015. Cópia arquivada em 31 de julho de 2026
- 1 2 [https://books.google.com/books?id=ZH6bpbcrlvYC&q=nodejs Professional Node.js: Building JavaScript Based Scalable Software], John Wiley & Sons, 01-Oct-2012
- ↑ «Earliest releases of npm». GitHub. Consultado em 27 de julho de 2016. Cópia arquivada em 4 de março de 2026
- ↑ Ryandahl (23 de junho de 2011). «Porting Node to Windows With Microsoft's Help». nodejs.org. Consultado em 17 de abril de 2016. Cópia arquivada em 16 de abril de 2026
- ↑ Dahl, Ryan. «New gatekeeper». Consultado em 26 de outubro de 2013. Cópia arquivada em 31 de julho de 2026
- ↑ Schlueter, Isaac (15 de janeiro de 2014). «The Next Phase of Node.js». Consultado em 21 de janeiro de 2014. Cópia arquivada em 6 de junho de 2026
- ↑ [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
- ↑ «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
- ↑ «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. Cópia arquivada em 20 de maio de 2026
- ↑ «io.js and Node.js merge». medium.com. 19 de maio de 2015. Consultado em 27 de junho de 2015. Cópia arquivada em 21 de fevereiro de 2026
- ↑ [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."
- 1 2 3 4 5 6 7 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. Cópia arquivada em 10 de julho de 2022
Ligações externas
[editar | editar código]- «Página oficial»
- node no GitHub
- «Just what is Node.js?» (em inglês). Artigo da IBM