SlideShare uma empresa Scribd logo
1 de 21
REST e o futuro das aplicações web
Rafael Nunes - www.yaw.com.br
Rafael Nunes

 Desenvolvedor há mais de uma década

 Sócio da YaW

 Java, Python e outras coisas menos glamurosas(ASP,
  VDF7)

 Atualmente prestando consultoria para o mercado
  financeiro

 Instrutor da Globalcode há 6 anos
A web, esta velha desconhecida

 Mais importante que aprender a última tecnologia da
  moda, é compreender os fundamentos que a suportam

 A Web tem sido fundamentalmente a mesma nas
  últimas décadas

 HTTP – o protocolo que move o mundo
HTTP

 Hiper Text Transfer Protocol

 Dos tempos imemoriaveis da ARPA NET

 Transferência de hipertexto

 www.pudim.com.br - facebook.com
Dissecando o HTTP - Request

 Abre uma conexão TCP

 Monta envelope de request:
   Cabeçalho: Informações sobre o
    usuário/máquina/navegador/sistema operacional/infos da
    requisição
   Corpo: Dados para o processamento da requisição
   Anexo: Em caso de upload de arquivo

 Envia envelope para processamento no servidor
Dissecando o HTTP - Response

 Recebe envelope para processamento

 Interpreta requisição do usuário

 Monta envelope de resposta:
   Cabeçalho: infos do servidor/infos do conteúdo de
    resposta/tamanho da resposta
   Corpo: Conteúdo da resposta
   Anexo: Em caso de download de arquivo

 Envia envelope e FECHA A CONEXÃO!
HTTP - Características

 Stateless/ Sem estado

 Não mantém uma conexão de vida longa entre cliente
  e servidor

 Virtude ou limitação?

 Comet, HTTP push, HTTP reverso foram criados para
  manter estado
HTTP - Caracterísicas

 Síncrono

 Não há resposta sem requisição

 Efeito da natureza stateless

 Ajax, (Long) Pooling
HTTP - Características

 E as sessões?

 A má notícia é que elas não existem

 A boa notícia é que temos boas alternativas para
  contornar esta característica

 Mas……eu preciso mesmo de sessão na web, o tempo
  todo?
Web atual

 Estamos em um momento de transição:
   A web ‘tradicional’
   HTML5 e suas novas tecnologias(localStorage, session
    storage, websockets, SPDY, etc)

 REST tem sido ainda mais crucial para a nova web que
  estamos construindo
Web como plataforma

 O que é uma requisição HTTP?
  R: Uma representação de determinado recurso no
  servidor web em determinado momento.
  Ex. http://www.yaw.com.br/screencasts.html
REST

 Representation State Transfer

 A proposta é continuar com o que temos feito, mas
  utilizando verdadeiramente o protocolo HTTP
REST

 HTTP é feito de verbos

 Que ver algo? GET, HEAD, TRACE

 Quer modificar algo? PUT, POST, DELETE
REST

 HTTP é feito de status:

 Foi tudo bem? 20x

 O que eu procuro não está mais ai? 30x

 Não pedi do jeito certo? 40x

 Houve algum problema? 50x
REST e JEE

 Especificado pela JSR 127

 JAX-RS e Jersey é a implementação de referência

 Diversos outros frameworks: RestEasy, SpringMVC, CXF
REST como camada web

 É possível criar uma arquitetura REST com JEE desde
  sempre, com servlets

 Não há acoplamento entre cliente e servidor

 Cliente pode ser com JSP+JQuery

 De quebra ganha uma API de acesso para outras
  interfaces(Desktop, Mobile, etc)

 REST utiliza outras tecnologias(XML, JSON)
REST como camada de integração

 Como integramos sistemas?
   Banco de dados
   Arquivo txt
   WebService SOAP(run to the hills)

 Tem funcionado há algumas décadas, e não há nada
  de errado. Mas não tem uma forma mais simples?
REST como camada de serviços

 O que é sua aplicação?(regras de negócio?
  Tecnologias, telas e interfaces?)

 Ela pode(e talvez deva) ser isso tudo.

 Sua aplicação deve ter uma API(Application
  Programming Interface) pública

 Esta API é quem vai criar um ecossistema em volta da
  sua aplicação
Exemplos

 REST como camada web

 REST como camada de integração

 REST como API programável
Conclusão

 REST é principalmente sobre:

 Simplicidade

 Possibilidades
Perguntas?

rafael@yaw.com.br

twitter.com/rafanunes

twitter.com/youandwe

www.yaw.com.br

Mais conteúdo relacionado

Mais procurados

Desevolvimento Web Client-side - AJAX
Desevolvimento Web Client-side - AJAX Desevolvimento Web Client-side - AJAX
Desevolvimento Web Client-side - AJAX
Guilherme
 
Tecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEBTecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEB
elliando dias
 
Mini Curso Web Services com PHP
Mini Curso Web Services com PHPMini Curso Web Services com PHP
Mini Curso Web Services com PHP
elliando dias
 

