Introdução ao Java Micro Edition

 

Introdução

O mercado de dispositivos móveis (celulares, palms, PDAs) vem crescendo de maneira assustadora nos últimos anos chamando assim a atenção de grandes empresas, como Nokia, Motorola, Qualcomm, Samsung, LG, dentre outras.

 

No atual cenário mundial, o Brasil ocupa a 5ª posição entre os países com mais celulares no mundo (89 milhões de unidades), ficando atrás apenas de China, Estados Unidos, Rússia e Japão.

 

Para se ter uma idéia de quanto está sendo importante essa revolução, os japoneses utilizam um serviço de nome “Edy” que faz, praticamente, o celular virar uma carteira, ou seja, compras de supermercado, aluguel de vídeos, reservas no teatro e o pagamento da bebida no fim do dia, podem ser feitos com o celular.

 

JME - Java Micro Edition
A Sun possui três edições de Java. São elas:

  • Standard Edition (JSE): projetada para execução em máquinas simples de computadores pessoais e estações de trabalho;
  • Enterprise Edition (JEE): com suporte interno para servlets, JSP e XML, essa edição é destinada a aplicativos baseados no servidor;
  • Micro Edition (JME): projetada para dispositivos com memória, vídeo e poder de processamento limitados. 

Em dezembro de 1998, a Sun apresentou o nome “Java 2” (J2) para coincidir com o lançamento do Java 1.2. Essa nova convenção de atribuição de nomes se aplica a todas as edições de Java, conforme descritas acima.

 

JME é destinado diretamente a dispositivos com poder de processamento limitado, como: celulares, pagers, entre outros. A grande maioria destes dispositivos não tinha opções de download de novos aplicativos, ou seja, eram de natureza estática.

 

Com a introdução do J2ME, passou a existir a possibilidade de se instalar aplicativos Java através de download, navegar na web, desenvolvimento de jogos para dispositivos limitados, dentre muitas outras possibilidades antes inexistentes.

 

O JME é uma versão reduzida do JSE, tendo algumas limitações, pois visa dispositivos de poder de processamento e memória inferiores aos do JSE.

 

Configurações

Para haver um amplo suporte aos dispositivos que a J2ME engloba, a Sun criou a “Configuração”.

 

A Configuração define os recursos da linguagem Java e as bibliotecas Java básicas da Máquina Virtual para uma configuração em particular. A configuração é baseada na memória, no vídeo, na conectividade de rede (ou limitações disto) e no poder de processamento do dispositivo.

 

O JME possui duas principais configurações: CDC e CLDC.

 

Configuração de Dispositivo Conectado – Connected Device Configuration (CDC)

A CDC refere-se aos dispositivos que possuem no mínimo:

  • 512 kilobytes de memória para executar o Java;
  • 256 kilobytes de memória para alocação de memória em tempo de execução;
  • Conectividade de rede, normalmente dispositivos sem fio com largura de banda baixa e acesso intermitente.

Configuração de Dispositivo Conectado Limitado – Connected Limited Device Configuration (CLDC)

A CLDC refere-se aos dispositivos que possuem:

  • 128 kilobytes de memória para executar o Java;
  • 32 kilobytes para alocação de memória em tempo de execução;
  • Interface restrita com o usuário;
  • Baixo poder, normalmente, alimentado por bateria;
  • Conectividade de rede, normalmente, dispositivos sem fio com largura de banda baixa e acesso intermitente.

Apesar desta divisão parecer bastante clara, as tecnologias estão sempre em constante aprimoramento e sendo usadas por diversas empresas, com variados modelos de dispositivos, cada vez mais “possantes” e incrementados. Com isso tornou-se necessário a criação dos chamados “perfis”.

 

Perfis

O perfil funciona como uma extensão da configuração, fornecendo as bibliotecas para um desenvolvedor escrever aplicativos para um determinado tipo de dispositivo. Temos como grande exemplo de perfil o MIDP (Mobile Information Device Profile – Perfil de Dispositivo de Informação Móvel).

 

O MIDP define APIs para componentes, entrada e tratamento de eventos de interface com o usuário, armazenamento persistente, interligação em rede e cronômetros, levando em conta as limitações da tela e memória dos dispositivos.

 

MIDP – Mobile Information Device Profile

Atualmente o MIDP se encontra na versão 2.0, tendo as seguintes exigências de hardware:

  • A tela deve suportar, no mínimo, 96 X 54 pixels;
  • Deve haver, pelo menos, uma entrada de usuário disponível: teclado de mão (igual ao de telefone), teclado de duas mãos (QWERTY – padrão de computadores em que as teclas na primeira linha formam, justamente, a palavra QWERTY) ou uma tela de toque;
  • 128 kilobytes de memória não-volátil (ROM) para executar os componentes MID (Mobile Information Device, Dispositivo de Informação Móvel);
  • Pelo menos 8 kilobytes de memória não-volátil (ROM) para os aplicativos armazenarem dados persistentes, como configurações e dados do aplicativo;
  • 32 kilobytes de memória volátil (RAM) para executar o Java;
  • Conectividade de rede sem fio.

Os aplicativos desenvolvidos na edição J2SE, funcionarão na edição J2ME, claro que com restrições devido à configuração do aparelho. O contrário também é válido, ou seja, os aplicativos desenvolvidos na edição J2ME também têm compatibilidade com a edição J2SE.

 

É importante salientar também que, tanto as Configurações quanto os Perfis são definidos por grupos de trabalho do setor de código-fonte aberto utilizando o Java Community Process Program da Sun. Desta maneira, as empresas podem decidir quais elementos são necessários para fornecer uma solução completa, destinada ao seu respectivo setor.

 

Máquina Virtual do JME – KVM

A JVM (Java Virtual Machine, Máquina Virtual Java) está por trás de todo aplicativo Java. Ela é responsável por transformar os arquivos de classe (mais precisamente, o código de byte nos arquivos de classe) no código de máquina para a plataforma que está executando a JVM.

 

A JVM é também conhecida como sandbox (caixa de areia), pois todo o aplicativo é executado em cima dela.

 

A respeito da CDC, a JVM tem a mesma especificação do J2SE, porém na configuração CLDC, a Sun desenvolveu o que é chamado de implementação de referência de uma máquina virtual, conhecida como KVM (Kilobyte Virtual Machine). Ela foi desenvolvida em C para facilitar a sua portabilidade e para atender as necessidades especiais dos dispositivos de recurso restrito, sendo assim bem mais enxuta que a JVM.

 

A KVM foi projetada para ser a menor e a mais eficiente possível, permanecendo ainda rápida para as necessidades da linguagem Java. Com a memória sendo normalmente um recurso precioso em dispositivos pequenos de processamento limitado, a base de tempo de execução é de, aproximadamente, apenas 60 kilobytes. A origem da letra “K” no nome se deve ao fato da KVM ser executada em apenas algumas dezenas de kilobytes de memória.

 

Logo abaixo podemos ver um exemplo da arquitetura do JME em um dispositivo.

 

introjmefig01.JPG

Arquitetura do perfil MID


Conclusão

Neste primeiro artigo, tratamos resumidamente sobre a composição do J2ME, mostrando as peculiaridades de sua arquitetura e suas principais características.

 

Espero ter deixado claro o funcionamento de toda estrutura, porém para quem quiser estudar um pouco mais os conceitos acima, aconselho o próprio site da Sun, podendo ser encontrado lá as especificações sobre os tópicos aqui citados.

 

Sun – J2ME: http://java.sun.com/javame/index.jsp

 

Um grande abraço e até a próxima.