Node.JS: JavaScript no servidor com Google V8

9,830 views
9,684 views

Published on

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.

Published in: Technology
0 Comments
17 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,830
On SlideShare
0
From Embeds
0
Number of Embeds
1,890
Actions
Shares
0
Downloads
186
Comments
0
Likes
17
Embeds 0
No embeds

No notes for slide
  • \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
  • Node.JS: JavaScript no servidor com Google V8

    1. 1. Luciano Ramalho luciano@ramalho.org @lucianoNode.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 Temposdiferentes * 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.jsImportação de módulos ≈ Common.js Invoca a funçãostatSync 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õesde 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 @lucianooficina online:JavaScript modernocom Node.js e testes automatizados * http://pre-node.turing.com.br

    ×