Mais procurados (14)

Desevolvimento Web Client-side - AJAX
Desevolvimento Web Client-side - AJAX Desevolvimento Web Client-side - AJAX
Desevolvimento Web Client-side - AJAX
 
Te aula1
Te aula1Te aula1
Te aula1
 
Webservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da WebWebservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da Web
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
 
Desenvolvimento de sites aula1
Desenvolvimento de sites   aula1Desenvolvimento de sites   aula1
Desenvolvimento de sites aula1
 
Integrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONIntegrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSON
 
Dream 04
Dream 04Dream 04
Dream 04
 
Web services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, APIWeb services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, API
 
Rest Teoria E Pratica
Rest Teoria E PraticaRest Teoria E Pratica
Rest Teoria E Pratica
 
Tecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEBTecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEB
 
Portfolio de serviços
Portfolio de serviçosPortfolio de serviços
Portfolio de serviços
 
Mini Curso Web Services com PHP
Mini Curso Web Services com PHPMini Curso Web Services com PHP
Mini Curso Web Services com PHP
 
Forum FWD Bruno [at] enginz com
Forum FWD Bruno [at] enginz comForum FWD Bruno [at] enginz com
Forum FWD Bruno [at] enginz com
 
JavaScript Applications
JavaScript ApplicationsJavaScript Applications
JavaScript Applications
 

Destaque

Servicios Rest con Jersey
Servicios Rest con Jersey Servicios Rest con Jersey
Servicios Rest con Jersey
Vortexbird
 

Destaque (16)

Linguagens Dinâmicas na JVM
Linguagens Dinâmicas na JVMLinguagens Dinâmicas na JVM
Linguagens Dinâmicas na JVM
 
Sistema gerenciadores de bancos de dados
Sistema gerenciadores de bancos de dadosSistema gerenciadores de bancos de dados
Sistema gerenciadores de bancos de dados
 
MongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webMongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações web
 
Google AppEngine and JEE
Google AppEngine and JEEGoogle AppEngine and JEE
Google AppEngine and JEE
 
Ferramentas Web 2.0
Ferramentas Web 2.0Ferramentas Web 2.0
Ferramentas Web 2.0
 
Web 20
Web 20Web 20
Web 20
 
Amazon WebServices Architectur
Amazon WebServices ArchitecturAmazon WebServices Architectur
Amazon WebServices Architectur
 
Web services restful con JAX-RS
Web services restful con JAX-RSWeb services restful con JAX-RS
Web services restful con JAX-RS
 
Tutorial - REST con java (JAX-RS 2.0)
Tutorial - REST con java (JAX-RS 2.0)Tutorial - REST con java (JAX-RS 2.0)
Tutorial - REST con java (JAX-RS 2.0)
 
Aula01
Aula01Aula01
Aula01
 
Secure REST with JAX-RS
Secure REST with JAX-RSSecure REST with JAX-RS
Secure REST with JAX-RS
 
JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web ServicesJAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web Services
 
Introduccion a los Servicios Web Rest
Introduccion a los Servicios Web RestIntroduccion a los Servicios Web Rest
Introduccion a los Servicios Web Rest
 
Making Java REST with JAX-RS 2.0
Making Java REST with JAX-RS 2.0Making Java REST with JAX-RS 2.0
Making Java REST with JAX-RS 2.0
 
Servicios Rest con Jersey
Servicios Rest con Jersey Servicios Rest con Jersey
Servicios Rest con Jersey
 
Developing Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJSDeveloping Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJS
 

Semelhante a REST and JEE

Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
thiagolima
 
CóPia De Minicurso Smsi
CóPia De Minicurso SmsiCóPia De Minicurso Smsi
CóPia De Minicurso Smsi
taniamaciel
 

Semelhante a REST and JEE (20)

De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações Mashup
 
XPT Framework
XPT FrameworkXPT Framework
XPT Framework
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a Internet
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Minicurso Smsi
Minicurso SmsiMinicurso Smsi
Minicurso Smsi
 
CóPia De Minicurso Smsi
CóPia De Minicurso SmsiCóPia De Minicurso Smsi
CóPia De Minicurso Smsi
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
WebAPI-Route-Translate-BasicAuth
WebAPI-Route-Translate-BasicAuthWebAPI-Route-Translate-BasicAuth
WebAPI-Route-Translate-BasicAuth
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Servlet jsp tomcat 8
Servlet jsp tomcat 8Servlet jsp tomcat 8
Servlet jsp tomcat 8
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
Ibes main
Ibes   mainIbes   main
Ibes main
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 
REST com Python
REST com PythonREST com Python
REST com Python
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 

Mais de Rafael Nunes (10)

Introdução ao Jython
Introdução ao JythonIntrodução ao Jython
Introdução ao Jython
 
Arquitetura Web no AWS
Arquitetura Web no AWSArquitetura Web no AWS
Arquitetura Web no AWS
 
Django no AWS
Django no AWSDjango no AWS
Django no AWS
 
