UNIVERSIDADE FEDERAL DE SANTA CATARINA – UFSC

Propaganda
UNIVERSIDADE FEDERAL DE SANTA CATARINA – UFSC
CENTRO TECNOLÓGICO – CTC
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA – INE
CURSO DE BACHARELADO EM SISTEMAS DE INFORMAÇÃO
DISCIPLINA: PROJETOS I
GRADUANDO: LUCAS DE SOUZA REIS GOMES
0023823-6
- RESUMO DE PROJETOS I (TRABALHO DE CONCLUSÃO DE CURSO)
“DESENVOLVIMENTO DE APLICAÇÕES PARA DISPOSITIVOS MÓVEIS UTILIZANDO A
PLATAFORMA J2ME”
–
Introdução
Conectividade, personalização e inteligência nos instrumentos de informação,
como apresentado nos dispositivos móveis, estão trazendo importantes benefícios em
nossos negócios e vida privada. Estes dispositivos tais como, telefones celulares, pagers,
screen phones1 , PDAs2 (Personal Digital Assistant) e sistemas de navegação de carros
possuem muitas características em comum, porém diferem em diversas formas e funções.
Estes dispositivos tendem a ser construídos para um propósito específico diferentemente
das máquinas de computação convencionais de propósito geral.
Diferentemente do que ocorria no passado, quando os dispositivos como telefones
celulares eram fabricados com um conjunto de funções prédeterminadas, por exemplo:
jogos, agenda, etc, que permaneciam imutáveis por toda a vida útil do aparelho. Podem
hoje, com avanço tecnológico desses dispositivos aliado a tecnologia J2ME, permitir aos
usuários customizar seus dispositivos, carregando novos serviços e aplicações da Internet
de acordo com suas necessidades.
–
Histórico das Comunicações Móveis
Um sistema de comunicação móvel tem como característica a possibilidade de
movimento relativo entre as partes como, por exemplo, a comunicação entre o telefone
celular e a estação base na telefonia celular. Sistemas móveis usam a tecnologia sem fio
para possibilitar uma comunicação transparente enquanto o usuário se desloca. A seguir, é
apresentado um breve histórico das comunicações móveis.
A era da telefonia celular teve seu início efetivo no início dos anos 90, quando o
usuário podia portar o aparelho embora suas dimensões iniciais fossem grandes.
O espectro de freqüências, que constitui o meio de transmissão das redes móveis
sem fio, precisa ser compartilhado entre os vários usuários do sistema. É sob este espectro
que as técnicas de acesso múltiplo ao meio operam, garantindo um acesso compartilhado e
com equidade para todos os terminais móveis [4]. As principais técnicas responsáveis pela
divisão dos recursos de freqüência em vários canais não interferentes possibilitando o
acesso múltiplo dos usuários são FDMA1 (Frequency Division Multiple Access), TDMA2
(Time Division Multiple Access) e CDMA3 (Code Division Multiple Access).
Vários padrões para a telefonia celular foram adotados em diferentes países e
ficaram conhecidos como sistemas de 1ª Geração (1G), entre eles podem-se citar: o AMPS
(Advanced Mobile Telephone System) nos Estados Unidos, o TACS (Total Access
Communications Systems) no Reino Unido, o JTACS (Japan Total Access
Communications Systems) no Japão e o NMT (Nordic Mobile Telephones system) nos
países do norte europeu (Dinamarca, Finlândia, Suécia e Noruega). Os sistemas de 1G
utilizam a transmissão de dados no modo analógico e a técnica de acesso ao meio utilizada
é a FDMA. Os principais problemas com esses sistemas eram a baixa qualidade e
capacidade dos canais de comunicação e a incompatibilidade entre os diversos sistemas
existentes.
Depois da primeira geração de sistemas móveis veio a 2a Geração (2G) numa
tentativa de ampliar a capacidade dos sistemas existentes. O sistema
AMPS(Advanced/American Mobile Phone System) evoluiu para o DAMPS( Digital
Advanced Mobile Phone System) que utilizava TDMA, também conhecido por IS-54
(Interim Standard 54). Como uma alternativa ao IS-54 surgiu nos Estados Unidos o IS-95
(Interim Standard 95), ainda na primeira metade da década de 90 e utilizava o CDMA,
aumentando a capacidade em relação aos sistemas existentes. O IS-54 foi sucedido pelo IS136 (Interim Standard 136). Portanto, em meados da década de 90 dois sistemas móveis
digitais competiam nas Américas na faixa de 800 Mhz.
Na Europa surgiu o GSM (Global System for Mobile Communications), no início
da década de 90, alcançando um maior número de assinantes, devido abranger uma maior
área de cobertura dentre os padrões de segunda geração. Utiliza acesso FDMA/TDMA.
Uma grande inovação do sistema GSM é o módulo de identificação do usuário, o SIM
(Subscriber Identification Module) que contém a identificação completa do usuário, chaves
de código de privacidade e outras informações específicas sobre o usuário. O SIM se
apresenta sob a forma de um cartão de crédito ou de um plug-in1 que é conectado ao
terminal GSM. Estes cartões podem ser removidos de um telefone GSM e usados em um
outro, permitindo que o usuário utilize qualquer telefone GSM. Sem o SIM, o terminal
torna-se inoperante.
Esse sistema padronizou as comunicações celulares na Europa, permitindo ao
usuário utilizar seu telefone em qualquer país europeu. Ainda pode-se destacar como
sistema 2G o PDC (Personal Digital Cellular) desenvolvido no Japão. Com a 2ª geração de
celulares foram introduzidos novos serviços de comunicação de voz, com maior qualidade
e capacidade de transmissão, possibilitando atender um maior número de usuários e,
também, foram criados serviços de transmissão de dados como o Serviço de Mensagens
Curtas (Short
Messages Service SMS) para transmissão de pequenos pacotes de
dados. O SMS permite que o usuário envie e receba mensagens de texto de até 160 bytes.
Ainda no início da década de 90 surgiu a idéia da 3a Geração (3G) dos sistemas
celulares, como uma proposta para a padronização global das comunicações móveis, com a
disponibilização de altas taxas de transmissão de dados possibilitando o suporte a
aplicações multimídia e acesso à Internet. O IMT-2000 (International Mobile
Telecommunications 2000) é a especificação para os sistemas 3G que está sendo
desenvolvida pela ITU1 (International Telecommunication Union). Esses sistemas, que já
se encontram em uso no Japão, disponibilizam serviços de voz, dados, e aplicações
multimídia sobre as redes sem fio. A idéia é que o IMT-2000 especifique uma família de
padrões que disponibilize pelo menos taxas de 2 Mbps (Mega bits por segundo) em
ambientes indoor2, 384 Kbps em ambientes de baixa mobilidade, 144 kbps (Kilo bits por
segundo) em ambientes veiculares (outdoor3 ).
A possibilidade de acesso à informação e serviços a qualquer hora e em qualquer
lugar poderá moldar uma nova sociedade de informação com os usuários acessando a
informação na Internet através de diversos dispositivos móveis, tais como telefones
celulares, PDAs (Assistentes Pessoais Digitais) e Laptops.
–
Aplicações móveis
Aplicações móveis apresentam várias características que agregam funcionalidade
aos seus usuários. A primeira delas é a mobilidade, a capacidade de manter voz constante e
comunicação de dados enquanto em movimento. Em segundo lugar está o imediatismo,
que permite aos usuários obter conectividade quando necessário, sem considerar a
localização e sem uma longa sessão de login1. Finalmente, localização permite aos
usuários obterem informações relevantes para suas localizações atuais. A combinação
dessas características fornece uma grande faixa de possíveis aplicações que podem ser
oferecidas aos usuários móveis. Essas aplicações podem ficar disponíveis em uma rede do
provedor de serviço ou na Internet pública. As aplicações móveis são de várias categorias e
incluem:
· Comunicações - e-mail, fax, mensagem unificada e acesso à intranet/Internet;
· Serviço de valor agregado(VAS
Value added services) - serviços de
informação e jogos; · M-commerce - venda a varejo, compra de bilhetes, serviços
bancários e comércio financeiro;
·Aplicação baseada em localização - Navegação, condições de tráfego de
veículos, localização de pessoas e hospitais, etc;
· Aplicações verticais - gerenciamento de frota, alocação de recursos, etc;
· Publicidade.
- O que é J2ME?
Java 2 Micro Edition (J2ME) é a edição da linguagem Java para ser usada em dispositivos
de computação portáteis e móveis, que possuem as seguintes características: mobilidade, baixa
capacidade de processamento e pouca memória disponível, alimentação elétrica por baterias,
pequenas áreas de display, e limitados e variados métodos de entrada e saída. Alguns exemplos
destes dispositivos seriam os telefones celulares, pagers, PDAs(Assistentes Digitais Pessoais),
Palms, entre outros.
J2ME não define um novo tipo de Java, mas adapta sua plataforma para que seja possível
executar programas em dispositivos, como os citados anteriormente. Sendo assim, todo programa
desenvolvido para J2ME poderá ser executado sem nenhum problema nas edições Standard (J2SE)
e Enterprise (J2EE), assumindo que as APIs usadas estejam presentes para estas plataformas.
- O que J2ME oferece?
Essencialmente, a plataforma J2ME busca criar um conjunto de conceitos para
homogeneizar o desenvolvimento em pequenos dispositivos, transparecendo ao desenvolvedor todos
os detalhes proprietários do fabricante como arquitetura de hardware e sistema operacional do
dispositivo sobre o qual esteja trabalhando.
Através de J2ME, torna-se possível desenvolver, atualizar e instalar novas aplicações
segundo as necessidades particulares de cada usuário. Além disso, é possível depois de feito o
download da aplicação para o dispositivo, trabalhar conectado à rede (on-line) ou desconectado da
rede (off-line), no caso de se estar desconectado da rede, quando a rede estiver disponível pode-se
fazer a sincronização1 dos dados e das informações utilizadas anteriormente. As aplicações para a
plataforma J2ME vão desde jogos, aplicações que acessam banco de dados, etc.
- Os Conceitos de Configurações e Perfis
Existe uma diversidade de dispositivos, no qual estes apresentam muitos pontos em
comum, mas diferenciam-se em suas formas, funcionalidade e características. Existem também
dispositivos com uma grande variedade de capacidade de processamento, memória e interação com
o mundo exterior (interface com o usuário, métodos de entrada e saída de informações e dados).
Afirmar que uma tecnologia serve para todos os dispositivos da mesma família , tal como nas
outras edições de Java, não funciona nos dispositivos de recursos limitados devido a todas essas
diferenças.
Para suportar esse tipo de diversificação dos dispositivos, dois conceitos essenciais foram
definidos pela edição J2ME que são: Configurações e Perfis.
- Configurações:
Uma configuração define uma plataforma mínima para um grupo de dispositivos com
características similares, tanto na memória quanto no poder de processamento. Sendo assim, uma
configuração define as características suportadas tanto pela própria linguagem de programação Java,
pela máquina virtual e suas bibliotecas de classes e APIs, as quais um determinado fabricante pode
esperar que estarão disponíveis em todos os dispositivos de uma mesma categoria. Atualmente
existem duas configurações definidas e validadas pela Sun:
· Configuração para dispositivos conectados (CDC). A CDC é designada para dispositivos
fixos um pouco maiores, com pelo menos dois megabytes de memória disponível, conectividade
com redes, possibilitando estabilidade e grande largura de banda. Usa a máquina virtual Compact
Virtual Machine (CVM) que é uma máquina virtual completa e projetada para os dispositivos que
necessitam de toda a funcionalidade presente na edição J2SE (JVM), apresentando porém bem
menos requisitos de memória, tendo assim suporte para implementação completa de sua
especificação. Alguns exemplos desses dispositivos são: televisão com Internet, sistema de
navegação de carros, entre outros.
· Configuração para dispositivos com limites de conexão (CLDC). A CLDC é designada
para dispositivos móveis, pequenos e com grande restrição de recursos, conectividade a algum tipo
de rede, em geral sem-fio. Conexão intermitente e banda limitada. Usa uma máquina virtual
reduzida em relação à máquina virtual clássica, que é a KVM (Kilo Virtual Machine). A KVM será
apresentada mais adiante. telefones celulares, pagers e PDAs são alguns dos dispositivos
pertencentes a CLDC.
- Perfil:
Um perfil define uma plataforma Java para um segmento vertical específico do mercado,
ou seja, para uma categoria de dispositivos. O perfil é a camada mais visível para usuários e
desenvolvedores de aplicações. Define o conjunto mínimo de interfaces de programa da aplicação
(APIs) disponível em uma classe particular dos dispositivos representando um segmento de mercado
vertical particular. Os perfis são implementados para uma configuração particular (CLDC ou
CDC). As aplicações são escritas para um perfil específico sendo, deste modo, portáteis para
qualquer dispositivo que suporte aquele perfil. Um dispositivo pode sustentar múltiplos perfis.
Existem vários perfis como, por exemplo, o Perfil Fundamental (Foundation Profile), complementa
a configuração CDC e o Perfil do Dispositivo de Informação Móvel (MIDP), para dispositivos de
informação móveis que complementa a configuração CLDC.
- As Máquinas Virtuais J2ME:
Uma Máquina Virtual Java é o fundamento para a Tecnologia Java, permitindo que
aplicações escritas na linguagem de programação Java sejam portáveis através de ambientes de
hardware e sistemas operacionais diferentes. A máquina virtual faz a ponte entre a aplicação e a
plataforma utilizada, convertendo o bytecode da aplicação em código de máquina apropriado para o
hardware e sistema operacional utilizados. Além de gerenciar a execução dos bytecodes da
aplicação, a máquina virtual lida com tarefas relacionadas à administração da memória do sistema,
provendo segurança contra código malicioso e administrando as threads dos programas.
A máquina virtual Java usada na versão standard (padrão) e na versão enterprise
(corporativa) foi desenvolvida para ser utilizada em sistemas desktop e servidores respectivamente.
Em J2ME deve-se utilizar uma máquina virtual Java que seja apropriada para os dispositivos como
telefones celulares, pagers e PDAs que possuem tamanho de memória reduzido e outra para
dispositivos com um poder um pouco maior de memória tais como: set-top boxes, sistemas de
navegação de carros, pcs handhelds e outros.
Em virtude disso, duas máquinas virtuais foram projetadas. Uma para ser utilizada na
configuração CLDC, Kilo Virtual Machine (KVM), e outra para a configuração CDC, a Compact
Virtual Machine (CVM).
- A máquina virtual K (KVM)
A KVM ou Kilo Virtual Machine é a mais nova e otimizada máquina virtual Java para
dispositivos com limites de restrições. Possuindo cerca de 40 a 80K de memória, tornou-se bastante
apropriada para dispositivos como pagers, telefones celulares e PDAs.
A KVM pode executar em qualquer sistema que possua um processador de 16 ou 32 bits e
um total de memória de 160 a 512K. Além disso, não suporta tipos de dados longos e de ponto
flutuante. Seu projeto foi baseado em algumas importantes considerações, incluindo o tamanho
reduzido para conservar um melhor espaço em memória quanto possível (tanto em termos de
armazenamento quanto execução) e a capacidade de rodar em processadores de pequeno poder
computacional.
A KVM é implementada na linguagem C, por isso pode ser portável para outras
plataformas que contenham um compilador C.
- A máquina virtual C (CVM)
A máquina virtual C foi desenvolvida para adicionar maior funcionalidade aos dispositivos
da segunda categoria dos quais a KVM não suporta. Praticamente esta máquina virtual engloba
quase todas as características de uma máquina virtual Java convencional, só que de forma mais
otimizada.
Os conceitos de Perfil, Configurações e Máquinas Virtuais formam as camadas da
Arquitetura J2ME.
- O Modelo MIDP
O Perfil do Dispositivo de Informações Móveis (MIDP) é o primeiro perfil disponível para
a plataforma J2ME. A combinação do CLDC e do MIDP fornece um ambiente completo de
desenvolvimento para a criação de aplicações em celulares e pagers. Aplicações que executam em
dispositivos que suportam MIDP são denominados MIDlets. O MIDP foi feito para executar em
cima da camada de configuração CLDC.
- Técnicas para otimizar a performance em aplicações J2ME
Aplicações utilizadas em dispositivos móveis devem ser de rápida execução, pois quanto
menor o tempo de execução, menos tempo de uso da bateria, acarretando uma maior satisfação para
o usuário. Nesta seção são apresentadas algumas técnicas de programação para aumentar a
performance de aplicações J2ME.
· Sempre que possível utilizar variáveis locais ao invés de variáveis de classes, assim o
acesso aos atributos de objeto é mais rápido com o uso das variáveis locais;
· Tentar diminuir as chamadas de métodos, pois quando um método é chamado, a máquina
virtual java aloca um novo nodo da pilha de execução, isso faz com que a memória seja
sobrecarregada;
· Minimizar a criação de objetos, pois quando um objeto é criado, na maioria das vezes ele
será destruído, isso leva à uma diminuição da performance da aplicação. Para evitar a criação de
muitos objetos devese utilizar objetos que possam ser reciclados ou mantidos na memória o
máximo de tempo possível;
· Tentar não concatenar strings, a concatenação com o operador + leva a criação de um
novo objeto e por conseqüência utiliza mais a memória e o processamento;
· Evitar a sincronização, se um método demora algumas frações de segundos para executar,
deve-se colocar a sua chamada em uma thread em separado.
Download