Leitor Móvel de RSS

Propaganda
Universidade Federal de Viçosa
Departamento de Informática
Trabalho de Computação Móvel
Leitor Móvel de RSS
Professor Mauro Nacif Rocha
Alex Guimarães Lima
Ângelo Cavalier
Mariane de Oliveira Pereira
Rafael Barros Navarro
Viçosa
Fevereiro de 2007
47678
47665
47674
47671
Índice
1.
2.
3.
4.
Introdução.........................................................................................................
Motivação..........................................................................................................
Documentação do sistema.................................................................................
Descrição das tecnologias utilizadas.................................................................
4.1. J2ME ....................................................................................................................
4.2. CLDC 1.1 ............................................................................................................
4.3. MIDP 2.0 .............................................................................................................
4.4. HTTP ..................................................................................................................
4.5. XML ...................................................................................................................
4.6. RSS .....................................................................................................................
5.
6.
7.
8.
Descrição do funcionamento do sistema...........................................................
Exemplos de utilização e dificuldades encontradas..........................................
Conclusão..........................................................................................................
Bibliografia.......................................................................................................
1. Introdução
No dia 21 de novembro de 2006, a Agência Nacional de Telecomunicações (ANATEL)
anunciou que há 96,6 milhões de celulares habilitados no Brasil. Com aparelhos cada vez mais
sofisticados (câmeras embutidas, mp3, etc.) e novas tecnologias para conexão e transferência de
dados, temos um mercado em franca expansão. Desta forma torna-se imperativo explorá-lo.
Uma aplicação leve, simples e sobretudo útil estabelece a tênue linha que separa o sucesso
do fracasso de um produto. Assim criamos um projeto simples, com duas funcionalidades (previsão
do tempo e conversor de moedas), de manuseio bastante intuitivo, ocupando o mínimo de memória
para seu funcionamento, e por que não dizer útil? Principalmente sob a visão de determinados
contextos, são informações que qualquer pessoa acaba solicitando em algum momento. E projetado
para uso em telefone celular, mais acessível é quase impossível.
2. Motivação
Necessidade de se saber sobre as condições do tempo no Brasil e em áreas específicas, de
qualquer lugar a qualquer hora. Por exemplo, para planejar o final de semana no campo ou no
litoral.
Necessidade de possuir informação atualizada de cotação de moedas para estratégia de
negócios pessoal ou da empresa.
3. Documentação do Sistema
O PESw e ERSw do sistema seguem em anexo a este documento.
Diagrama de Interfaces:
4. Descrição das Tecnologias Utilizadas
4.1 J2ME
Java Plataform, Micro Edition (Java ME) ou J2ME É uma tecnologia que nos possibilita o
desenvolvimento de software para sistemas e aplicações embarcadas, ou seja, toda aquela que roda
em um dispositivo de propósito específico, desempenhando alguma tarefa que seja útil para o
dispositivo.
É a plataforma Java para dispositivos compactos, como celulares, PDAs, controles remotos,
e uma outra gama de dispositivos. Java ME é uma coleção de APIs do Java definidas através da JCP
(Java Community Proccess).
A comunidade JCP adotou duas abordagens para especificar as necessidades dos pequenos
dispositivos - a sua arquitetura computacional.
Primeiro eles definiram o ambiente de execução Java (do inglês Java run-time environment),
e um conjunto de classes básicas, chamadas de core, que operam sobre cada dispositivo. Isso foi
denominado Configurações (do inglês Configurations). Uma configuração define a JVM (Java
Virtual Machine) para um pequeno e específico dispositivo computacional. Há duas configurações
para um dispositivo embarcado:
●
Uma para dispositivos com maior capacidade computacional (do inglês High-end consumer
devices), denominado CDC (Connected Device Configuration). Por exemplo, um televisor
digital, micro-ondas ou uma geladeira, apesar de não terem como princípio fundamental o
processamento de dados, são facilmente adaptáveis para carregarem discos de grande
capacidade de armazenamento, estarem ligados a redes de alto desempenho, terem muita
memória, fonte permanente de energia etc.
●
A outra com menor capacidade computacional (do inglês Low-end consumer devices),
denominado CLDC (Connected Limited Device Configuration). Por exemplo, um outro
grupo de aparelhos que não podem estar ligados a uma tomada elétrica para usufruírem de
uma possível fonte inesgotável de energia; utilizam uma rede wireless intermitente de baixa
performance e confiabilidade; pelas limitações de custo, não são viáveis de suportar grande
quantidade de memória volátil e não volátil. Neste grupo encaixam-se os aparelhos
celulares, PDAs, pagers e outros.
A segunda abordagem foi definida como um perfil (do inglês profile). Um perfil consiste
em um conjunto de classes que possibilita os desenvolvedores de software implementarem as
aplicações de acordo com as características das aplicações dos pequenos dispositivos
computacionais. Foi denominado o MIDP (Mobile Information Device Profile), oferecendo
recursos como rede, componentes de interface, armazenamento local, etc.
4.2 CLDC 1.1
Uma configuração como a CLDC fornece o conjunto mais básico de bibliotecas e
características da máquina-virtual que devem estar presentes em cada implementação de um
ambiente J2ME. Quando acoplado com um ou mais perfis, a CLDC dá aos desenvolvedores uma
plataforma Java sólida para criar aplicações para consumidores e dispositivos embarcados.
O objetivo da especificação de CLDC é estandardizar uma plataforma de desenvolvimento
de aplicações Java altamente portátil e leve para dispositivos de recursos limitados e conectados em
rede. É desenvolvido através do Java Community Proccess (JCP), que compreende mais de 500
membros, incluindo operadores e fornecedores de serviços móveis, fabricantes de telefones sem fio,
e vendedores do software móvel. CLDC foi projetado visando os seguintes objetivos:
•
Reduzir exigências de recursos necessários aos níveis apropriados para a distribuição de
mercado em massa;
•
Facilitar a portabilidade da aplicação abstraindo operações de sistema nativas em APIs
estandardizadas;
•
Estender a funcionalidade do dispositivo permitindo download dinâmico das aplicações.
CLDC é projetado trazer muitas vantagens da plataforma Java a dispositivos conectados em
rede que possuem poder de processamento, memória, e capacidade gráfica limitados, tal como
telefones celulares, pagers, organizadores pessoais de poucos recursos, e equipamentos máquina-àmáquina. Além disso, CLDC pode também ser distribuído em dispositivos domésticos, set-top
boxes de TV, e terminais de pontos de venda. Os dispositivos alvo têm tipicamente as seguintes
potencialidades:
•
Processador de 16-bit e 32-bit com uma velocidade de clock de 16MHz ou maior;
•
Pelo menos 160 KB de memória não-volátil alocados para as bibliotecas de CLDC e a
máquina virtual;
•
Pelo menos 192 KB de memória total disponível para a plataforma de Java;
•
Baixo consumo de energia, operando frequentemente sob uso de bateria
•
Conectividade a algum tipo de rede, frequentemente com uma conexão wireless,
intermitente e largura de faixa limitada.
A versão 1.0 de CLDC (JSR 30) é a primeira liberação da especificação de CLDC, que
fornece uma máquina virtual compacta e bibliotecas básicas para dispositivos de recursos limitados.
A versão 1.1 de CLDC (JSR 139) é uma revisão compatível com a especificação da CLDC 1.0, com
o mesmo alvo, de dispositivos pequenos com recursos limitados, e o mesmo objetivo chave, manter
restritos os recursos necessários. Suas muitas inclusões e melhorias abrangem o suporte a
matemática de ponto-flutuante e referências fracas.
4.3 MIDP 2.0
O Mobile Information Device Profile (MIDP) é um elemento chave da plataforma J2ME.
Quando combinado com a CLDC, MIDP fornece um ambiente de execução Java padrão para
dispositivos de informação móveis mais populares de hoje, tais como telefones celulares e PDAs. A
especificação do MIDP foi definida através do Java Community Proccess (JCP) por um grupo de
peritos de mais de 50 companhias, incluindo fabricantes de dispositivos dominantes, de portadores
wireless, e de vendedores de software móvel. Define uma plataforma para aplicações distribuídas
otimizadas dinamicamente e de forma segura, gráficas e conectadas em rede.
CLDC e MIDP fornecem a funcionalidade do núcleo da aplicação requerida por aplicações
móveis, na forma de um ambiente de execução Java estandardizado e um rico conjunto de APIs
Java. Os desenvolvedores que usam MIDP podem escrever aplicações uma vez, então distribuí-las
rapidamente para uma larga variedade dispositivos de informação móveis. MIDP foi adotado
extensamente como a plataforma preferida para aplicações móveis. É distribuído globalmente em
milhões dos telefones e PDAs, e é suportado pelos principais ambientes de desenvolvimento
integrado (IDEs). As companhias em torno do mundo têm se beneficiado do MIDP para escrever
uma larga escala de aplicações móveis para consumidores e empresas.
MIDP 1.0 (JSR 37) é a especificação original, que fornece a funcionalidade do núcleo da
aplicação requerida por aplicações móveis, incluindo a interface básica do usuário e segurança da
rede. MIDP 2.0 (JSR 118) é uma versão revisada da especificação de MIDP 1.0. As características
novas incluem uma interface do usuário melhorada, funcionalidades de jogos e multimídia,
conectividade mais extensa, provisionamento over-the-air (OTA), e segurança fim-a-fim. MIDP 2.0
é compatível com MIDP 1.0, e continua a alvejar dispositivos de informação móveis como
telefones móveis e PDAs.
4.4 HTTP
HTTP significa Hyper Text Transfer Protocol (Protocolo de Transferência de Hipertexto) e
é um protocolo da camada de "Aplicação" do modelo OSI, utilizado para transferência de dados na
World Wide Web. Esse é o protocolo da World Wide Web (www). O mesmo transfere dados de
hiper-mídia (imagens, sons e textos). Algumas de suas características são: geralmente este
protocolo, utiliza a porta 80 e é usado para a comunicação de "sites". Este comunica na linguagem
HTML (Hipertext Markup Language), contudo para haver comunicação, com o servidor do "site",
teremos de utilizar comandos próprios do mesmo, os quais não são em HTML.
4.5 XML
Extensible Markup Language (XML) é linguagem de marcação de dados (meta-markup
language) que provê um formato para descrever dados estruturados. Isso facilita declarações mais
precisas do conteúdo e resultados mais significativos de busca através de múltiplas plataformas. O
XML também vai permitir o surgimento de uma nova geração de aplicações de manipulação e
visualização de dados via internet.
Os arquivos XML são arquivos texto, mas não são tão destinados à leitura por um ser
humano como o HTML é. Os documentos XML são arquivos texto porque facilitam que os
programadores ou desenvolvedores "debuguem" mais facilmente as aplicações, de forma que um
simples editor de textos pode ser usado para corrigir um erro em um arquivo XML. Mas as regras
de formatação para documentos XML são muito mais rígidas do que para documentos HTML. Uma
tag esquecida ou um atributo sem aspas torna o documento inutilizável, enquanto que no HTML
isso é tolerado. As especificações oficiais do XML determinam que as aplicações não podem tentar
adivinhar o que está errado em um arquivo (no HTML isso acontece), mas sim devem parar de
interpretá-lo e reportar o erro.
O XML provê um padrão que pode codificar o conteúdo, as semânticas e as
esquematizações para uma grande variedade de aplicações desde simples até as mais complexas.
Uma característica importante é que uma vez tendo sido recebido o dado pelo cliente, tal
dado pode ser manipulado, editado e visualizado sem a necessidade de reacionar o servidor. Dessa
forma, os servidores tem menor sobrecarga, reduzindo a necessidade de computação e reduzindo
também a requisição de banda passante para as comunicações entre cliente e servidor.
O XML é considerado de grande importância na Internet e em grandes intranets porque
provê a capacidade de interoperação dos computadores por ter um padrão flexível e aberto e
independente de dispositivo. As aplicações podem ser construídas e atualizadas mais rapidamente e
também permitem múltiplas formas de visualização dos dados estruturados.
A mais importante característica do XML se resume em separar a interface com o usuário
(apresentação) dos dados estruturados. O HTML especifica como o documento deve ser
apresentado na tela por um navegador. Já o XML define o conteúdo do documento. Por exemplo,
em HTML são utilizadas tags para definir tamanho e cor de fonte, assim como formatação de
parágrafo. No XML você utiliza as tags para descrever os dados, como exemplo tags de assunto,
título, autor, conteúdo, referências, datas, etc...
O XML ainda conta com recursos tais como folhas de estilo definidas com Extensible Style
Language (XSL) e Cascading Style Sheets(CSS) para a apresentação de dados em um navegador. O
XML separa os dados da apresentação e processo, o que permite visualizar e processar o dado como
quiser, utilizando diferentes folhas de estilo e aplicações.
Exemplo de aplicação Web em três níveis, a qual é flexível e permite a troca de dados entre
mainframes e os clientes (desktops).
Essa separação dos dados da apresentação permite a integração dos dados de diversas fontes.
Informações de consumidores, compras, ordens de compra, resultados de busca, pagamentos,
catálogos, etc... podem ser convertidas para XML no middl- tier (espécie de servidor), permitindo
que os dados fossem trocados online tão facilmente como as páginas HTML mostram dados hoje
em dia. Dessa forma, os dados em XML podem ser distribuídos através da rede para os clientes que
desejarem.
4.6 RSS
RSS é um sub-conjunto de "dialectos" XML que servem para agregar conteúdo ou "Web
syndication" podendo ser acessado por programas ou sites agregadores. É usado principalmente em
sites de notícias ou blogs.
A abreviatura do RSS é usada para se referir aos seguintes padrões:
•
Rich Site Summary (RSS 0.91)
•
RDF Site Summary (RSS 0.9 e 1.0)
•
Really Simple Syndication (RSS 2.0)
RSS é um recurso desenvolvido em XML que permite aos responsáveis por sites e blogs
divulgarem notícias ou novidades destes. Para isso, o link e o resumo daquela notícia (ou a notícia
na íntegra) é armazenado em um arquivo de extensão .xml, .rss ou .rdf (é possível que existam
outras extensões). Esse arquivo é conhecido como feed.
O interessado em obter as notícias ou as novidades, deve incluir o link do feed do site que
deseja acompanhar em um programa leitor de RSS (também chamado de agregador). Esse software
(ou serviço, se for um site) tem a função de ler o conteúdo dos feeds que indexa e mostrá-lo em sua
interface.
O RSS é amplamente utilizado pela comunidade dos blogs para compartilhar as suas últimas
novidades ou textos completos e até mesmo arquivos multimídia. No ano 2000, o uso do RSS
difundiu-se para as maiores empresas de notícias como a Reuters, CNN e a BCC. Estas empresas
permitiam que outros websites incorporassem suas notícias e resumos através de vários acordos de
uso. O RSS é usado agora para muitos propósitos, incluindo marketing, bug-reports, e qualquer
outra atividade que envolva atualização ou publicação constante de conteúdos. Hoje em dia é
comum encontrar feeds RSS nos maiores web sites e também em alguns pequenos.
Um tipo de programa conhecido como "feed reader" ou agregador pode verificar páginas
habilitadas para RSS para os seus usuários e informar atualizações. Estas aplicações são tipicamente
construídas como programas independentes ou como extensões de navegadores ou programas de
correio eletrônico. Estes programas estão disponíveis para vários sistemas operacionais, inclusive
existindo versões para web destes programas.
Os leitores RSS para web não requerem nenhum software e trazem os feeds dos usuários para
qualquer computador com acesso web disponível. Alguns agregadores combinam feeds RSS entre
outros feeds. Por exemplo: agregando diversos itens relativos a futebol de diversos feeds de
esportes e criando então um novo feed de futebol.
Como funciona?
No arquivo RSS são incluídas informações como título, página (endereço exato de onde há
algo novo), descrição da alteração, data, autor, etc, de todas as últimas atualizações do site ao qual
ele está agregado. De poucos em poucos minutos o arquivo RSS é atualizado mostrando as
alterações recentes. O RSS é um formato padronizado mundialmente, que funciona sob a linguagem
XML (Extensible Markup Language), e é usado para compartilhar conteúdo Web. Ele permite, por
exemplo, que o administrador de um site de notícias crie um arquivo XML com as últimas notícias
publicadas, a fim de compartilhá-las mais rapidamente com seus leitores. Este arquivo poderá ser
lido através de qualquer ferramenta que seja capaz de entender o formato XML do RSS.
5. Descrição do funcionamento do sistema
Para a previsão do tempo, o sistema realiza consultas via http com o servidor rss tempo
agora: http://tempoagora.uol.com.br/rss.
O sistema não envia nenhum dado ao servidor as consulta da previsão do Brasil e dos
últimos informes. Apenas obtém as informações do servidor,
http://tempoagora.uol.com.br/rss/boletim/ para a primeira e
http://tempoagora.uol.com.br/rss/informes/ para a segunda.
O sistema realiza um parser sobre estas informações, filtrando informações desnecessários e
formatando-a para a exibição ao usuário.
Finalmente é exibido a previsão do tempo ao usuário.
Para a conversão de moedas, o sistema envia uma consulta também via http ao servidor
http://br.finance.yahoo.com/.
O sistema envia as moedas escolhidas pelo usuário para o webservice fazer a conversão. É
retornado um arquivo de tokens separados por “;”. O sistema realiza o parser sobre este arquivo,
filtrando as informações e formatando para a exibição ao usuário.
Caso ocorra qualquer tipo de exceção em qualquer solicitação, o sistema exibe uma tela de
alerta ao usuário com o motivo da exceção.
6. Exemplos de utilização e dificuldades encontradas
O sistema é bastante intuitivo. Na primeira tela, escolhe-se qual subsistema se deseja
trabalhar, conversor de moedas ou previsão do tempo.
No subsistema de previsão do tempo, este busca a previsão do tempo em 3 modos distintos:
•
Previsão do Brasil. São mostradas informações sobre as condições climáticas do
Brasil como um todo.
•
Previsão por cidades. Neste item, as informações climáticas têm um nível de
detalhamento maior, sendo focada na cidade desejada.
•
Últimos informes. São exibidas as últimas ocorrências climáticas ocorridas no Brasil,
como chuvas, ventos, etc.
No subsistema de conversão de moedas, é possível fazer a conversão entre as principais
moedas do mundo com a cotação real da bolsa de valores. Escolhe-se a conversão a ser feita e é
apresentado os dados desta conversão. Como, dia e hora da cotação.
O usuário pode encerrar a aplicação em qualquer parte do sistema.
Dentre todas as dificuldades encontradas no aprendizado desta nova tecnologia J2ME,
destaca-se a limitação de recursos. Diversas funcionalidades extremamente úteis não são
disponibilizadas como:
•
Parsers para leitura de XML. J2ME não contém nenhum tipo de parser para XML,
com isso gastou-se muito tempo a procura(e aprendizagem) de uma biblioteca para
este fim. Além de muitas libs não funcionarem em J2ME, por incompatibilidade, a
melhor lib encontrada, XParse-J não trata corretamente elementos do XML como
sessões CDATA. Diante deste problema, foi necessário implementar uma
funcionalidade para retirar estas sessões dos arquivos XML, visto que a classe String
não contém esta funcionalidade.
•
Funcionalidades para tratamento de Strings(pesquisa e manipulação de caracteres).
•
Pacote Exception extremamente pobre e restrito. Com isso, o tratamento de Exceções
não está profissional. A classe Exception o método getStackTrace, extremamente útil
para mostrar o usuário a origem do problema. Sendo assim, ao ocorrer uma exceção,
será exibido apenas uma mensagem resumida do ocorrido.
Muito tempo foi perdido contornando limitações da plataforma J2ME, desviando o grupo do
objetivo principal.
7. Conclusão
A utilização da informação em formato RSS está crescendo, aumentando as fontes de
consulta. Muitos sites fornecem as notícias neste formato para que possam ser utilizadas por outros
sistemas. Dessa forma, o sistema desenvolvido pode ser facilmente estendido a outros tipos de
notícias ou a notícias de outras fontes.
O desenvolvimento para a plataforma J2ME é mais trabalhoso devido às limitações de
recursos, por exemplo: ausência de classes normalmente utilizadas em J2SE (DocumentBuilder,
SAXParser, URL, Matcher, Pattern). Não havendo estas classes, a equipe de desenvolvimento foi
obrigada a redefinir funcionalidades já implementadas e disponibilizados em J2SE.
8. Bibliografia
http://www.infowester.com/rss.php
http://pt.wikipedia.org/wiki/RSS
http://www.gta.ufrj.br/grad/00_1/miguel/
http://pt.wikipedia.org/wiki/J2ME
http://www.mundooo.com.br/php/mooartigos.php?pa=showpage&pid=9
http://java.sun.com/products/cldc/overview.html
http://java.sun.com/products/midp/overview.html
Download