Introdução ao Google AppEngine
Introdução ao Google AppEngineIntrodução ao Google AppEngine
Introdução ao Google AppEngine
 
Jsf2 gae
Jsf2 gaeJsf2 gae
Jsf2 gae
 
Desenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJangoDesenvolvimento web simples com Python e DJango
Desenvolvimento web simples com Python e DJango
 
JSF 2.0 + Google AppEngine
JSF 2.0 + Google AppEngineJSF 2.0 + Google AppEngine
JSF 2.0 + Google AppEngine
 
Introdução ao Adobe Flex
Introdução ao Adobe FlexIntrodução ao Adobe Flex
Introdução ao Adobe Flex
 
JEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por aiJEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por ai
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 

REST and JEE

  • 1. REST e o futuro das aplicações web Rafael Nunes - www.yaw.com.br
  • 2. Rafael Nunes  Desenvolvedor há mais de uma década  Sócio da YaW  Java, Python e outras coisas menos glamurosas(ASP, VDF7)  Atualmente prestando consultoria para o mercado financeiro  Instrutor da Globalcode há 6 anos
  • 3. A web, esta velha desconhecida  Mais importante que aprender a última tecnologia da moda, é compreender os fundamentos que a suportam  A Web tem sido fundamentalmente a mesma nas últimas décadas  HTTP – o protocolo que move o mundo
  • 4. HTTP  Hiper Text Transfer Protocol  Dos tempos imemoriaveis da ARPA NET  Transferência de hipertexto  www.pudim.com.br - facebook.com
  • 5. Dissecando o HTTP - Request  Abre uma conexão TCP  Monta envelope de request:  Cabeçalho: Informações sobre o usuário/máquina/navegador/sistema operacional/infos da requisição  Corpo: Dados para o processamento da requisição  Anexo: Em caso de upload de arquivo  Envia envelope para processamento no servidor
  • 6. Dissecando o HTTP - Response  Recebe envelope para processamento  Interpreta requisição do usuário  Monta envelope de resposta:  Cabeçalho: infos do servidor/infos do conteúdo de resposta/tamanho da resposta  Corpo: Conteúdo da resposta  Anexo: Em caso de download de arquivo  Envia envelope e FECHA A CONEXÃO!
  • 7. HTTP - Características  Stateless/ Sem estado  Não mantém uma conexão de vida longa entre cliente e servidor  Virtude ou limitação?  Comet, HTTP push, HTTP reverso foram criados para manter estado
  • 8. HTTP - Caracterísicas  Síncrono  Não há resposta sem requisição  Efeito da natureza stateless  Ajax, (Long) Pooling
  • 9. HTTP - Características  E as sessões?  A má notícia é que elas não existem  A boa notícia é que temos boas alternativas para contornar esta característica  Mas……eu preciso mesmo de sessão na web, o tempo todo?
  • 10. Web atual  Estamos em um momento de transição:  A web ‘tradicional’  HTML5 e suas novas tecnologias(localStorage, session storage, websockets, SPDY, etc)  REST tem sido ainda mais crucial para a nova web que estamos construindo
  • 11. Web como plataforma  O que é uma requisição HTTP? R: Uma representação de determinado recurso no servidor web em determinado momento. Ex. http://www.yaw.com.br/screencasts.html
  • 12. REST  Representation State Transfer  A proposta é continuar com o que temos feito, mas utilizando verdadeiramente o protocolo HTTP
  • 13. REST  HTTP é feito de verbos  Que ver algo? GET, HEAD, TRACE  Quer modificar algo? PUT, POST, DELETE
  • 14. REST  HTTP é feito de status:  Foi tudo bem? 20x  O que eu procuro não está mais ai? 30x  Não pedi do jeito certo? 40x  Houve algum problema? 50x
  • 15. REST e JEE  Especificado pela JSR 127  JAX-RS e Jersey é a implementação de referência  Diversos outros frameworks: RestEasy, SpringMVC, CXF
  • 16. REST como camada web  É possível criar uma arquitetura REST com JEE desde sempre, com servlets  Não há acoplamento entre cliente e servidor  Cliente pode ser com JSP+JQuery  De quebra ganha uma API de acesso para outras interfaces(Desktop, Mobile, etc)  REST utiliza outras tecnologias(XML, JSON)
  • 17. REST como camada de integração  Como integramos sistemas?  Banco de dados  Arquivo txt  WebService SOAP(run to the hills)  Tem funcionado há algumas décadas, e não há nada de errado. Mas não tem uma forma mais simples?
  • 18. REST como camada de serviços  O que é sua aplicação?(regras de negócio? Tecnologias, telas e interfaces?)  Ela pode(e talvez deva) ser isso tudo.  Sua aplicação deve ter uma API(Application Programming Interface) pública  Esta API é quem vai criar um ecossistema em volta da sua aplicação
  • 19. Exemplos  REST como camada web  REST como camada de integração  REST como API programável
  • 20. Conclusão  REST é principalmente sobre:  Simplicidade  Possibilidades