SlideShare uma empresa Scribd logo
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

Introdução ao React
Introdução ao ReactIntrodução ao React
Introdução ao React
Luiz Paulo dos Prazeres Júnior
 
Blazor
BlazorBlazor
2021.laravelconf.tw.slides1
2021.laravelconf.tw.slides12021.laravelconf.tw.slides1
2021.laravelconf.tw.slides1
LiviaLiaoFontech
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node js
Akshay Mathur
 
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...
Edureka!
 
Backup and-recovery2
Backup and-recovery2Backup and-recovery2
Backup and-recovery2
Command Prompt., Inc
 
Heterogeneous multiprocessing on androd and i.mx7
Heterogeneous multiprocessing on androd and i.mx7Heterogeneous multiprocessing on androd and i.mx7
Heterogeneous multiprocessing on androd and i.mx7
Kynetics
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
DuckDuckGo
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universo
elliando dias
 
React - Introdução
React - IntroduçãoReact - Introdução
React - Introdução
Jefferson Mariano de Souza
 
Kvm performance optimization for ubuntu
Kvm performance optimization for ubuntuKvm performance optimization for ubuntu
Kvm performance optimization for ubuntu
Sim Janghoon
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
Abdoulaye Dieng
 
Introduction to go language programming
Introduction to go language programmingIntroduction to go language programming
Introduction to go language programming
Mahmoud Masih Tehrani
 
Infrastructure testing with Molecule and TestInfra
Infrastructure testing with Molecule and TestInfraInfrastructure testing with Molecule and TestInfra
Infrastructure testing with Molecule and TestInfra
Tomislav Plavcic
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
Jérôme Petazzoni
 
Docker 101 - Getting started
Docker 101 - Getting startedDocker 101 - Getting started
Docker 101 - Getting started
Matheus Marabesi
 
Kernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysisKernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysis
Anne Nicolas
 
Concurrency With Go
Concurrency With GoConcurrency With Go
Concurrency With Go
John-Alan Simmons
 
An Actor Model in Go
An Actor Model in GoAn Actor Model in Go
An Actor Model in Go
Weaveworks
 
React Native
React NativeReact Native
React Native
ASIMYILDIZ
 

Mais procurados (20)

Introdução ao React
Introdução ao ReactIntrodução ao React
Introdução ao React
 
Blazor
BlazorBlazor
Blazor
 
2021.laravelconf.tw.slides1
2021.laravelconf.tw.slides12021.laravelconf.tw.slides1
2021.laravelconf.tw.slides1
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node js
 
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...
 
Backup and-recovery2
Backup and-recovery2Backup and-recovery2
Backup and-recovery2
 
Heterogeneous multiprocessing on androd and i.mx7
Heterogeneous multiprocessing on androd and i.mx7Heterogeneous multiprocessing on androd and i.mx7
Heterogeneous multiprocessing on androd and i.mx7
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universo
 
React - Introdução
React - IntroduçãoReact - Introdução
React - Introdução
 
Kvm performance optimization for ubuntu
Kvm performance optimization for ubuntuKvm performance optimization for ubuntu
Kvm performance optimization for ubuntu
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Introduction to go language programming
Introduction to go language programmingIntroduction to go language programming
Introduction to go language programming
 
Infrastructure testing with Molecule and TestInfra
Infrastructure testing with Molecule and TestInfraInfrastructure testing with Molecule and TestInfra
Infrastructure testing with Molecule and TestInfra
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
 
Docker 101 - Getting started
Docker 101 - Getting startedDocker 101 - Getting started
Docker 101 - Getting started
 
Kernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysisKernel Recipes 2015 - Kernel dump analysis
Kernel Recipes 2015 - Kernel dump analysis
 
Concurrency With Go
Concurrency With GoConcurrency With Go
Concurrency With Go
 
An Actor Model in Go
An Actor Model in GoAn Actor Model in Go
An Actor Model in Go
 
React Native
React NativeReact Native
React Native
 

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 SP
Arthur Fücher
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
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
Simples Consultoria
 
Criando Temas com Diazo
Criando Temas com DiazoCriando Temas com Diazo
Criando Temas com Diazo
Simples Consultoria
 
O Futuro do Plone
O Futuro do PloneO Futuro do Plone
O Futuro do Plone
Simples Consultoria
 
O Futuro do Plone (RuPy-Br)
O Futuro do Plone (RuPy-Br)O Futuro do Plone (RuPy-Br)
O Futuro do Plone (RuPy-Br)
Simples Consultoria
 
Minicurso Ruby
Minicurso RubyMinicurso Ruby
Minicurso Ruby
Saulo Arruda
 
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áctica
Simples 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
 
Diazo para todos
Diazo para todosDiazo para todos
Diazo para todos
Simples Consultoria
 
O Futuro do Plone
O Futuro do PloneO Futuro do Plone
O Futuro do Plone
Simples Consultoria
 
O Estado do Plone - FISL 14
O Estado do Plone - FISL 14O Estado do Plone - FISL 14
O Estado do Plone - FISL 14
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 saber
Simples 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
 
Gestión de Contenido con Plone
Gestión de Contenido con PloneGestión de Contenido con Plone
Gestión de Contenido con Plone
Simples Consultoria
 
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
Emerson Macedo
 
Integrando Python e JavaScript
Integrando Python e JavaScriptIntegrando Python e JavaScript
Integrando Python e JavaScript
Luiz Cláudio Silva
 
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
Simples 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
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
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
 

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 Passos
Jackson F. de A. Mafra
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
Gustavo Corrêa Alves
 
Desenvolvendo com IONIC
Desenvolvendo com IONICDesenvolvendo com IONIC
Desenvolvendo com IONIC
Michel Anderson Lütz Teixeira
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
Giovanni Bassi
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
Just 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 2014
Giovanni Bassi
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
Caio 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 Nodejs
Rafael Soares
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
David 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.js
Nuno Paz
 
Netbeans Slides
Netbeans SlidesNetbeans Slides
Netbeans Slides
Renato Puccini
 
Introdução ao Nodejs
Introdução ao NodejsIntrodução ao Nodejs
Introdução ao Nodejs
Márcio Silvestroni
 
Minicurso Node-RED.pdf
Minicurso Node-RED.pdfMinicurso Node-RED.pdf
Minicurso Node-RED.pdf
LuizGuilherme949739
 
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 mais
akamud
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente Web
Israel 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 Multithreading
Rhuan 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
 

Último

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 

Último (8)

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 

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]