Java ME é uma tecnologia
que visa facilitar o desenvolvimento de aplicações para dispositivos com
restrições no hardware, geralmente não encarados como computadores, a exemplo
de celulares, receptores para TV Digital, GPSs, dentre outros. Além de funcionar
em dispositivos diferentes, permite que programas feitos para uma certa
categoria de dispositivos seja portável entre eles, como um jogo criado para
rodar tanto em celulares simples como em smartphones. Tudo isso é possível
através da linguagem Java que estamos habituados, mas com algumas diferenças.
O presente artigo faz
uma introdução a essa tecnologia, apresentando suas características, objetivo e
como criar aplicações por meio de sua utilização. Para isso, serão expostos
alguns conceitos chave, a saber, Configurações
(Configurations) e Perfis
(Profiles), dividindo em grupos os diversos dispositivos em
que o Java ME está presente. Abordaremos ainda a preparação de um ambiente de
desenvolvimento, mais precisamente a IDE NetBeans, com o intuito de criar sistemas
Java ME.
Por fim, trataremos
sobre MIDlets e, através da implementação de dois programas, aprenderemos como permitir
a interação do usuário com a aplicação em ambientes móveis.
O
que é Java ME?
Quando a linguagem Java foi lançada
em 1995, trazia um objetivo audacioso: estar presente em todos os ambientes
computacionais possíveis, seja ele Desktop, Web ou em pequenos dispositivos,
permitindo que um programa escrito para um desses ambientes pudesse rodar nos
outros sem grandes modificações. Pode-se dizer que esse objetivo foi em parte
alcançado, pois nos dias de hoje a plataforma Java está presente em todos esses
ambientes. Nos desktops temos o Java SE, que é o core da plataforma, possuindo as bibliotecas e especificações
básicas para o desenvolvimento Java. No ambiente web e de aplicações
empresariais aparece o Java EE, que é uma extensão ao Java SE, possuindo um
número maior de pacotes e muitas especificações. Já no ambiente de dispositivos
móveis, ou pervasivos, encontramos o Java ME (ver Figura 1), foco
principal do presente artigo.
Em síntese, a plataforma Java ME
consiste em uma família de especificações que definem um conjunto de versões
mais enxutas do Java SE (Java padrão), sendo usadas para desenvolver aplicações
para dispositivos eletrônicos com baixo poder de processamento e memória, mesmo
que eles sejam tão diferentes entre si na forma e função.
Java ME encontra-se dividida em Configurações, Perfis e APIs opcionais.
Configuração é uma especificação
escrita para um grupo de dispositivos diferentes em função, mas com capacidade
de processamento e memória parecidos, a exemplo de set-top boxes e GPSs. A
configuração define também uma Java Virtual Machine (JVM) que obedeça estas
restrições.
Perfil é uma camada de abstração
sobre uma configuração, adicionando um conjunto de APIs de alto nível, como APIs
para a construção de interfaces com o usuário e persistência. Essas APIs servem
de base para o desenvolvimento de aplicativos para dispositivos com hardware
(basicamente memória e processador) e função parecidas, a exemplo de celulares com
sua diversidade de modelos e diferentes fabricantes. Uma configuração pode ter
mais de um perfil associado a ela.
APIs opcionais definem
funcionalidades adicionais que podem ser incluídas em uma configuração em
particular. O conjunto formado por uma Configuração,
um ou mais Perfis e APIs opcionais implementadas em um
dado dispositivo é chamado de Pilha
(Stack), como pode ser visto na Figura 2. Assim, uma pilha comum
em Java ME é CLDC (Configuração) + MIDP (Perfil) + JSR 82 (API opcional).
Configuração
(Configuration)
As configurações especificam um
conjunto de serviços mínimos que serão utilizados pela aplicação, como o
controle do ciclo de vida, criação de interfaces gráficas, serviços de
persistência de dados, segurança, troca de dados por uma rede, entre outros
serviços; no entanto, não fornece um tipo de classe para o gerenciamento
destes. As classes de gerenciamento são disponibilizadas nos perfis e nas APIs
opcionais.
Uma configuração também define uma
JVM, capaz de prover esses serviços de baixo nível tendo em vista as restrições
impostas pela própria natureza do dispositivo, a saber:
·
O
tipo e quantidade de memória disponível;
·
O
tipo de processador e sua velocidade;
·
A
forma de conexão em rede e acesso a Internet.
Devido à diversidade dessas
características, encontradas nos dispositivos em que o Java ME está presente, o
mesmo define duas grandes configurações: Connected Device Configuration
(CDC) e Connected Limited Device Configuration (CLDC).
Connected
Device Configuration (CDC)
Determina que os dispositivos
tenham, pelo menos, 512 KB de memória ROM, 256
KB de memória RAM e possuam algum tipo de conexão com uma rede. A CDC foi
desenvolvida visando dispositivos como set-top boxes, GPSs, fotocopiadoras,
etc. Na CDC a JVM escolhida foi a CDC HotSpot.
A CDC HotSpot é baseada na JVM
padrão do Java 1.4 (Java SE 1.4), com modificações para dispositivos com restrições
de poucos recursos. As características mais importantes dessa máquina virtual
são:
·
Portabilidade;
·
Execução
de classes Java fora da memória ROM;
·
Suporte
nativo a threads;
·
Mapeamento
de threads Java direto para threads nati
...