SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
node.js
Introdução
node.js?
- Ryan Dahl
- Criado em 2009
- Escrito em C++ e Javascript
- Multiplataforma (Linux, Windows e Mac)
- Foco em alta escalabilidade e em tempo real
- Versão atual: 0.10.26 / Fev 18, 2014
- Open Source mantido pela Joyment
https://github.com/joyent/node
O que é?
- Plataforma para utlizar Javascript fora do navegador. (Focada em servidores)
- Escrita sobre interpretador V8 do Google
Ou seja, essa plataforma é escrita com códigos C++ e Javascript
- Baseada em eventos
- I/O não bloqueante
Servidores “Comuns”
Servidores que usam
Node.js
Quer dizer que...
- Você tem o poder do Javascript para criar aplicações orientadas a eventos e
assíncronas em qualquer máquina.
- Sua premissa é facilitar a construção de aplicações de rede (servidores web,
etc.) sem bloqueio de leitura e escrita.
- Ao instalar o node, o mesmo já vem com uma biblioteca inicial muito
poderosa.

http://nodejs.org/api

- Comunidade de desenvolvedores extremamente entusiasmada.
What?
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello Worldn');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');

>> node hello.js
Server running at http://127.0.0.1:1337/'
Por que usar?
- Aplicações com dados em tempo real
- Aplicações com muitas, muitas requisições ao mesmo tempo
- Aplicações com colaboração entre muitos usuários
- Chats
- Envios de dados (upload de arquivos)
- Jogos
- Servidor para diferentes protocolos ao mesmo tempo
- APIs (Sim, web apis, bitches)
Por que NÃO usar?
- Aplicações que utilizam muito processamento (redimensionamento de
imagens, renderização de vídeos, cálculos matemáticos pesados, etc.)
- Simples páginas HTML
- Aplicações baseadas em conteúdo, CRUDs, com muitas regras de negócio
- Aplicações dependentes de bancos de dados relacionais
Empresas que utilizam

Mais em: http://nodejs.org/industry/
e: http://bit.ly/1kBolIL
Então, node.js é...
- Plataforma para desenvolver aplicações com Javascript
- Com foco em para alta escalabilidade para alta concorrência
- Performance com altas cargas de acesso
- Multiplataforma
- Comunidade de desenvolvedores super ativa
- Ainda imatura
- Não soluciona todos os problemas do mundo
Fim
Tchau, comercial
node.js
js fora do seu navegador
The good stuff
- Javascript
- Fácil de instalar (hoje é)
- Multiplataforma
- V8
- Pacotes, muitos pacotes
- Event Loop
- Conduz os desenvolvedores ao mindset de “Evented/Async I/O”
Event Loop
- Single-Thread que escuta por todas requisições ao servidor
- Ao receber req. que precisam realizar operações bloqueantes (acesso a disco,
computação pesada, etc), criar uma tarefa async para o SO e guarda um callback para
esse tarefa
- Continua recebendo outras requições, até receber a resposta da tarefa enviado o SO,
então executa o callback, espera até estar livre e executa esta respota
- Abstrai toda implementação de gerenciamento de threads, consumo de memória, etc
Multi-threaded HTTP server
Node.js Server
Multi vs Single threaded concurrency
Multi-threaded concurrency

Single threaded concurrency
Sync vs Async I/O
Synchronous I/O

Asynchronous I/O
Alguns problemas
- É Javascript
Algumas bizarrices (www.wtfjs.com)
Facilidade em não seguir padrões
Não é orientado a objetos
- Por default, exceções matam o processo
- Vazamentos de memória difíceis de encontrar
- Ainda é beta (~v 0.10.26)
- Single thread trava em códigos de alto processamento
- Falta de maturidade para utilizar bancos de dados relacionais
“I got 99 problems but a callback aint one”

