JavaScript Applications
        Luciano Costa
trabalho desde 2001 com

    desenvolvimento de software




Ruby, JavaScript, PHP, Java, Delphi, Asp, ColdFusion, Clipper, UA-Clip, VB
home-office
recentemente
JavaScript	
  
vamos falar de
JavaScript
não é Java!	
  
JavaScript
não é fácil!	
  
JavaScript
linguagem funcional e dinâmica
JavaScript
linguagem funcional e dinâmica
baseada em protótipos
JavaScript
              linguagem funcional e dinâmica
              baseada em protótipos
entenda >	
   eventos, callbacks, closures, escopo	
  
JavaScript
todo mundo acha que sabe
JavaScript
todo mundo acha que sabe	
  
sempre foi mal compreendida
JavaScript
todo mundo acha que sabe	
  
sempre foi mal compreendida
sempre foi o Patinho Feio da internet…
2005
até que, em


                     ⇒ 	
  	
  	
  Ajax	
  
                     ⇒ 	
  	
  	
  Web	
  2.0	
  
Assynchronous Javascript And XML	
  
workflow sistemas web

solicita
               pesquisa
responde
workflow sistemas web

 solicita
ü  HTTP       pesquisa
 responde
workflow sistemas web
            ü    Apache
            ü    Tomcat
            ü    IIS
 solicita   ü    Etc..

ü  HTTP                   pesquisa
 responde
workflow sistemas web
            ü    Apache
            ü    Tomcat
            ü    IIS
 solicita   ü    Etc..

ü  HTTP                   pesquisa
 responde
            ü    Java
            ü    Ruby
            ü    PHP
            ü    .Net
            ü    Etc..
workflow sistemas web
            ü    Apache
            ü    Tomcat
            ü    IIS
 solicita   ü    Etc..

ü  HTTP                   pesquisa
 responde                  ü  ORM
                           ü  Driver
            ü    Java
            ü    Ruby
            ü    PHP
            ü    .Net
            ü    Etc..
workflow sistemas web
            ü    Apache
            ü    Tomcat
            ü    IIS
 solicita   ü    Etc..

ü  HTTP                   pesquisa
 responde                  ü  ORM
                           ü  Driver
            ü    Java                  ü  FileSystem
            ü    Ruby                  ü  Memória
            ü    PHP                   ü  Serviço
            ü    .Net
            ü    Etc..
workflow sistemas web
                   ü    Apache
                   ü    Tomcat
                   ü    IIS
 solicita          ü    Etc..

ü  HTTP                          pesquisa
 responde                         ü  ORM
                                  ü  Driver
                   ü    Java                  ü  FileSystem
ü    HTML
                   ü    Ruby                  ü  Memória
ü    CSS
                   ü    PHP                   ü  Serviço
ü    JavaScript
ü    XML          ü    .Net
ü    Mídia        ü    Etc..
O que muda com AJAX ?
     XMLHttpRequest



       XML, JSON
AJAX virou gambiarra	
  
tentativa de simular realtime gera overhead	
  
Websockets	
  
                               HTML5




comunicação bidirecional	
  
O que muda com websockets?

       publish / subscribe
            realtime
Socket.io	
  
cross-browser realtime layer	
  

       •    WebSocket
       •    Adobe® Flash® Socket
       •    AJAX long polling
       •    AJAX multipart streaming
       •    Forever Iframe
       •    JSONP Polling
Node.js	
  
Evented I/O for V8 JavaScript	
  
Node.js	
  
Node.js	
  

% node facensa.js
Servidor rodando em http://127.0.0.1:1337/
NPM	
  
Gerenciador de Pacotes do Node	
  
% npm install socket.io
NPM	
  


% npm install -d



                   /package.json	
  
Express.js	
  
Node web framework	
  
Express.js	
  
EJS Templates	
  
<% Embedded JavaScript %>	
  
EJS Templates	
  

           /views/Alunos.ejs	
  
Mongoose	
  
Modelagem de Objetos para MongoDB	
  
Mongoose	
  
Mongoose	
  
Jasmine	
  
Framework Testes BDD	
  
Jasmine	
  
Links
Websockets – http://dev.w3.org/html5/websockets
  Socket.io – http://socket.io
    Node.js – http://nodejs.org
      NPM – http://npmjs.org
 Express.js – http://expressjs.com
       EJS – http://embeddedjs.com
 Mongoose – https://github.com/LearnBoost/mongoose
   Jasmine – https://github.com/pivotal/jasmine
Obrigado!	
  
 Luciano Costa
 http://lucianocosta.info	
  




     @lscosta	
  

JavaScript Applications