A tecnologias para web estão cada vez mais renovadas com frameworks e novas linguagens para desenvolvimento web ágil e escalável. O Node.JS é um exemplo disso.
Ele é uma plataforma server-side para linguagem Javascript – sim, isso mesmo, Javascript no servidor!
Um dos problemas que esta tecnologia surgiu para resolver, foi a de facilitar o desenvolvimento de aplicações real-time e de alta escalabilidade, aplicando três características chaves que serão explicadas abaixo:
Linguagem Google Chrome Javascript V8 – Você irá desenvolver aplicações utilizando Javascript, algo muito interessante, pois essa linguagem permite trabalhar de forma simplificada tudo o que receber do lado cliente. A curva de aprendizado será pequena, pois qual é o programador web que nunca brincou com javascript antes? Na prática você aprenderá facilmente a dominar o Node.js, visto que grande parte do desenvolvimento será apenas através de frameworks prontos que serão implementados em sua aplicação, e o grande desafio será conhecer e aplicar os diversos Design Patterns do Javascript e dominar toda API da plataforma.
Orientado à eventos de I/O – O Node.js já vem acompanhado com diversos módulos que possibilitam trabalhar com recursos de processamento I/O no servidor, isso significa que nativamente você terá diversos módulos bem baixo nível para trabalhar com protocolos: HTTP, HTTPS, DNS, WebSockets, TCP, além de bibliotecas para manipular arquivos, processamento assíncronos, criptografias, manipulação de objetos JSON e muito mais. Tudo isso será trabalhado através de eventos assíncronos (callbacks do javascript), o que traz um ganho enorme em performance no processamento, visto que trabalhando com eventos, uma determinada tarefa só ocorrerá quando necessário e todo esse controle de eventos acontece de forma abstraída pelo javascript, facilitando a vida do desenvolvedor, ou seja, em diversos momentos você programará orientado à callbacks de forma intuitiva, delegando toda a responsabilidade para a própria tecnologia.
Threads Não-Bloqueantes – Essa é uma característica bem específica do Node.js. Não há um gerenciador de threads, visto que o Node.js é totalmente single-thread, algo diferente das plataformas Java e .NET. Isso traz como vantagem uma alta escalabilidade para sistemas que necessitam de um processamento sem controle de processamento concorrente (threads), pois não há um agente bloqueando e enfileirando threads, porém, como desvantagem esse conceito não é recomendável para todos os casos, por exemplo o desenvolvimento de sistemas transacionais, visto que há uma grande chance de uma perda dos dados devido a falta desse controle. Nos casos de sistemas que necessitem de uma resposta rápida, por exemplo, consultas frequentes no banco de dados, o node.js faz esse trabalho muito bem.
E ai, gostou da tecnologia? Então veja abaixo alguns links relevantes para quem deseja estudar e brincar com Node.js:
- Site oficial do Node.js
- Underground WebDev
- Slide: Conhecendo mundo Node.js
- Node Beginner
- Felix’s Node.js Guide
- NodeCloud
- Node Nerd
- MetaDuck
- How To Node
- Blog Nodejitsu
- DailyJS
- Essential Javascript Design Patterns
- Lista de módulos para Node.js
- Node Toolbox
- Node Knockout
- NPM Registry
- Ariasoul
- GrokPodcast Node.js Parte 1
- GrokPodcast Node.js Parte 2
- GrokPodcast Node.js Parte 3
Bom é isso pessoal! Espero que tenham gostado da minha primeira participação aqui no Profissionais TI.
Se você já teve experiências com o Node.js ou se quiser complementar algo do conteúdo, deixe seu comentário!
Um grande abraço!