Successfully reported this slideshow.
Your SlideShare is downloading. ×

Node.JS: JavaScript no servidor com Google V8

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 52 Ad

Node.JS: JavaScript no servidor com Google V8

Download to read offline

Com Node.js, JavaScript liberta-se do navegador e torna-se uma linguagem dinâmica de uso geral assim como Python e Ruby. Node.js usa o mesmo motor V8 de alto desempenho do Google Chrome, roda em Linux, Windows e Mac OSX, e oferece APIs assíncronas para criar servidores e clientes que lidam com muitas requisições concorrentes de modo eficiente.
Saiba o que é programação assíncrona e tenha uma visão panorâmica do Node.js.

Com Node.js, JavaScript liberta-se do navegador e torna-se uma linguagem dinâmica de uso geral assim como Python e Ruby. Node.js usa o mesmo motor V8 de alto desempenho do Google Chrome, roda em Linux, Windows e Mac OSX, e oferece APIs assíncronas para criar servidores e clientes que lidam com muitas requisições concorrentes de modo eficiente.
Saiba o que é programação assíncrona e tenha uma visão panorâmica do Node.js.

Advertisement
Advertisement

More Related Content

More from Luciano Ramalho (20)

Recently uploaded (20)

Advertisement

Node.JS: JavaScript no servidor com Google V8

  1. 1. Luciano Ramalho luciano@ramalho.org @luciano Node.js: JavaScript com Google V8 no servidor
  2. 2. Luciano Ramalho • Programando por prazer desde 1978, profissionalmente desde 1982 • Arquiteto de soluções Web desde 1994 • 1º diretor técnico do Brasil Online, na Abril S/A • Muitos clientes e alguns empregos desde então, quase sempre atuando na Web (server-side) • Agora: Oficinas Turing e Academia Python na Globalcode @luciano
  3. 3. Demonstração bandeiras.js etc.* * http://github.com/oturing/nodejs @luciano
  4. 4. @luciano
  5. 5. Node.js... • É um ambiente de execução para usar JavaScript fora do navegador • linha de comando + console interativo • Incorpora o engine de JavaScript Google V8 • aquele do Google Chrome, ECMAScript 5 • Inclui bibliotecas para fazer programação de I/O orientada a eventos (modo assíncrono) @luciano
  6. 6. Arquitetura @luciano
  7. 7. Demonstração console interativo @luciano
  8. 8. Node.js: console (REPL) > function agora() { ... var dt = Date().slice(16,24); ... console.log(dt); ... } undefined > agora(); 13:50:17 undefined > @luciano
  9. 9. Programação assíncrona? @luciano
  10. 10. O restaurante síncrono @luciano
  11. 11. O restaurante síncrono @luciano
  12. 12. O restaurante síncrono @luciano
  13. 13. O restaurante síncrono @luciano
  14. 14. O restaurante síncrono @luciano
  15. 15. O restaurante síncrono @luciano
  16. 16. O restaurante síncrono @luciano
  17. 17. O restaurante assíncrono @luciano
  18. 18. O restaurante assíncrono @luciano
  19. 19. O restaurante assíncrono @luciano
  20. 20. O restaurante assíncrono @luciano
  21. 21. O restaurante assíncrono @luciano
  22. 22. O restaurante assíncrono @luciano
  23. 23. O restaurante assíncrono @luciano
  24. 24. Programação assíncrona = callback @luciano
  25. 25. Demonstração hora*.js, sigint*.js, stat*.js * http://github.com/oturing/nodejs @luciano
  26. 26. hora.js Com isso o shell do *nix consegue executar o script O 2º console.log acontece antes do primeiro * http://github.com/oturing/nodejs @luciano
  27. 27. hora2.js Tempos diferentes * http://github.com/oturing/nodejs @luciano
  28. 28. hora3.js Cada chamada dispara a próxima, com atraso aleatório Iniciar * http://github.com/oturing/nodejs
  29. 29. statSync.js Importação de módulos ≈ Common.js Invoca a função statSync do módulo fs. Saída padrão: stdout * http://github.com/oturing/nodejs @luciano
  30. 30. stat.js: chamada assíncrona Callback: esta função é invocada quando o SO responde o stat, milhões de ciclos depois * http://github.com/oturing/nodejs @luciano
  31. 31. sigint.js Callback: invocada quando o operador tecla ˆC * http://github.com/oturing/nodejs @luciano
  32. 32. sigint2.js O primeiro callback associa um segundo callback ao mesmo evento * http://github.com/oturing/nodejs @luciano
  33. 33. sigint3.js O que faz esta chamada? @luciano
  34. 34. sigint3.js Ela constrói e retorna uma função sob medida @luciano
  35. 35. sigint3.js Variável livre: não é definida no escopo desta função @luciano
  36. 36. sigint3.js Closure é um puxadinho do escopo da função @luciano
  37. 37. E o que eu ganho com todo este trabalho? @luciano
  38. 38. Acessar o cache L1 é... ...como pegar um papel sobre a sua mesa Analogia do Ryan Dahl @luciano
  39. 39. Acessar o cache L2 é... ...como pegar um papel em uma gaveta @luciano
  40. 40. Acessar a RAM é... ...como pegar um papel em um armário @luciano
  41. 41. Acessar a rede é... @luciano
  42. 42. Acessar a rede é... @luciano
  43. 43. Acessar a rede é... @luciano
  44. 44. Acessar a rede é... ...como ir buscar um papel no Japão @luciano
  45. 45. Tempos de acesso ciclos de CPU Dados cache L1 3 aproximados cache L2 14 citados por RAM 250 Ryan Dahl* disco 41.000.00 rede 240.000.000 * http://www.youtube.com/watch?v=M-sc73Y-zQA @luciano
  46. 46. Decifrando o hello world @luciano
  47. 47. Decifrando o hello world @luciano
  48. 48. Decifrando o hello world @luciano
  49. 49. Eco-sistema • Produto experimental, APIs mudando (v. 0.6.x) • Framework Web: Express, comparável a Flask (Python) ou Sinatra (Ruby) • nada tão completo quanto Django ou Rails • Centenas de bibliotecas de terceiros, livres* • Hospedagem especializada • gerenciados: Joyent, Heroku, Nodegrid; VPS etc. * https://github.com/joyent/node/wiki/modules @luciano
  50. 50. Cocktails • Mojito • Manhattan • outros drinks...? @luciano
  51. 51. Evitando “o pior do JS” • “use strict” sempre, sem medo de ser feliz • CoffeScript, Clojure etc. • no server-side, ninguém liga se você usar outra linguagem, desde que ela gere código JavaScript • ECMAScript 5 • no server-side o ambiente é controlado: o único engine que te interessa é o V8 @luciano
  52. 52. Luciano Ramalho luciano@ramalho.org @luciano oficina online: JavaScript moderno com Node.js e testes automatizados * http://pre-node.turing.com.br

Editor's Notes

  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

×