node.js - #1 - introdução - rodrigo branas
TRANSCRIPT
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