wpjr2’s Weblog

Artigos e tutoriais úteis

Archive for 24 de abril de 2008

Apresentação: Desenvolvimento de Aplicações Móveis em JavaME

Posted by wpjr2 em abril 24, 2008

Segue abaixo uma apresentação que fiz na Inforuso Infocom 2007 em Outubro do ano passado:

Anúncios

Posted in Uncategorized | Leave a Comment »

Eclipse: Gerando bibliotecas JAR a partir de um projeto

Posted by wpjr2 em abril 24, 2008

A partir de um projeto no Eclipse, uma biblioteca JAR pode ser gerada para que esta possa ser utilizada em outros projetos. Para criar uma biblioteca JAR, os seguintes passos são necessários:

1) Selecionar o projeto no package explorer do Eclipse, clicar em EXPORT, selecionar a pasta JAVA, selecionar JAR FILE, clicar em NEXT

2) Selecionar os recursos dentro do projeto a ser disponibilizado via JAR, incluindo pastas, imagens, arquivos de configuração (XML).

a) Normalmente, não é comum disponibilizar o código fonte dentro de uma biblioteca JAR. Para isto, é necessário desmarcar a opção “Export java source files and resources”.

b) O arquivo destino da biblioteca JAR deve ser defina neste passo.

3 Clicar em Next e em Next de novo

a) O arquivo manifesto pode ser adicionado no JAR neste ponto, onde este pode ser gerado pelo Eclipse ou acrescentado ao arquivo JAR caso ele ainda não exista.

b) Caso o manifest não exista, a classe principal da aplicação (contém o método MAIN) pode ser selecionada logo abaixo, para que esta possa ser incluída no manifesto.

4) Clicar em FINISH.

A biblioteca será gerada no destino definido no passo 2b.

Posted in Curso de Programação Java, Eclipse | Etiquetado: , , | Leave a Comment »

Arquiteturas e Plataformas para Terminais Móveis

Posted by wpjr2 em abril 24, 2008

Introdução

Este capítulo apresentará o conceito de plataformas e arquiteturas existentes para terminais móveis, com o enfoque sobre a plataforma JavaME criada pela Sun Microsystems. Apesar de já existirem diversas plataformas para terminais móveis no mercado atualmente, por motivos de ênfase neste trabalho, somente a plataforma JavaME será abordada em detalhe. Esta plataforma provê a infra-estrutura no desenvolvimento de aplicativos móveis para terminais. Ela será esta utilizada também na demonstração dos padrões de desenho e da componentização de software descritos nesta monografia nos capítulos 5 e 6.

Definição

Uma plataforma é caracterizada como a tecnologia básica de um sistema computacional composto de hardware e software. Ela define a forma como o dispositivo é controlado e determina quais outros tipos de software a serem utilizados. A arquitetura é responsável por definir o desenho ou estrutura global de um sistema computacional, incluindo o hardware e software, ambos necessários para executar tal sistema, incluindo especialmente a estrutura interna do microprocessador. O framework é caracterizado como uma estrutura de suporte definida (software) onde outros componentes de software podem ser organizados e desenvolvidos. Todos os itens acima são aplicáveis para terminais móveis, sendo estes dispositivos portáteis, freqüentemente equipados com um teclado simples e uma tela por onde dados ou informações podem ser inseridos ou visualizados, conforme descrito nas características de terminais móveis no capítulo 2 desta monografia.

Sistemas Operacionais vs. Plataformas

Devido à diversidade de plataforma e sistemas operacionais para terminais, a distinção entre estes se torna bastante confusa. Em geral, uma plataforma descreve um tipo de framework (hardware ou software) que permite que aplicativos sejam executados. Em algumas situações, a plataforma pode incluir a arquitetura de hardware do dispositivo, o sistema operacional e linguagens de programação. Algumas plataformas populares incluem (serão mais bem detalhadas neste capítulo) o JavaME e o BREW.

O termo “plataforma” também é utilizado para frameworks específicos que incluem também o sistema operacional, tais como o Nokia Série 60, Palm OS, Symbian OS e Windows Mobile. O sistema operacional em geral é responsável por gerenciar o hardware e o software, em alguns casos incluindo o framework para aplicativos. Por exemplo, tanto o Symbian OS quanto o Nokia Série 60 possuem suporte a plataforma Java [3]. Neste caso, em cada sistema operacional, uma implementação específica da plataforma Java é provida (interface entre as bibliotecas proprietárias e aplicativos em Java), mediante a garantia de que os serviços providos em cada implementação sejam os mesmos ou razoavelmente similares entre eles e com relação ao padrão definido pela Sun Microsystems. Porém estes sistemas operacionais possuem uma forte dependência com o hardware do dispositivo móvel. Podemos citar, por exemplo, o Nokia Série 60, que pode ser utilizado somente em dispositivos deste fabricante. Esta é uma característica, porém que não deve existir na prática sobre a plataforma Java. Conforme será apresentado neste capítulo, um dos principais objetivos da plataforma Java para terminais móveis é prover a interoperabilidade de aplicativos, tornando-os independentes do hardware e do sistema operacional do dispositivo. Para isto, é necessário que o dispositivo suporte esta plataforma em sua arquitetura.