Callback HELL
npm - node packeges manager
- É o gerenciador de pacotes oficial do node.
- Nele já são mais de 61k pacotes escritos pela comunidade de
desenvolvedores.
- Instalado junto ao node, que é uma dependência (óbvia) para o uso do npm.
- Utilizado através da linha de comando, possuí uma API poderosa para a
instalação e busca de pacotes. https://www.npmjs.org/doc/
Utilizando o npm: Instalando pacote
Utilizando o npm: Baixando pacotes
Na pasta root do projeto, criar o arquivo packages.json.
{
'name': 'mini-chat' ,
version: '0.0.1',
description: 'Chat app.',
engines: {
'node': '>= 0.6.x',
npm: '>= 1.1.x'
},
dependencies: {
'express': '>= 2.x.x',
now: '>= 0.x.x'
},
}
Utilizando o npm
Exemplos
SHOW ME THE CODE
https://github.com/ruanmyv/node-examples
Hello world
hello-app
Numbers
numbers-app
Chat
chat-app
Express
express-app
Fim²
Show me the links!!
http://nodebr.com/
http://howtonode.org/
http://nodejs.org/
https://github.com/joyent/node
http://www.nodebeginner.org/
http://callbackhell.com/
Why The Hell Would I Use Node.js? A Case-by-Case Introduction
Node Tools for VS - Youtube
Introducing node.js Tools for Visual Studio
Node.js para iniciantes
O que é npm do nodejs
O que exatamente é o Node.js?
What are the disadvantages of using Node.js?
Node.js for Beginners
Java EE threads v/s Node.js – which is better for concurrent data processing operations
Beginner’s Guide To Node.Js (Server-Side JavaScript)
Node.js para leigos
Show me the links!!
Slideshare - Node.js: serious business
Slideshare - Node.js campus party brasil 2011
Future-proofing Your Apps: Cloud Foundry and Node.js
7 minimal Node.js webframeworks
Concurrent programming for scalable web architetures
You’ll never believe how LinkedIn built its new iPad app (exclusive) [Linkedin]
Blazing fast node.js: 10 performance tips from LinkedIn Mobile [Linkedin]
Here's why you should be happy that Microsoft is embracing Node.js [Microsoft]
Yahoo! Announces Cocktails

Shaken, Not Stirred [Yahoo]

Why Walmart is using Node.js [Walmart]
Fluent 2013: Bill Scott, "Clash of the Titans: Releasing the Kraken | NodeJS @paypal" [Paypal]

Mais conteúdo relacionado

Mais procurados

Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsVikash Singh
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node jsAkshay Mathur
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.jsDinesh U
 
Introduction to Progressive web app (PWA)
Introduction to Progressive web app (PWA)Introduction to Progressive web app (PWA)
Introduction to Progressive web app (PWA)Zhentian Wan
 
Introduction to ReactJS
Introduction to ReactJSIntroduction to ReactJS
Introduction to ReactJSKnoldus Inc.
 
Repository Pattern with c# and Entity Framework
Repository Pattern with c# and Entity FrameworkRepository Pattern with c# and Entity Framework
Repository Pattern with c# and Entity FrameworkImtiaj Ahammad
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot IntroductionJeevesh Pandey
 
How To be a Backend developer
How To be a Backend developer    How To be a Backend developer
How To be a Backend developer Ramy Hakam
 
Scaling Your Web Application
Scaling Your Web ApplicationScaling Your Web Application
Scaling Your Web ApplicationKetan Deshmukh
 
Flutter presentation.pptx
Flutter presentation.pptxFlutter presentation.pptx
Flutter presentation.pptxFalgunSorathiya
 
Curso introdução ao Software Livre
Curso introdução ao Software LivreCurso introdução ao Software Livre
Curso introdução ao Software LivrePeslPinguim
 

Mais procurados (20)

CQRS
CQRSCQRS
CQRS
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Nodejs
NodejsNodejs
Nodejs
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node js
 
Why Vue.js?
Why Vue.js?Why Vue.js?
Why Vue.js?
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
Node js for beginners
Node js for beginnersNode js for beginners
Node js for beginners
 
Introduction to Progressive web app (PWA)
Introduction to Progressive web app (PWA)Introduction to Progressive web app (PWA)
Introduction to Progressive web app (PWA)
 
Introduction to ReactJS
Introduction to ReactJSIntroduction to ReactJS
Introduction to ReactJS
 
Training On Angular Js
Training On Angular JsTraining On Angular Js
Training On Angular Js
 
3. Java Script
3. Java Script3. Java Script
3. Java Script
 
React - Introdução
React - IntroduçãoReact - Introdução
React - Introdução
 
Repository Pattern with c# and Entity Framework
Repository Pattern with c# and Entity FrameworkRepository Pattern with c# and Entity Framework
Repository Pattern with c# and Entity Framework
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
 
Golang workshop
Golang workshopGolang workshop
Golang workshop
 
