Esse artigo faz parte da revista WebMobile edição 16. Clique aqui para ler todos os artigos desta edição

imagem.JPG

Clique aqui para ler a revista em PDFimagem_pdf.jpg

Java ME

Utilizando web services em aplicações móveis

O que a especificação JSR 172 traz de novo ao uso de Web Services em aplicações Java ME

 

   Neste artigo, daremos uma breve introdução aos Web Services, tão falados na indústria de tecnologia de software hoje em dia, de sua aplicação na integração de serviços localizados remotamente, e principalmente sua relação com os dispositivos móveis, nosso foco neste artigo.

   Após uma pequena introdução teórica e algumas informações conceituais, desenvolveremos uma aplicação chamada Clima Global, que fará uso da API de Web Services, presente nos dispositivos Nokia, para demonstrar como é fácil e rápido utilizar serviços desenvolvidos por terceiros para criar aplicações móveis realmente úteis para o dia-a-dia. Mãos à obra!

Introdução aos Web Services

Web Services surgiram com a idéia de resolver os problemas de incompatibilidade entre os protocolos, uso de portas e formatos binários rejeitados por firewalls, dentre outros problemas apresentados em software projetados com a arquitetura em camada. Web services são um sistema de software desenhado para permitir a comunicação machine-to-machine em uma rede de computadores. Eles permitem a descrição de um serviço em uma determinada máquina, feita em uma linguagem baseada em XML (usualmente WSDL – Web Services Description Language). Tal descrição é feita seguindo-se as regras do padrão SOAP (Simple Object Access Protocol) para que, seguido o mesmo padrão, ferramentas do lado do cliente consigam automaticamente gerar código em linguagens como Java e as do framework .NET, para que do ponto de vista do desenvolvedor, ele esteja apenas acessando código em sua linguagem favorita, sem se importar com os detalhes como tráfego de rede, parsing do XML para consumo do serviço, etc. A Figura 1 nos mostra um exemplo simplificado da arquitetura de um web service.

 

Imagem

Figura 1. Arquitetura básica de um Web Service

Em suma, os principais benefícios dos Web Services são:

·         Protocolos baseados em um padrão como XML, permitindo a geração automática tanto do código cliente quanto do código servidor. Exemplo: um Enterprise JavaBean pode ser exposto como um web service de forma praticamente automática, e o código cliente em Java para consumi-lo pode ser gerado da mesma forma.

·         Utilização de protocolos baseados em texto, o que permite tráfego suave através de firewalls que fazem verificações de pacote.

·         Utilização de porta 80 do protocolo HTTP, o que permite transportar as chamadas ao serviço sem que o firewall bloqueie estas portas.

·         Distribuição de código de forma modularizada e que permite fácil manutenção e correção de erros, sem os problemas verificados com as versões binárias de arquiteturas distribuídas.

·         Com a modularização atingida no item interior, torna-se possível que dispositivos de diferentes arquiteturas, como: computadores, handhelds, telefones celulares, set-top boxes, entre outros, consigam interagir e reutilizar serviços e porções de código possibilitando um uso mais inteligente e eficiente dos recursos computacionais.

JSR 172 - Web Services no mundo Java Micro Edition

Para que uma plataforma seja habilitada a consumir Web Services, é necessário que possua suporte ao parsing de XML (afinal todas as trocas de mensagens são feitas neste padrão) e uma implementação do protocolo SOAP, para decodificar e “entender” a descrição do serviço, as operações disponibilizadas e os tipos de dados que elas retornam.

Para o mundo Java MicroEdition, essas pré-condições costumavam ser satisfeitas através do uso de pacotes de terceiros, tanto para o parsing de XML quanto para a decodificação dos envelopes SOAP. A Figura 2 mostra alguns dos pacotes mais utilizados.

 

Imagem

Figura 2. Pacotes de terceiros para parsing de XML e SOAP

Pelo lado positivo, pacotes de terceiros trouxeram o poder de interpretar XML e SOAP a dispositivos que não tinham APIs para este fim. No caso dos dispositivos da Nokia, falamos de toda a geração Série 40 1ª e 2ª edições, e da S60 1ª e 2ª edições até Feature Pack 2. Isso significa que milhões de dispositivos já vendidos no mercado dependiam de os desenvolvedores integrarem frameworks XML junto com suas aplicações para terem a funcionalidade desejada. Enquanto esses frameworks funcionam bem e já foram suficientemente testados em aplicações comerciais, eles sofrem de três problemas básicos:

1.      Precisam ser integrados diretamente ao pacote .JAR da aplicação, aumentando o tamanho da mesma e provocando problemas de instalação em dispositivos com menor quantidade de memória.

2.      Não são implementados nativamente, o que faz com que sua performance não seja tão boa quanto a de componentes nativos.

3.      Suas interfaces e APIs diferem bastante umas das outras, o que faz com que desenvolvedores utilizando mais de um desses parsers precisem manter versões diferentes de suas aplicações.

 

O desenvolvimento da especificação JSR 172 – Web Services API – veio sanar esses problemas. A especificação descreve uma API unificada tanto para o parsing de XML quanto para o consumo do protocolo SOAP. Ela é composta de dois pacotes opcionais:

·         Um pacote para parsing de XML, consistindo em um subset do pacote JAXP 1.2 (Java API for XML Processing) encontrado na edição J2SE. Contém suporte apenas para um parser SAX (orientado a eventos) e suporta outros atributos como namespaces e diferentes encodings.

·         Um pacote para consumo de Web Services, consistindo em um subset do pacote JAX-RPC 1.1, que fornece a infra-estrutura necessária para Web Services utilizando o modelo RPC com XML messages.

 

Ambos os pacotes possuem alguns tipos de limitações, que o leitor deverá procurar nos documentos relativos ao JSR 172. Muitos deles podendo ser encontrados no site do Fórum Nokia (http://forum.nokia.com). Outro detalhe importante é que a implementação de ambos os pacotes é opcional, com alguns dispositivos implementando apenas o pacote de parsing enquanto outros implementam as duas sub-especificações. Para os dispositivos da Nokia, a opção de implementação está detalhada na Tabela 1.

 

Tabela 1. Implementação de JSR 172 em dispositivos Nokia

Dispositivo

JSR 172

JSR 172 – XML Parsing

JSR 172 – Web Services

...
Quer ler esse conteúdo completo? Tenha acesso completo