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