Posts Tagged ‘RESTful’

Palestra: VRaptor3: Guerrilha Web – Falando em Java 2009

maio 25, 2009

VRaptor3: Guerrilha Web

Palestra apresentada por Felipe Sabella e Guilherme Silveira (Caelum)

Esta palestra foi uma apresentação (no fundo, uma mensagem de “Use-me”…) das novidades do VRaptor3, framework de aplicações Web desenvolvido pelo pessoal da Caelum, que ainda está em fase de testes e sem documentação completa, tendo sua liberação para o público programada daquia a 3 semanas (previsão dos palestrantes).

Começo

Tudo começou em 2004, quando o pessoal da Caelum buscava uma alternativa mais completa para criar a interface do “GUJ 2.0″, pois o framework usado no momento, o WebWorks, não estava satisfazendo as necessidades. Partindo da premissa do “Quer algo do seu jeito, então faça você” ou “É uma porcaria, vamos fazer o nosso”, surgiu o projeto VRaptor.

Projeto VRaptor

VRaptor como foi dito, não veio pra “reinventar a roda”, mas para facilitar o desenvolvimento Web com a maior compleitude possível. Foi usada a frase “Quando se rouba idéias de todo mundo é uma pesquisa”, para embasar o desenvolvimento da ferramenta e a busca para agregar as necessidades principais do programador Web.

Em uma pesquisa rápida a platéia foi questionada sobre quantos projetos deram certo com Struts e quantos falharam (a mesma coisa com JSF). Algumas pessoas levantaram a mão para certo, outras para errado, mas no final o objetivo era dizer que com o VRaptor as coisas seriam diferentes (“Jabá” da ferramenta, é claro). Foi possível ver que o auditório estava bem fracionando sobre frameworks já usados em desenvolvimento Web, citando até outros exemplos. Hoje no mercado temos cerca de 120 frameworks de desenvolvimento Web disponíveis, aumentando e muito as opções de uso.

Novidades da versão 3

Foram apresentadas as seguintes novidades da versão 3 do VRaptor:

  • Integra com Spring e Pico Container por padrão (Spring é default);
  • Cria novas integrações DWR e Flex;
  • Refactor amigável: validação e redirecionamento;
  • VRaptor auxilia nas annotations do RESTful;
  • Features “legais”: upload e download de arquivos com menos linha de código;
  • URI’s mais limpas e claras (inspiração no Rails);
  • Definições de escopo (uso da annotation “@ApplicationScoped”);
  • Delega para outros a configuração de XML e properties;
  • Conventionful (totalmente convencionável): retorno de método para os mais diversos tipos & collections.

Durante a exposição de cada uma das novidades ambos os palestrantes mostravam, compilavam e explicavam códigos com uso da ferramenta, tornando bem claro o entendimento de uso da mesma.

Por que usar VRaptor?

  • Há pessoas que não gostam de Struts Action (gosto pessoal dos dois e de outras pessoas. Dizem que cada vez que se usa Struts Action “mata-se uma foca”);
  • Cada framework agrada tipos diferentes de usuários. VRaptor pode agradar você.

No final (tirando o “jabá” de sempre) foi uma palestra para agregar conhecimento de mais um framework Web, que pode ou não nos agradar, mas que já tem aceitação de um certo número de pessoas. Ambos os palestrantes conseguiram expor ao público de maneira clara, dinâmica e concisa os conceitos passados.

Palestra: WebServices RESTful – Falando em Java 2009

maio 25, 2009

WebServices RESTful

Palestra apresentada por Jim Webber (ThoughtWorks)

Introdução

Jim, que na minha opinião, foi o melhor palestrante do evento, fechou o evento falando do mesmo assunto que seria destinado a Bill Burke, WebServices RESTful. Após apresentar sua MiniBio ele apresentou os tópicos da apresentação:

  • The Richardson Maturity Model;
  • Web Architecture;
  • Tunneling and POX;
  • URI templates and CRUD Services;
  • Hypermedia Formats;
  • RESTful Services.

The Richardson Maturity Model

O modelo de maturidade Richardson é definido em quatro níveis:

  • Level 0: SOAP, XML, RPC, POX (single URI);
  • Level 1: URI tunneling (muitas URI’s, único verbo);
  • Level 2: Muitas URI’s, muitos verbos (CRUD Services – Modelo Amazon S3);
  • Level 3: Level 2 + Hypermedia (RESTful Services).

Web Architecture

  • Conceito Web: baseada em recursos, acessada por URI’s (nunca diga URL’s: Deus mata crianças e gatos se você fizer isso, de acordo com Jim), arquivada em meios físicos, acessada por meios lógicos (WebServices) e distribuída para aplicações finais (usuários). Tudo é baseado em verbos HTTP;
  • Tudo é acessado via URI’s. URI é um endereço de acesso a recurso(s) de sistema(s);
  • A Web é muito poderosa: é escalável, tolerante a falhas, recuperável, tem baixo acoplamento, interface uniforme, modelo stateless e fail-over fácil;
  • HTTPS é uma tecnologia madura (baseada em SSL) e deve ser aplicada na Web;
  • Web != REST  (não abuse da Web).

Tunneling and POX

  • URI tunneling Pattern: URI’s com assinatura padrão e facilidade de manutenção, acesso e mapeamento;
  • URI tunneling Strengths: muito fácil entendimento e usabilidade em outras linguagens;
  • POX Pattern: como “parsear” padrões de texto, processá-los e disponibilizar as informações de envio;
  • POX Strenghts: simples, apenas usa HTTP POST e XML, facilidade de reuso, sem suporte a metadados;

URI templates and CRUD Services

  • Web já detém a maioria dos recursos. Deve-se usar o CRUD e pensar nele como base (Jim apresentou exemplos de sinalização de mensagens usando GET, POST, PUT, DELETE);
  • CRUD é bom? Sim, mas CRUD não é REST. Modelo CRUD ainda é muito implementado para armazenar dados somente.

Hypermedia Formats & RESTful Services

  • Microformatos na semântica W3C;
  • RESTful services é o level 3 (media type rules!). Logo é preciso implementar formatos hypermedia e XML (e/ou Application XML) não pode conter links. Do contrário não é nível 3;
  • Application /vnd.restbucks + XML: é o formato XML para hypermedia; não é padrão para a IANA;
  • Links descrevem protocolos, fluxo, regra de negócio. Logo podemos pensar em “Link as API” e tudo como framework;
  • Se você não tem hypermidia você não tem o RESTful;
  • Use a Web para escalabilidade massiva, mas com tolerância;
  • HTTP tem estados e header para todas as situações. Queremos ter baixo acoplamento e isso pode ser auxiliado por meio dos links hypermidia.

Para finalizar Jim Webber deixou um link de um artigo seu escrito para o InfoQ, contendo os mesmos exemplos da apresentação. Agradeceu a recepção e o interesse do público brasileiro. Da minha parte fica a impressão de quão incrível são os palestrantes internacionais e a desenvoltura para fazer apresentação e explanação de idéias sem igual.