How To be a Backend developer
How To be a Backend developer    How To be a Backend developer
How To be a Backend developer
 
Scaling Your Web Application
Scaling Your Web ApplicationScaling Your Web Application
Scaling Your Web Application
 
Flutter presentation.pptx
Flutter presentation.pptxFlutter presentation.pptx
Flutter presentation.pptx
 
Curso introdução ao Software Livre
Curso introdução ao Software LivreCurso introdução ao Software Livre
Curso introdução ao Software Livre
 
Presentation php
Presentation phpPresentation php
Presentation php
 

Destaque

Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPArthur Fücher
 
V de Vinagre: A história por trás da história do momento que mudou o Brasil
V de Vinagre: A história por trás da história do momento que mudou o BrasilV de Vinagre: A história por trás da história do momento que mudou o Brasil
V de Vinagre: A história por trás da história do momento que mudou o BrasilSimples Consultoria
 
PloneGov.Br: Cadê o .br que estava aqui?
PloneGov.Br: Cadê o .br que estava aqui?PloneGov.Br: Cadê o .br que estava aqui?
PloneGov.Br: Cadê o .br que estava aqui?Simples Consultoria
 
Lenguaje, framework, comunidad y cuenta bancaria: De teoría hasta la práctica
Lenguaje, framework,  comunidad y cuenta bancaria: De teoría hasta la prácticaLenguaje, framework,  comunidad y cuenta bancaria: De teoría hasta la práctica
Lenguaje, framework, comunidad y cuenta bancaria: De teoría hasta la prácticaSimples Consultoria
 
Plone 5: Você ainda vai ter um!
Plone 5: Você ainda vai ter um!Plone 5: Você ainda vai ter um!
Plone 5: Você ainda vai ter um!Simples Consultoria
 
O Futuro do Plone (PythonBrasil[8])
O Futuro do Plone (PythonBrasil[8])O Futuro do Plone (PythonBrasil[8])
O Futuro do Plone (PythonBrasil[8])Simples Consultoria
 
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saber
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saberPlone: Funcionalidades que todo gestor de conteúdo Plone deveria saber
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saberSimples Consultoria
 
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...Simples Consultoria
 
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoEmerson Macedo
 
Cómo Brasil está construyendo una nación digital con código abierto y Python
Cómo Brasil está construyendo una nación digital con código abierto y PythonCómo Brasil está construyendo una nación digital con código abierto y Python
Cómo Brasil está construyendo una nación digital con código abierto y PythonSimples Consultoria
 
Python como primeira linguagem de programação
Python como primeira linguagem de programaçãoPython como primeira linguagem de programação
Python como primeira linguagem de programaçãoSimples Consultoria
 

Destaque (20)

Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SP
 
V de Vinagre: A história por trás da história do momento que mudou o Brasil
V de Vinagre: A história por trás da história do momento que mudou o BrasilV de Vinagre: A história por trás da história do momento que mudou o Brasil
V de Vinagre: A história por trás da história do momento que mudou o Brasil
 
Criando Temas com Diazo
Criando Temas com DiazoCriando Temas com Diazo
Criando Temas com Diazo
 
O Futuro do Plone
O Futuro do PloneO Futuro do Plone
O Futuro do Plone
 
O Futuro do Plone (RuPy-Br)
O Futuro do Plone (RuPy-Br)O Futuro do Plone (RuPy-Br)
O Futuro do Plone (RuPy-Br)
 
Minicurso Ruby
Minicurso RubyMinicurso Ruby
Minicurso Ruby
 
PloneGov.Br: Cadê o .br que estava aqui?
PloneGov.Br: Cadê o .br que estava aqui?PloneGov.Br: Cadê o .br que estava aqui?
PloneGov.Br: Cadê o .br que estava aqui?
 
Lenguaje, framework, comunidad y cuenta bancaria: De teoría hasta la práctica
Lenguaje, framework,  comunidad y cuenta bancaria: De teoría hasta la prácticaLenguaje, framework,  comunidad y cuenta bancaria: De teoría hasta la práctica
Lenguaje, framework, comunidad y cuenta bancaria: De teoría hasta la práctica
 
Plone 5: Você ainda vai ter um!
Plone 5: Você ainda vai ter um!Plone 5: Você ainda vai ter um!
Plone 5: Você ainda vai ter um!
 
