O documento apresenta uma introdução ao Node.js, Javascript assíncrono e em tempo real. Discute o que é Node.js, sua arquitetura e casos de uso, além de exemplos de empresas que usam Node.js como o PayPal.
Roteiro
1. Node.js:
a. Oque é Node.js?
b. De onde surgiu essa
ideia?
2. Javascript:
a. O que é tempo-real?
b. Como assim assíncrono?
3. Arquitetura e
implementação:
a. I/O: Bloqueante ou não
bloqueante?
b. Event-loop: O que é isso?
3
4. Casos de uso:
a. Quando eu posso usar o
Node.js?
5. Na prática:
a. Frameworks: O que esperar?
6. Mercado:
a. Quem está usando Node.js?
b. O caso Paypal:
i. Por que trocar Java por
Javascript?
“
É um ambientede execução Javascript
open-source e cross-platform para o
desenvolvimento de uma variedade de
ferramentas e aplicações
5
https://en.wikipedia.org/wiki/Node.js
6.
De onde surgiuessa ideia?
● 2009, Ryan Dahl:
a. Barra de progresso de upload do Flickr;
b. Google V8 Javascript + Event-loop + I/O API;
c. JSConf, 8 de novembro de 2009;
● 2010:
a. NPM - Node Package Manager;
● 2011:
a. Primeira versão para Windows;
6
7.
De onde surgiuessa ideia?
● 2014:
a. IO.js - Alternativa às políticas de governança
de software da Joyent;
● 2015:
a. Node.js Foundation;
b. Node.js + IO.js;
i. Node.js v4
7
“
Linguagem de programaçãode alto
nível, dinâmica, interpretada [...]. É
baseada em protótipos com funções de
primeira classe criando uma linguagem
multiparadigma, suportando
programação orientada a objetos,
funcional e imperativa
9
https://en.wikipedia.org/wiki/JavaScript
10.
“
Padronizada pelas especificações
ECMAScript.Não inclui nenhuma
funcionalidade para I/O, como rede,
armazenamento ou dispositivos
gráficos. Surgiu em 1993.
10
https://en.wikipedia.org/wiki/JavaScript
11.
11
O que étempo real?
Fonte: http://www.carabinercomms.com/blog1/wp-content/uploads/2013/11/Deadline.jpg
12.
● Geralmente:
○ Tempode relógio;
○ Sincronismo;
● Na computação:
○ Tempo restrito;
○ Sistemas baseados em eventos;
○ “Deadlines”;
○ Previsibilidade.
12
O que é tempo real?
Como assim assíncrono?
14
●Independente do fluxo principal do programa;
○ Eventos (Events);
■ Sinais (Signals);
■ Funções de sincronização (Callback);
■ Objetos (Future or Promise);
■ Loops de verificação (Polling);
● Sem espera;
15.
Como assim assíncrono?
15Fonte:http://1.bp.blogspot.com/-Tvj7QIDLr0A/VHlkjPQanlI/AAAAAAAAE40/inH8S3phCCE/s1600/SynchronousAsynchronous.gif
Onde eu possousar o Node.js?
24
● Desktops:
○ Aplicativos de desktop Cross-platform;
○ Ferramentas de programação e geradores de
código;
○ Editores de texto e IDE’s;
● Servidores:
○ Tarefas de manutenção;
○ Aplicações de tempo real;
○ Aplicações altamente escaláveis;
● Sistemas embarcados:
○ Arduino;
○ Respberry PI
○ Intel Edison.
“
“[...] os sitesdo PayPal acumularam um
grande número de dívidas técnicas, e a
ideia era ter "uma pilha tecnológica
livre delas de modo a possibilitar uma
maior agilidade e inovação em seus
produtos"
34
Jeff Harrell, diretor de engenharia do PayPal
35.
35
Por que trocarJava por Javascript?
Fonte: http://pt.slideshare.net/rodrigorizando/nodejs-37850435/17
36.
Por que trocarJava por Javascript?
36
Fonte: http://pt.slideshare.net/rodrigorizando/nodejs-37850435/17
43
Referências
1. About |Node.js, acessado em 30-09-2016,
https://nodejs.org/en/about/
2. Kraken.js, acessado em 30-09-2016, http://krakenjs.com/
3. Strongloop, an IBM Company, acessado em 30-09-2016,
https://strongloop.com/
4. 6 motivos para usar Node.js, acessado em 30-09-2016,
https://udgwebdev.com/6-motivos-para-usar-nodejs
5. Socket.IO Docs, acessado em 30-09-2016, http://socket.io/docs/
6. Open Source Governance, acessado em 30-09-2016,
https://en.wikipedia.org/wiki/Open-source_governance
7. Node.Js at Paypal, acessado em 30-09-2016,
https://www.paypal-engineering.com/2013/11/22/node-js-at-pay
pal/
44.
44
Referências
8. PayPal mudade Java para Javascript, acessado em 30-09-2016,
https://www.infoq.com/br/news/2013/12/paypal-java-javascript
9. Electron JS, acessado em 30-09-2016, http://electron.atom.io/
10. KakrenJS, acessado em 30-09-2016, http://krakenjs.com/
11. Johnny Five, acessado em 30-09-2016, http://johnny-five.io/
12. NW.JS, acessado em 30-09-2016, http://nwjs.io/
13. Sails.js, acessado em 30-09-2016, http://sailsjs.org/
14. Express, acessado em 30-09-2016, http://expressjs.com/pt-br/
15. NPM, Node package manager, acessado em 30-09-2016,
https://www.npmjs.com/
16.
45.
Credits
Special thanks toall the people who made and
released these awesome resources for free:
1. Presentation template by SlidesCarnival
2. Photographs by Unsplash
45