Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br
O Node.js não nasceu com a intenção
de levar o JavaScript para o servidor
Tudo começou com Ryan Dahl
A forma como a maior parte das
plataformas lida com I/O está errada
As threads acabam passando a maior
parte do seu tempo dormindo...
Isso acaba alocando recursos, como
memória, desnecessariamente
Será que é possível fazer a mesma
coisa de um jeito mais eficiente?
O Node.js processa tudo em uma única
thread, utilizando um event loop
Hands-On: Single Thread
primes-single-thread.js
Dessa forma, como é possível escalar e
atender vários clientes ao mesmo tempo?
Na verdade, existe um thread pool
responsável pelo processamento de I/O
Hands-On: Thread Pool
files.js
Hands-On: Multi Thread
primes-multi-thread.js
A libuv é uma biblioteca multi-plataforma
responsável pela realização de I/O assíncrono,
fornecendo a implementação do event loop e do
thread pool, juntamente com o suporte a TCP e
UDP socket, resolução de DNS, sistema de
arquivos, processos entre outras.
Qual linguagem oferece um bom suporte
ao desenvolvimento assíncrono?
C podia ser mais atraente...
Ele avaliou ainda Lua e Haskell
JavaScript é perfeito, tem uma sintaxe
amigável e tudo gira em torno de funções
Os navegadores já utilizam de forma
assíncrona, baseado em um event loop
O V8 é um interpretador de JavaScript de alta
performance desenvolvido pelo Google. Ele tem o
código aberto e foi desenvolvido em C++ com o
objetivo de atender ao navegador Chrome.
Será que o Node.js é rápido mesmo?
Hands-On: Performance
primes.js vs Primes.java
O Node.js uma plataforma de código aberto para
a execução de JavaScript no servidor. É composto
pela junção do interpretador V8, do Google, com
a biblioteca libuv e por um conjunto de módulos.
Node.js	
  Bindings	
  (C++)
Node.js	
  Code	
  Library	
  (JavaScript)
http fs stream buffer net
crypto zlib cluster dns ...
+
A comunidade, insatisfeita com a Joyent,
fez um fork do Node.js criando o io.js
Em 09/2015, com a saída da Joyent, io.js
v3.3 se juntou com o Node.js v0.12,
dando origem ao Node.js v4.0
Quem está utilizando Node.js?
Quer começar a utilizar Node.js?
node --version
REPL ou Read-Eval-Print-Loop
node helloWorld.js
O Node.js suporta ES6?
Rodrigo Branas	
  
Agile Code: http://www.agilecode.com.br
Twitter: @rodrigobranas
SlideShare: http://www.slideshare.com/rodrigobranas
YouTube: http://www.youtube.com/rodrigobranas
LinkedIn: http://br.linkedin.com/in/rodrigobranas
+Plus: https://plus.google.com/+RodrigoBranas
GitHub: http://www.github.com/rodrigobranas

Node.js - #1 - Introdução - Rodrigo Branas