J2ME

Desde o início, com o lançamento do Java Development Kit (JDK), Java evoluiu bastante. A pedidos de desenvolvedores, interfaces e bibliotecas foram incluídas. Novas funcionalidades foram reunidas e uma nova plataforma, chamada J2SE (Java 2 Platform, Standard Edition), foi lançada. Com a crescente demanda pela programação de software do lado do servidor (server-side programming), surgiu J2EE (Java 2 Platform, Enterprise Edition), conjunto de classes que provê as funcionalidades de J2SE e adiciona outras.

Novas perspectivas surgiram com a evolução de dispositivos pequenos, de baixo processamento, como celulares e PDAs. Esse fato indicaria que a próxima evolução viria em breve: J2ME (Java 2 Platform, Micro Edition). Porém, em vez de expandir o conjunto de recursos dos demais toolkits, J2ME reune apenas um pequeno conjunto de funcionalidades, devido a limitações de memória e processamento.

Arquitetura

A arquitetura J2ME é composta pelos seguintes componentes:

  • Configurações
  • Perfis
  • Pacotes opcionais

Tais componentes podem ser escolhidos e combinados para contruir um ambiente completo e atender aos requisitos de uma variedade de dispositivos disponíveis no mercado. Cada combinação é otimizada para os requisitivos de memória, poder de processamento e funcionalidades de I/O.





Configuração

Inclui uma máquina virtual, uma interface para as funcionalidades nativas do dispositivo e uma biblioteca de classes bem limitada. Provê apenas funcionalidades básicas para um determinado conjunto de dispositivos que possuem características similares, como conectividade via rede. Atualmente, há dois de configuração:

  • Connected Limited Device Configuration (CLDC). Desenvolvida para dispositivos pequenos com quantidades limitadas de memória: pagers, PDAs (Personal Digital Assistant) mais limitados e telefones celulares. A quantidade de memória disponível para esses dispositivos está em torno de 160 KB e 512 KB. A máquina virtual é a KVM (KJava Virtual Machine), uma versão mais enxuta da tradicional Máquina Virtual Java (JVM).

  • Connected Device Configuration (CDC). Para dispositivos com maior capacidade de memória (pelo menos 2 MB) e processamento. Implementa a CVM, uma máquina virtual com todos os recursos oferecidos pela JVM

Perfil

Conjunto de classes que implementam características de um dispositivo particular ou de uma classe de dispositivos, adicionando funcionalides não abrangidas pela configuração. Juntamente com a configuração, provê um ambiente completo para a execução de aplicações em um determinado dispositivo. Como a tecnologia para o desenvolvimento de dispositivos nesse segmento evolui constantemente, novos perfis são definidos. Atualmente, existem sete perfis, seis para CDC e um para CLDC:

  • Foundation Profile
  • Game Profile
  • PDA Profile
  • Personal Profile
  • Personal Basis Profile
  • RMI Profile
  • Mobile Information Device Profile (MIDP). Único perfil usado com CLDC. Contém classes para armazenamento local de dados, interface ao usuário e conectividade (HTTP e sockets). Existem duas versões desse perfil: 1.0 e 2.0. Além dos recursos da versão 1.0, a versão mais recente oferece: outras opções de conectividade (HTTPS e interface serial) e suporte a áudio e vídeo, classes para o desenvolvimento de jogos, maior variedade de classes para interface ao usuário e outros recursos.

Pacotes opcionais

Conjunto de classes com recursos que não são oferecidos por configurações e perfis. Como são modulares, desenvolvedores podem escolher apenas os pacotes que atendem aos seus requisitos.

Segue abaixo uma lista com alguns pacotes opcionais:

  • Information Module Profile (IMP)
  • Wireless Messaging API (WMA)
  • Mobile Media API (MMAPI)
  • Location API for J2ME
  • SIP API for J2ME
  • Security and Trust Services API for J2ME
  • Mobile 3D Graphics
  • J2ME Web Services APIs (WSA)
  • Bluetooth API
  • J2ME RMI
  • JDBC for CDC/Foundation Profile API

Somadas às classes do perfil e da configuração, fabricantes de celular podem adicionar outras classes. Entretanto, o uso de tais classes compromete a portabilidade.