Na Figura 6, uma visualização (1) diferenciando a plataforma do dispositivo da plataforma de software e (2) uma visualização da interoperabilidade de aplicativos sobre a plataforma Java em sistemas operacionais diferentes é apresentada. No caso da primeira, podemos citar alguns exemplos já apresentados como a Nokia Série 60, Symbian OS (SO + plataforma), Qualcomm e o Linux. Todas estas plataformas de dispositivos, no entanto, possuem plataformas de software tanto para aplicativos Java quanto para aplicativos nativos, tais como (a) o BREW (“Binary Runtime Environment for Wireless“) da Qualcomm, (b) o C/C++ para o Symbian OS e (c) o Nokia Série 60. Para cada tipo de software, existe uma plataforma específica, com características específicas relativas ao acesso ao sistema operacional. Apesar da dependência da plataforma Java sobre a nativa, a primeira sempre proverá os mesmos serviços e bibliotecas entre todas as plataformas, graças ao esforço de padronização dos fabricantes e desenvolvedores de plataformas quanto à tecnologia Java.

A interoperabilidade se torna também um ponto importante nesta situação. Na Figura 6, os mesmos componentes ou aplicativos (em Java e nativo/C) na plataforma nativa X em (1) estão sendo portados para a plataforma Y em (2). Devido ao fato das plataformas nativas X e Y não serem compatíveis, a portabilidade dos aplicativos nativos é prejudicada, requerendo um esforço de adaptação na tarefa de integração. No caso dos aplicativos Java, a presença de uma plataforma Java em (2) compatível com a plataforma em (1) possibilitou uma integração mais transparente e com o mínimo de esforço.

Um dos grandes desafios no desenvolvimento de sistemas para terminais móveis é a uma melhor ênfase nas plataformas do que nos sistemas operacionais. Isto ocorre devido ao fato das plataformas em geral possuírem uma interdependência forte com o sistema operacional, mesmo que isto não seja altamente necessário. Sem esta interdependência, plataformas em geral podem oferecer uma maior interoperabilidade e portabilidade (se os SOs podem prover estes de fato) para os aplicativos e sistemas.

Plataformas de Software para Terminais Móveis

Qual seria a definição de uma plataforma perfeita? Em [12], o autor define uma plataforma perfeita como “um sistema de software programável por desenvolvedores iniciantes e avançados, possibilita a criação de aplicativos simples e complexos, está disponível em todas as plataformas de hardware, sistemas operacionais, e em tempo de execução comporta ou opera como o framework nativo ou bem próximo dele.” Alem disto, quaisquer candidatos à perfeição [2] devem possuir os seguintes requisitos: facilidade de implementação, níveis de acesso múltiplo, estabilidade, fácil empacotamento e disponibilização (“deploy“), escalabilidade, desempenho razoável, focado no mercado e ser baseado em padrões abertos, senão alguns.

Algumas plataformas populares no mercado de terminais móveis:

  • BREW: (Binary Runtime Environment for Wireless), plataforma de desenvolvimento de aplicativos em C/C++ [14] criada pela Qualcomm para telefones celulares. Esta plataforma é independente da interface de rádio, com suporte a tecnologias de rádio como GSM/GPRS/UMTS e CDMA, apesar dela ter sido inicialmente desenvolvida somente para terminais CDMA. Em geral, a plataforma BREW é composta de um sistema (intermediário entre o sistema operacional e os aplicativos) que possibilita o “download” e execução de aplicativos pequenos (jogos, gerenciadores de mensagens e fotos). Uma de suas grandes vantagens é o fato das aplicações serem altamente portáveis para todos os dispositivos que possuam o chipset da Qualcomm (conjunto de circuitos integrados).
  • APOXI: framework de aplicativos orientado a objetos [13] baseado em C++ para o desenvolvimento de aplicativos e interfaces homem-máquina para terminais móveis. Uma de suas significantes características envolve o rápido desenvolvimento de aplicativos e interfaces sobre a mesma.
  • JavaME: plataforma desenvolvida pela Sun Microsystems com suporte a linguagem Java para dispositivos móveis. Esta plataforma será melhor detalhada na próxima seção deste capítulo.

Artigo Extraído da monografia de dissertação entitulada “Componentização de Software e Padrões de Projeto para Terminais Móveis” do curso de pós-graduação em Sistemas Móveis e Convergentes em Telefonia Celular pela Universidade Estadual do Amazonas (2006).

Posted in JavaME | Etiquetado: , , | Leave a Comment »