WirelessBR |
WirelessBr é um site brasileiro, independente, sem vínculos com empresas ou organizações, sem finalidade comercial, feito por voluntários, para divulgação de tecnologia em telecomunicações |
|
Tutorial de programação J2ME |
||
Autor: Rodrigo P. Garcia Corbera (*) |
(Esta página contém uma figura grande. Aguarde a carga se a conexão estiver lenta)
O que é J2ME?
A plataforma Java 2 Micro
Edition (J2ME) implementa a linguagem Java para vários dispositivos tais como
telefones celulares, PDAs, Internet screenphones, settop boxes digitais para
TV, sistemas de navegação automotiva, comutadores e roteadores de rede,
componentes para automação residencial, etc.
A plataforma J2ME consiste de máquinas
virtuais (KVM) e APIs especificadas em "documentos de configuração"
("Configuration" – CDC e CLDC) em conjunto com perfis ("Profiles"
- MIDP) para uma determinada aplicação ou mercado. Tudo está disposto em
camadas de software como segue no diagrama abaixo:
Camadas de software do J2ME
O desenvolvimento de Configurações
e Perfis se dá de acordo com processos estabelecidos pela “Comunidade
Java”. Nesse processo, similar aos do IETF, podem participar o setor
privado, público, “neutro”, ou mesmo indivíduos. Há votações para a
aprovação de uma determinada especificação que só se torna pública uma
vez que aprovada pela maioria.
Maiores detalhes podem ser obtidos no site da SUN:
http://java.sun.com/products/cldc
http://java.sun.com/products/midp
A versão suportada na maioria dos dispositivos
celulares no Brasil é a CLDC 1.0 e o MIDP 1.0. O suporte comercial ao MIDP
2.0 está previsto para o final de 2003, quando deverão ser lançados os
primeiros modelos baseados nessa nova versão do perfil.
O CLDC (Connected Limited Device Configuration) contem uma API mínima
para poder rodar aplicativos em dispositivos móveis com limites de
processamento e memória, tais como, telefones celulares, smartphones, pagers
e PDAs.
Em oposição temos a CDC
(Connected Device Configuration) que supõe dispositivos com mais capacidade
tais como settop boxes digitais, screen-phones, Nokia Communicator e alguns
PDAs mais poderosos.
No que diz respeito ao CLDC para aparelhos celulares, temos as seguintes
características:
· Hardware requerido: mínimo de 160KB de memória para Java, um
processador de no mínimo 16 bits com baixo consumo (adequado a baterias típicas
de um celular) e conexão de rede (neste caso wireless – 9.6Kbps, 144Kbps ou
2Mbps).
· Software que inclua suporte a um subconjunto da linguagem Java e a um
subconjunto da máquina virtual Java que definam um núcleo de funções que
permitam o desenvolvimento de aplicações móveis.
A segurança, que a CLDC define, está baseada no chamado “Sandbox Security
Model”, isto é, a máquina virtual terá um espaço de memória
independente do restante das aplicações do celular (tais como agenda, tons, imagens, configura
ção, browser WAP, etc).
Nesse modelo de segurança restringe-se as operações que podem ser
executadas a um conjunto de funções da API tão somente. Nenhuma outra operação
é permitida. Com isso a aplicação não pode acessar a área de memória do
calendário ou agenda de contatos do aparelho celular. Outro ponto importante
no que tange ao Java é o fato que não é permitido carga de classes
definidas pelo usuário de forma a garantir a segurança de qualquer aplicação
desenvolvida com a API CLDC.
Essa é uma diferença significativa em relação ao BREW que não define
limites à aplicações que por sua vez podem acessar áreas de memória de
qualquer parte do celular, compartilhar dados com outros aplicativos, alterar
áreas de código também.
O fato do C/C++ permitir acesso via apontadores a memória, o que o Java não
permite, ajuda o BREW a ser mais flexível, porém exige que o programador
saiba o que está fazendo.
Por esse motivo o custo de desenvolvimento no BREW é mais alto, pois toda
aplicação tem que ser testada e certificada pela Qualcomm para garantir que
não se introduza na rede aplicações “mal intencionadas ou simplesmente
mal feitas” e com isso ponha-se em risco toda a c redibilidade da plataforma
BREW.
O J2ME corta esse risco pela raiz, o que o faz ser mais limitado, porém
seguro e com custos de desenvolvimento menores. Em cada plataforma há suas
vantagens e seus “trade-offs”.
No topo da camada de CLDC temos a camada de software chamada Profile. O
Profile, ou Perfil, especifica um conjunto de APIs que moldam-se a um
determinado tipo de dispositivo.
A diferença entre Configuração e Perfil é que a Configuração descreve de
forma geral uma família de dispositivos, enquanto o Perfil fica mais específico
para um tipo particular de aparelho em uma dada família.
O Perfil tão somente acrescenta funcionalidades àquele particular
aparelho.
O Perfil MIDP contem, por exemplo, APIs para aparelhos celulares enquanto o
CLDC aborda APIs para dispositivos móveis de pouca capacidade de
processamento, dentre os quais temos celulares, pagers etc.
O CLDC define em sua API os pacotes java.io, java.lang, java.util e javax.microedition.io
(conexão e interfaces). Notem que não há suporte a ponto flutuante, suporte
completo à classe Error do J2SE, a referências fracas, verificação de
arquivos de classes (há no lugar uma ferramenta de “pré-verificação”),
finalização - Object.finalize(), JNI (Java Native Interface), reflection,
thread groups/ daemons e user-defined class loaders.
O MIDP define tudo o que há no CLDC com a adição aos pacotes javax.microedition.lcdui
(interface com o usuário), javax.microedition.rms (sistema de gerência de
registros para persistência de informa ções), javax.microedition.midlet
(suporte para aplicações MIDP, os chamados midlet s).
Vários fabricantes adicionam ao MIDP algumas outras APIs, tais como suporte a
uma forma simplificada de AWT (Abstract Window Toolkit) e controles de vibração,
som e display.
Cada fabricante adiciona livremente o que considerar importante. Isso torna
difícil muitas vezes portar aplicações entre fabricantes, a menos que se
use sempre o conjunto mínimo especificado no MIDP 1.0.
Com o MIDP 2.0, haverá um conjunto mínimo que incluirá controles de vibração,
som e display entre outras capacidades. Dessa forma haverá mais portabilidade
entre os vários modelos e fabricantes.
De onde baixar ferramentas de desenvolvimento?
No site da SUN Microsystems podem ser encontradas ferramentas que permitem
gerar os arquivos necessários para rodar aplicações em aparelhos compat íveis
com o J2ME.
Entre as ferramentas há um gerenciador de projetos bem simples e um emulador
genérico de terminais com MIDP, tudo faz parte do J2ME Tool Kit.
Nesse Tool Kit não há um IDE (Integrated Development Environment), portanto
poderá ser necessário editar o código fonte em ferramentas próprias,
compilar, pré-verificar e empacotar usando as ferramentas do Kit para , em
seguida, emular o resultado e depurar o código.
É um ciclo comum em ambientes como UNIX, usando-se por exemplo Makefile.
Porém, para facilitar as coisas, a SUN disponibilizou um IDE livre chamado
Forte for Java ou SUN One Studio, nome que atualmente é usado. Existem outras
opções tais como o NetBeans IDE ou a versão comercial do JBuilder da
Borland.
Para instalar um ambiente de desenvolvimento para J2ME, o primeiro passo é
baixar e instalar o J2SE SDK e JRE da SUN. Sem os quais não é possível se
fazer nada.
É necessário ter o sistema operacional Windows NT ou 2000. Existem versões
para Linux e Solaris, caso se prefira ambiente UNIX.
Caso o objetivo seja apenas poder rodar aplicações de demonstração, é
necessário apenas o J2SE JRE (Java Runtime Environment).
Se o objetivo é desenvolver aplicações são necessários ambos o J2SE JRE e
SDK (Software Development Kit).
Para obter o Java2 SDK, Standard Edition (J2SE SDK) e/ou o Java 2, Standard
Edition Runtime Environment (J2SE JRE) na versão mínima - 1.3 (atualmente
está disponível a versão 1.4.1) vá para: http://java.sun.com/j2se/1.4.1/download.html
Escolha o sistema operacional, língua, etc.
Após baixar o JRE e/ou SDK, instale cada qual, preferencialmente o JRE
primeiro.
Em seguida baixe o J2ME Wireless Toolkit versão 1.0.4 _01 pelo link abaixo:
http://java.sun.com/products/j2mewtoolkit/download.html
Instale o J2ME toolkit.
Com isso já será possível criar aplicações J2ME e testá-las no simulador
que está incluído nas ferramentas.
Caso esteja usando Windows NT ou 2000, as ferramentas estarão disponíveis na
barra de ferramentas no botão “Start” ou “Início”.
Aos que não gostam de usar Makefiles ou .bats em conjunto com NotePads para
editar ou Edit do “MS DOS Prompt”, existe a opção de se baixar um JDE
(Java IDE) da própria SUN, o SUN One Studio 4 update 1, Mobile Edition no
link abaixo:
http://wwws.sun.com/software/sundev/jde/buy/index.html
Apesar de ter uma referência a “buy” na URL
acima, na verdade é possível baixar o IDE gratuitamente.
Note que a parte que trata sobre o SUN One Studio Mobile Edition está bem ao
final da página na WEB.
Baixe o arquivo e instale-o.
Com isso temos um conjunto de ferramentas sem custo algum que permite que se
desenvolva e teste aplicativos que poderão ser executados em qualquer
aparelho com suporte a J2ME.
Na próxima sessão será abordado o primeiro programa em J2ME, um tutorial
sobre o midlet “Hello World!”.
(Continua)