Esse artigo faz parte da revista Java Magazine edição 64. Clique aqui para ler todos os artigos desta edição

white; COLOR: red; FONT-FAMILY: Verdana; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">

ções que utilizam recursos e serviços de API’s de terceiros, gerando uma nova aplicação que combina funcionalidades das API’s utilizadas.

 

Em que situação o tema é útil:

Sua utilidade não se restringe à criação de Mashups, mas sim aos conceitos e tecnologias adotadas que podem ser aplicadas para inúmeros tipos de projetos que necessitem de algum tipo de integração.

 

Criando um Mashup em Java:

O Mashup criado nesse artigo utiliza API’s da Amazon e do Yahoo para recuperar um livro e o número de suas referências encontradas na web. Três classes foram criadas, uma para comunicação com a Amazon utilizando XML, outra com o Yahoo no formato JSON e uma terceira para a integração dos dois serviços. A camada visual foi desenvolvida em HTML/CSS com jQuery e DWR.

 

Neste artigo vamos abordar de forma prática os desafios envolvidos no desenvolvimento de um Mashup completo em Java. Vamos explorar tecnologias e conceitos como REST, XML, XPath, JSON, DWR e como consumir web services para integração aos serviços da Amazon e do Yahoo na criação de um serviço simples para recomendação de livros Java.

Mas o que afinal é um Mashup?

De acordo com o Wikipedia um Mashup pode ser definido como uma aplicação web que combina dados de mais de uma origem em uma única ferramenta integrada. O conteúdo de um Mashup é recuperado através da utilização de API’s de terceiros, geralmente na forma de web services.

Nos últimos anos o conceito de Mashup vem ganhando bastante força principalmente pelo apoio e incentivo de grandes empresas como Google, Yahoo e Amazon, que liberam o uso de suas API’s para praticamente todos os seus serviços.

Veja a lista completa de API’s do Google e Yahoo em http://code.google.com/ e http://developer.yahoo.com/

Exemplos de Mashups

Existem centenas, ou melhor, milhares de Mashups na internet, vários são criados diariamente, todos buscando seu lugar ao sol. Alguns criados por pura diversão, outros mais elaborados com plano de negócios e investimento pesado de empresas de capital de risco.

Um caso clássico de um Mashup que vem gerando muitos comentários ultimamente é o FriendFeed. Esse serviço é denominado de “agregador social” porque ele consolida as atualizações de sites sociais como blogs, bookmarks, redes sociais, entre outros, permitindo que pessoas com contas em vários sites sociais pela internet como Flickr, Twitter, Digg, Amazon, Last.fm, entre outros, consigam agrupar atualizações sobre suas atividades online em um só lugar.

Outro Mashup recente que anda bastante comentado é o Mozilla Ubiquity, projeto ainda experimental. É uma extensão ao navegador Firefox que permite associar ações a eventos de teclado, por exemplo: atualizar meu status no twitter ou facebook, criar um mapa no Google Maps baseado em um endereço selecionado na janela do navegador e coisas assim; em teoria qualquer aplicação web que disponibilize uma API pode ser integrado ao Ubiquity, permitindo criar os mais diversos tipos serviços.

Exemplos adicionais:

   http://www.flickrvision.com – Integração entre Google Maps e Flickr;

   http://www.wikicrimes.org – Mashup de Wiki com Google Maps;

   http://ping.fm/ – Atualiza informações em redes sociais;

   http://www.4hoursearch.com/ – Site de busca baseado na API do Yahoo Search BOSS.

Porque criar um Mashup?

Em primeiro lugar porque é extremamente divertido e desafiador. Independente da linguagem de programação ou metodologia adotada, o que mais importa na criação de um Mashup bem sucedido é a criatividade, sem contar ainda com o provável reconhecimento da comunidade de programadores e pessoas antenadas nesse meio caso seu serviço seja um sucesso.

Outro motivo é que ele pode servir como um ótimo portfólio em seu currículo, principalmente se você entrou no mercado recentemente e ainda não tem muita experiência profissional.

Como criar um Mashup em Java?

