6. • Servidor web de baixo-nível;
• Foco em real-time e alta escalabilidade;
• Nascido em 2009;
• O papai é o Ryan Dahl;
• 14 médicos no dia do parto;
• O filho nasceu grande com:
–8000 linhas de C++;
–2000 linhas de Javascript;
15. O que fazer com tudo isso?
Servidores de Games Online
Aplicativos Real-time
Processamento assíncrono
Aplicações multi-protocolo
APIs REST
Servidor HTTP
É uma plataforma server-side com foco em desenvolvimento de aplicações de alta escalabilidade, processamento intensivo com resposta real-time. Seu nascimento foi em 2009 pelo autor Ryan Dahl, atualmente esta na versão 0.6.15, cerca de +8000 linhas em C++ com +2000 linhas em JS. 14 colaboradores iniciais
Node.js foi escrito em C++ com Javascript V8 do Google. Porém a linguagem que o programador irá trabalhar é com Javascript no servidor. Isso facilita muito a vida dos desenvolvedores web, pois praticamente você irá trabalhar com menos tecnologias, se resumindo em HTML, CSS e JS.
Uma das características notáveis no Node.js é o seu paradigma orientado a eventos de I/O Javascript realiza eventos através dos Callbacks, e Node.js utiliza esse Callbacks da linguagem para tratar eventos de I/O. Alguns exemplos de I/O bem conhecido seria o tratamento do evento conectar, ou seja, ao conectar no servidor faça alguma tarefa, ao desconectar também faça algo. Até mesmo é possível tratar alguns eventos quando o próprio servidor irá cair.
Trabalhar com Threads Não bloqueantes significa não travar um recurso quando haver concorrencia para usá-lo. Isso faz com que Node.js seja perfeito para trabalhar em ambientes que não é prioridade travar um recurso, um bom exemplo disso são os games onlines e os alerts do Facebook, Twitter e LinkedIn.
Com o recurso de Threads N-Bloqueantes é possível atingir uma alta escalabilidade comparado com sistemas de Threads-Bloqueantes, isso ocorre do fato de Threads Bloqueantes mantem alocados na memoria do servidor essas threads até que todas elas sejam satisfeitas. E esse tempo que elas ficam são maiores do com num sistema Não-Bloqueante, por isso a sua escalabilidade é inferior.
Um dos grandes destaques é que Node.js foi projetado para trabalhar com Real-time. Algo totalmente diferente de Ajax Real-time pode ser tanto unicast 1 cliente com 1 servidor como broadcast 1 servidor para N clientes.
Ajax é um recurso do HTTP de comunicação Unidirecional e Real-time vem do WebSocket e FlashSocket que mantem comunicacao aberta entre cliente servidor, teoricamente conhecida como conexao bidirecional.
A nova versão mobile do LinkedIn é totalmente HTML5 e seu back-end antigo era em Rails pelo qual utilizava 15 servidores com 15 instâncias da aplicação, após mudar seu back-end para Node.js passou a utilizar apenas 4 instâncias, diminuindo mais que a metade de instâncias dos 15 servidores.
Assim como o LinkedIn a SoundCloud utiliza em seu back-end mobile Node.js
Voxer app do iPhone com back-end node.js, que visa transformar seu iPhone em um rádio Nextel.
Sistema de táxi privado totalmente mobile, há diversos pontos Ubers no EUA com motoristas prontos para te buscar e levá-lo para onde desejar, igual a um táxi, a diferença é que você solicita via mobile e também o pagamento é via mobile através de cartão de crédito.
IDE totalmente focada para desenvolvimento Node.js e tbm foi desenvolvida com Node.js em seu back-end
Criou um projeto open source chamado Mojito que é um Framework MVC para Node.js