O Futuro do Plone (PythonBrasil[8])
O Futuro do Plone (PythonBrasil[8])O Futuro do Plone (PythonBrasil[8])
O Futuro do Plone (PythonBrasil[8])
 
Diazo para todos
Diazo para todosDiazo para todos
Diazo para todos
 
O Futuro do Plone
O Futuro do PloneO Futuro do Plone
O Futuro do Plone
 
O Estado do Plone - FISL 14
O Estado do Plone - FISL 14O Estado do Plone - FISL 14
O Estado do Plone - FISL 14
 
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saber
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saberPlone: Funcionalidades que todo gestor de conteúdo Plone deveria saber
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saber
 
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
 
Gestión de Contenido con Plone
Gestión de Contenido con PloneGestión de Contenido con Plone
Gestión de Contenido con Plone
 
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
 
Integrando Python e JavaScript
Integrando Python e JavaScriptIntegrando Python e JavaScript
Integrando Python e JavaScript
 
Cómo Brasil está construyendo una nación digital con código abierto y Python
Cómo Brasil está construyendo una nación digital con código abierto y PythonCómo Brasil está construyendo una nación digital con código abierto y Python
Cómo Brasil está construyendo una nación digital con código abierto y Python
 
Python como primeira linguagem de programação
Python como primeira linguagem de programaçãoPython como primeira linguagem de programação
Python como primeira linguagem de programação
 

Semelhante a Node.js, Uma breve introdução

Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros PassosJackson F. de A. Mafra
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigitalJust Digital
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Pablo Souza
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o NodejsCaio Cutrim
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsRafael Soares
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsNuno Paz
 
Apresentação Cloud - Open(Stack/Shift)
Apresentação Cloud - Open(Stack/Shift)Apresentação Cloud - Open(Stack/Shift)
Apresentação Cloud - Open(Stack/Shift)Raul Leite
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo maisakamud
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebIsrael Messias
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingRhuan Karlus Silva
 

Semelhante a Node.js, Uma breve introdução (20)

Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Desenvolvendo com IONIC
Desenvolvendo com IONICDesenvolvendo com IONIC
Desenvolvendo com IONIC
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.js
 
Netbeans Slides
Netbeans SlidesNetbeans Slides
Netbeans Slides
 
Introdução ao Nodejs
Introdução ao NodejsIntrodução ao Nodejs
Introdução ao Nodejs
 
Minicurso Node-RED.pdf
Minicurso Node-RED.pdfMinicurso Node-RED.pdf
Minicurso Node-RED.pdf
 
Apresentação Cloud - Open(Stack/Shift)
Apresentação Cloud - Open(Stack/Shift)Apresentação Cloud - Open(Stack/Shift)
Apresentação Cloud - Open(Stack/Shift)
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente Web
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and Multithreading
 