Como citado há pouco, o aspecto mais importante na criação de uma Mashup é a criatividade, sendo necessária uma boa dose de inspiração e o resto é pura codificação. É neste ponto que esperamos contribuir com este artigo.

Para criar um Mashup precisamos entender conceitos como REST, XML e JSON, pois, muito provavelmente, qualquer API na internet que você venha a utilizar vai utilizar essas tecnologias.

REST

Representational State Transfer ou simplesmente REST, é um estilo de arquitetura ou “pattern” utilizado para construir Web Services que geralmente, mas não necessariamente, transmitem dados através do protocolo HTTP sem nenhuma camada de mensagem adicional como o SOAP. Veja os artigos sobre REST das Edições 54 e 56.

XML

O XML, Extensible Markup Language, é uma especificação para criação de linguagens de markup customizadas. É classificada como “Extensible” pois permite que os usuários definam seus próprios elementos. Seu objetivo principal é ajudar sistemas independentes a trocar dados estruturados principalmente pela internet.

JSON

JavaScript Object Notation, JSON, é um formato leve para troca de dados que pode ser visto como alternativa ao XML. Baseado em texto e extremamente legível, o formato JSON é utilizado para representar estruturas de dados simples, geralmente para transmitir dados estruturados através da rede em um processo chamado de serialização.

Como forma de assimilação mais fácil para o conteúdo deste artigo, desenvolvemos um simples Mashup que pode ser baixado e modificado livremente (mais detalhes no final do artigo). A aplicação exemplo consiste na integração entre os serviços Amazon AWS e Yahoo Search BOSS, (falaremos mais sobre esses serviços a seguir) onde seu simples propósito é mostrar aleatoriamente um livro Java na lista dos mais vendidos da Amazon e descobrir o número de referências encontradas para esse livro na internet. Veja na Figura 1 o resultado final esperado paro o nosso Mashup de exemplo.

 

Figura 1. Mashup que mostra um livro Java direto da Amazon e o número de links no Yahoo.

Amazon Web Services

O Amazon AWS é uma coleção de web services oferecidos pela Amazon para criação dos mais diversos tipos de solução, incluindo serviços como:

·     Amazon Elastic Compute Cloud (EC2): para criação de servidores privados virtuais;

·     Amazon Simple Storage Service (S3): para armazenamento;

·     Amazon Associates Web Service: para consulta ao catálogo completo de produtos da Amazon.

Yahoo Search BOSS

YahooSearchBOSS ou simplesmente BOSS (Build your Own Search Service) é uma nova iniciativa do Yahoo que coloca todo o seu poder computacional e infra-estrutura de search engine à disposição dos programadores, sem qualquer tipo de limitação, com o objetivo de alavancar inovações no segmento de buscas na internet.

O Yahoo Search BOSS oferece cinco tipos de buscas, são elas:

·     Web Search;

·     Image Search;

·     News Search;

·     Spelling Suggestions.

Requisitos

Por motivos de conveniência e preferência, a aplicação exemplo foi desenvolvida com o NetBeans 6.1, mas qualquer outra IDE pode ser utilizada sem nenhum problema.

Para o controle do projeto utilizamos o Maven, essa ferramenta simplifica muito etapas tediosas como gerenciamento de dependências, compilação e distribuição de aplicações.

Além das ferramentas citadas acima, as seguintes bibliotecas foram utilizadas no projeto:

   commons-httpclient: para realização de requisições http;

   commons-lang: biblioteca utilitária para fins diversos;

   json: para manipulação de dados neste formato;

   dwr: para permitir a interação entre JavaScript e Java.

Se você não tem familiaridade com o Maven, sugerimos a leitura do artigo Gerenciando projetos com Maven publicado na Edição 62.

Configurando o Ambiente

O primeiro passo é criar um novo projeto no NetBeans através do menu File>New Project e para o tipo de projeto vamos selecionar Maven Project, como mostra a Figura 2.

 

Figura 2. Criando um novo projeto Maven no NetBeans.

Na janela seguinte, de acordo com a Figura 3, vamos escolher o Maven Webapp Archetype como o template padrão para a criação de nosso projeto.

 

...

Quer ler esse conteúdo completo? Tenha acesso completo