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 
Parte 1  
Plataforma Java 2 Micro Ediçã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)


(*) O autor, Rodrigo P. Garcia Corbera tem 10 anos de experiência em arquitetura e projetos de tecnologia em telecomunicações. Mais recentemente, trabalhou na Lucent Brasil, onde atuou como gerente comercial de soluções de Messaging no mercado de operadores móveis, gerente da área de consultoria de redes de dados e óticas liderando um time com 25 consultores espalhados pela América do Sul e também, foi por dois anos, responsável por gerenciar a área técnico-comercial de integração de tecnologia para ofertas de redes de dados da Lucent. Antes disso, trabalhou no projeto Pay-Per-View da Globo Cabo como consultor contratado através da AL&CA e como Executivo de Vendas da Hughes Network Systems. Rodrigo tem formação em engenharia da computação pela UNICAMP e é fluente em português, espanhol e inglês.
Contato via e-mail: rgarcia@cy.com.br 

Home WirelessBR                Próxima