Node.js, Uma breve introdução

  • 2. node.js? - Ryan Dahl - Criado em 2009 - Escrito em C++ e Javascript - Multiplataforma (Linux, Windows e Mac) - Foco em alta escalabilidade e em tempo real - Versão atual: 0.10.26 / Fev 18, 2014 - Open Source mantido pela Joyment https://github.com/joyent/node
  • 3. O que é? - Plataforma para utlizar Javascript fora do navegador. (Focada em servidores) - Escrita sobre interpretador V8 do Google Ou seja, essa plataforma é escrita com códigos C++ e Javascript - Baseada em eventos - I/O não bloqueante
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. Quer dizer que... - Você tem o poder do Javascript para criar aplicações orientadas a eventos e assíncronas em qualquer máquina. - Sua premissa é facilitar a construção de aplicações de rede (servidores web, etc.) sem bloqueio de leitura e escrita. - Ao instalar o node, o mesmo já vem com uma biblioteca inicial muito poderosa. http://nodejs.org/api - Comunidade de desenvolvedores extremamente entusiasmada.
  • 17. What? var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello Worldn'); }).listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/'); >> node hello.js Server running at http://127.0.0.1:1337/'
  • 18. Por que usar? - Aplicações com dados em tempo real - Aplicações com muitas, muitas requisições ao mesmo tempo - Aplicações com colaboração entre muitos usuários - Chats - Envios de dados (upload de arquivos) - Jogos - Servidor para diferentes protocolos ao mesmo tempo - APIs (Sim, web apis, bitches)
  • 19. Por que NÃO usar? - Aplicações que utilizam muito processamento (redimensionamento de imagens, renderização de vídeos, cálculos matemáticos pesados, etc.) - Simples páginas HTML - Aplicações baseadas em conteúdo, CRUDs, com muitas regras de negócio - Aplicações dependentes de bancos de dados relacionais
  • 20. Empresas que utilizam Mais em: http://nodejs.org/industry/ e: http://bit.ly/1kBolIL
  • 21. Então, node.js é... - Plataforma para desenvolver aplicações com Javascript - Com foco em para alta escalabilidade para alta concorrência - Performance com altas cargas de acesso - Multiplataforma - Comunidade de desenvolvedores super ativa - Ainda imatura - Não soluciona todos os problemas do mundo
  • 23. node.js js fora do seu navegador
  • 24. The good stuff - Javascript - Fácil de instalar (hoje é) - Multiplataforma - V8 - Pacotes, muitos pacotes - Event Loop - Conduz os desenvolvedores ao mindset de “Evented/Async I/O”
  • 25. Event Loop - Single-Thread que escuta por todas requisições ao servidor - Ao receber req. que precisam realizar operações bloqueantes (acesso a disco, computação pesada, etc), criar uma tarefa async para o SO e guarda um callback para esse tarefa - Continua recebendo outras requições, até receber a resposta da tarefa enviado o SO, então executa o callback, espera até estar livre e executa esta respota - Abstrai toda implementação de gerenciamento de threads, consumo de memória, etc
  • 28. Multi vs Single threaded concurrency Multi-threaded concurrency Single threaded concurrency
  • 29. Sync vs Async I/O Synchronous I/O Asynchronous I/O
  • 30. Alguns problemas - É Javascript Algumas bizarrices (www.wtfjs.com) Facilidade em não seguir padrões Não é orientado a objetos - Por default, exceções matam o processo - Vazamentos de memória difíceis de encontrar - Ainda é beta (~v 0.10.26) - Single thread trava em códigos de alto processamento - Falta de maturidade para utilizar bancos de dados relacionais
  • 31. “I got 99 problems but a callback aint one” Callback HELL
  • 32. npm - node packeges manager - É o gerenciador de pacotes oficial do node. - Nele já são mais de 61k pacotes escritos pela comunidade de desenvolvedores. - Instalado junto ao node, que é uma dependência (óbvia) para o uso do npm. - Utilizado através da linha de comando, possuí uma API poderosa para a instalação e busca de pacotes. https://www.npmjs.org/doc/
  • 33. Utilizando o npm: Instalando pacote
  • 34. Utilizando o npm: Baixando pacotes Na pasta root do projeto, criar o arquivo packages.json. { 'name': 'mini-chat' , version: '0.0.1', description: 'Chat app.', engines: { 'node': '>= 0.6.x', npm: '>= 1.1.x' }, dependencies: { 'express': '>= 2.x.x', now: '>= 0.x.x' }, }
  • 36. Exemplos SHOW ME THE CODE https://github.com/ruanmyv/node-examples
  • 41. Fim²
  • 42. Show me the links!! http://nodebr.com/ http://howtonode.org/ http://nodejs.org/ https://github.com/joyent/node http://www.nodebeginner.org/ http://callbackhell.com/ Why The Hell Would I Use Node.js? A Case-by-Case Introduction Node Tools for VS - Youtube Introducing node.js Tools for Visual Studio Node.js para iniciantes O que é npm do nodejs O que exatamente é o Node.js? What are the disadvantages of using Node.js? Node.js for Beginners Java EE threads v/s Node.js – which is better for concurrent data processing operations Beginner’s Guide To Node.Js (Server-Side JavaScript) Node.js para leigos
  • 43. Show me the links!! Slideshare - Node.js: serious business Slideshare - Node.js campus party brasil 2011 Future-proofing Your Apps: Cloud Foundry and Node.js 7 minimal Node.js webframeworks Concurrent programming for scalable web architetures You’ll never believe how LinkedIn built its new iPad app (exclusive) [Linkedin] Blazing fast node.js: 10 performance tips from LinkedIn Mobile [Linkedin] Here's why you should be happy that Microsoft is embracing Node.js [Microsoft] Yahoo! Announces Cocktails Shaken, Not Stirred [Yahoo] Why Walmart is using Node.js [Walmart] Fluent 2013: Bill Scott, "Clash of the Titans: Releasing the Kraken | NodeJS @paypal" [Paypal]