Programação
assíncrona e
de tempo real
Apresentação
Diogo Cabral
Grande entusiasta de ciência e
tecnologia, graduando em Ciência da
Computação.
2
Roteiro
1. Node.js:
a. O que é 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?
1.
Node.js
4
“
É um ambiente de 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
De onde surgiu essa 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
De onde surgiu essa 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
2.
Javascript
8
“
Linguagem de programação de 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
“
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
O que é tempo real?
Fonte: http://www.carabinercomms.com/blog1/wp-content/uploads/2013/11/Deadline.jpg
● Geralmente:
○ Tempo de relógio;
○ Sincronismo;
● Na computação:
○ Tempo restrito;
○ Sistemas baseados em eventos;
○ “Deadlines”;
○ Previsibilidade.
12
O que é tempo real?
Como assim assíncrono?
13Fonte: http://cutroni.com/blog/wp-content/uploads/martha-async-300x251.jpg
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;
Como assim assíncrono?
15Fonte: http://1.bp.blogspot.com/-Tvj7QIDLr0A/VHlkjPQanlI/AAAAAAAAE40/inH8S3phCCE/s1600/SynchronousAsynchronous.gif
Como assim assíncrono?
16
3.
Arquitetura e
implementação
17
Arquitetura
18
● Componentes do Node.js:
Fonte: http://khan.io/wp-content/uploads/2015/02/node_v8-1.png
Com bloqueio ou sem bloqueio?
19
Ops...
I/O Bloqueante ou não bloqueante?
20
● Todo mundo VS. Entrada e saída
Processador, memória
RAM, memórias cache
Disco, rede,
dispositivos
USB
I/O Bloqueante ou não bloqueante?
21
Fonte: http://www.techthali.org/wp-content/uploads/2012/07/npm8.png
Event-loop, o que é isso?
22
Fonte: http://maxprog.net.pl/node-js/node-js-server-architecture/
23
4.
Casos de uso
Onde eu posso usar 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.
25
5.
Na prática
Frameworks: O que esperar?
26
Fonte: https://www.npmjs.com/
Frameworks: O que esperar?
27
● Desktop:
Frameworks: O que esperar?
● Web:
28
Frameworks: O que esperar?
● Arduino e outros:
29
30
6.
Mercado
Quem está usando Node.js?
31
Fonte: http://www.roweb.ro/blog/5-great-use-cases-for-node-js/
Quem está usando Node.js?
32
Fonte: https://strongloop.com/node-js/why-node/
33
7.
O caso PayPal
“
“[...] os sites do 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
Por que trocar Java por Javascript?
Fonte: http://pt.slideshare.net/rodrigorizando/nodejs-37850435/17
Por que trocar Java por Javascript?
36
Fonte: http://pt.slideshare.net/rodrigorizando/nodejs-37850435/17
Por que trocar Java por Javascript?
37
Desenvolvimento
75% mais rápido
38
2x mais requisições
com ⅕ do
processamento
usado por Java
39
Carregamento de
páginas 35% mais
rápido
40
40% menos
arquivos e 33%
menos linhas de
código
41
Obrigado!
Dúvidas?
Pode me contactar nos endereços:
contato@diogocabral.com
diogo.silva@arapiraca.ufal.br
diogocs1@gmail.com
42
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
Referências
8. PayPal muda de 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.
Credits
Special thanks to all the people who made and
released these awesome resources for free:
1. Presentation template by SlidesCarnival
2. Photographs by Unsplash
45

Node.js - Programação assíncrona e de tempo real

  • 1.
  • 2.
    Apresentação Diogo Cabral Grande entusiastade ciência e tecnologia, graduando em Ciência da Computação. 2
  • 3.
    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?
  • 4.
  • 5.
    “ É 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
  • 8.
  • 9.
    “ 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?
  • 13.
    Como assim assíncrono? 13Fonte:http://cutroni.com/blog/wp-content/uploads/martha-async-300x251.jpg
  • 14.
    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
  • 16.
  • 17.
  • 18.
    Arquitetura 18 ● Componentes doNode.js: Fonte: http://khan.io/wp-content/uploads/2015/02/node_v8-1.png
  • 19.
    Com bloqueio ousem bloqueio? 19 Ops...
  • 20.
    I/O Bloqueante ounão bloqueante? 20 ● Todo mundo VS. Entrada e saída Processador, memória RAM, memórias cache Disco, rede, dispositivos USB
  • 21.
    I/O Bloqueante ounão bloqueante? 21 Fonte: http://www.techthali.org/wp-content/uploads/2012/07/npm8.png
  • 22.
    Event-loop, o queé isso? 22 Fonte: http://maxprog.net.pl/node-js/node-js-server-architecture/
  • 23.
  • 24.
    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.
  • 25.
  • 26.
    Frameworks: O queesperar? 26 Fonte: https://www.npmjs.com/
  • 27.
    Frameworks: O queesperar? 27 ● Desktop:
  • 28.
    Frameworks: O queesperar? ● Web: 28
  • 29.
    Frameworks: O queesperar? ● Arduino e outros: 29
  • 30.
  • 31.
    Quem está usandoNode.js? 31 Fonte: http://www.roweb.ro/blog/5-great-use-cases-for-node-js/
  • 32.
    Quem está usandoNode.js? 32 Fonte: https://strongloop.com/node-js/why-node/
  • 33.
  • 34.
    “ “[...] 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
  • 37.
    Por que trocarJava por Javascript? 37
  • 38.
  • 39.
    2x mais requisições com⅕ do processamento usado por Java 39
  • 40.
  • 41.
    40% menos arquivos e33% menos linhas de código 41
  • 42.
    Obrigado! Dúvidas? Pode me contactarnos endereços: contato@diogocabral.com diogo.silva@arapiraca.ufal.br diogocs1@gmail.com 42
  • 43.
    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