Powered By Java! – Introdução ao J2ME 1


DarthGamer

Praticamente todas as pessoas já ouviram falar sobre Java. Ele está presente quando trabalhamos com sistemas gerenciais, acessamos a internet e também quando utilizamos nosso celular.

As muitas faces de Java permitem que esta seja uma das linguagens mais procuradas pelos iniciantes em programação e também por empresas que desejam vincular sua área com os computadores.

Neste artigo abordarei a introdução a edição de Java chamada J2ME, ou Java 2 Micro Edition.

Presume-se então que os leitores já tenham certo conhecimento e familiaridade (não precisa muita não) com a linguagem Java. Caso desejar, aqui no blog o autor Tiago Souza escreveu um ótimo mini-curso sobre Java:

Mini Curso de Java – Parte 1

Para os pequenos: JAVA Micro Edition!

A plataforma Java Micro Edition (Java ME) prevê uma robusta e flexível interface para aplicações de ambientes móveis e outros dispositivos embutidos, celulares, assistentes digitais pessoais (PDAs), “set-top boxes” e impressoras. Java ME inclui interfaces flexíveis, com segurança robusta, “built-in” de protocolos de rede e suporte para aplicações “offline” que podem ser baixadas dinamicamente. Aplicações baseadas em Java ME são portáveis em muitos dispositivos e ainda maximiza a capacidade nativa de cada dispositivo.”

Fonte: http://java.sun.com/javame/index.jsp

Ou seja, J2ME é a linguagem ideal para quem precisa desenvolver aplicações onde o poder de processamento e armazenamento é limitado. Para se ter uma idéia, a Sun (empresa criadora e mantenedora do Java) estima que mais de 6 bilhões de aparelhos móveis compatíveis com Java estão espalhados pelo mundo, ou seja, não seria uma má idéia obter conhecimento em J2ME, seria?

As duas categorias principais do J2ME são CLDC e MIDP.

CLDC e MIDP – Configuração e Perfil.

CLDC – Connected Limited Device Configuration, ou Configuração de Dispositivo Conectado Limitado, ou simplesmente Configuração, existe para que diversos dispositivos se enquadrem no uso das bibliotecas e recursos básicos da máquina virtual Java.

Veja a tabela abaixo, ela demonstra as características da CLDC:

· Para a execução do Java: 128 kb de memória;

· Alocação de memória: 32 kb em tempo de execução;

· Interface: restrita;

· Autonomia: baixa, normalmente necessitando de uma bateria.

· Conectividade de rede: limitada.

Para melhor compreensão da Configuração vou mencionar um exemplo:

O Motorola Razr V3 é um celular, um dispositivo móvel com limitações de memória e poder de processamento, assim como o modelo da Nokia, o Nokia E51. Ambos possuem tela de tamanho limitado, teclado numérico e rede relativamente limitada.

Conforme mencionado acima então é correto dizer que ambos os modelos se enquadram nas características da CLDC, repetindo: Configuração de Dispositivo Conectado Limitado.

Ok, mas apesar das semelhanças na CLDC, existe entre outras a diferença física, como por exemplo o display, pois o V3 possui tela de 2,5”, enquanto o Nokia E51 possui display de 2 polegadas. É neste ponto que entramos no assunto MIDP, ou Perfil.

MIDP – Mobile Information Device Profile, ou Perfil de Dispositivo de Informação Móvel, ou Perfil foi criada para que justamente as peculiaridades, digamos assim, de cada dispositivo possa ser tratada. Imagine que, apesar do ambos se enquadrarem nos pontos da CLDC descrita acima, um celular e um PDA possuem diferenças físicas, como display e teclados do tipo “QWERTY”* nos últimos citados. Foi o mesmo ocorrido no exemplo do celular Nokia e Motorola, que apesar de possuírem tela de tamanho limitado ainda assim possuem diferentes dimensões nestas.

Resumindo, são nas classes CLDC e MIDP que você encontrará as bibliotecas e recursos necessários para o desenvolvimento de aplicativos para dispositivos móveis. E o que fará tudo isso funcionar na prática se chama KVM (Máquina Virtual K).

*Repare que seu teclado forma a palavra QWERTY olhando a primeira fileira de letras, da esquerda para a direita. É comum classificar teclados deste tipo dos aparelhos móveis com esta nomenclatura.

KVM – Máquina Virtual K.

Seguindo esta linha de conectividade e portabilidade para os dispositivos móveis que a Sun desenvolveu então uma máquina virtual que leva em consideração as implementações de uma Configuração. A esta máquina virtual foi dado o nome de KVM, ou Máquina Virtual K. Dispositivos limitados não suportariam os recursos avançados e “pesados” suportados por uma JVM convencional, tal como a API Abstract Window Toolkit (AWT), exceto se tratada para tal.

Eu tenho uma KVM no meu celular? O que é isso?

A KVM é parte do ambiente de desenvolvimento e está inclusa na edição Micro Edition da plataforma Java ( … )

Celulares, pagers, PDA´s freqüentemente executam a KVM para recursos comuns em dispositivos móveis.

A KVM é similar a JVM (Java Virtual Machine) no que se diz respeito a executar aplicações e Applets desenvolvidas na tecnologia Java. Entretanto a KVM é utilizada em celulares e dispositivos móveis enquanto a JVM é utilizada em computadores em geral. ( … )

A KVM é a única implementação da CLDC disponível para executar aplicativos Java em dispositivos móveis.

Fonte: http://java.com/en/download/faq/what_kvm.xml

arquitetura

Arquitetura J2ME

Iniciando

Primeiramente temos de efetuar o download da JDK (Java Development Kit, aprox. 70 Mb) disponível através do link:

http://java.sun.com/javase/downloads/index.jsp

O site vai redirecionar para a página de login, é necessário o registro na Sun para o download, mas este pode ser feito gratuitamente. A JDK é necessária para a instalação da ferramenta de desenvolvimento do Java ME descrita logo adiante.

Instale a JDK com as opções padrões.

Agora é a vez de baixar a SDK de nome gigante (veja abaixo) do Java ME através do link:

Java Platform Micro Edition Software Development Kit 3.0 Early Access

http://java.sun.com/javame/downloads/index.jsp

Esta encorpada SDK do J2ME traz praticamente todos os recursos necessários para o desenvolvimento das aplicações, incluindo tecnologias com o Blue-ray Disc Java (BD-J)*. Tão amigável e poderosa que a própria Sun orgulhosamente a chama de ferramenta do “estado-da-arte”. Pode?

Após o download da SDK (aprox. 55 Mb) instale-a seguindo os padrões na tela de instalação.

*Blue-ray Disc Java (BD-J): tecnologia que torna possível a interatividade em aparelhos leitores de Blue-ray Disc, utilizando programação Java.

Saiba mais em: http://java.sun.com/developer/technicalArticles/javame/bluray/

As MIDlets

MIDlets são aplicativos Java destinados aos dispositivos móveis. Elas serão construídas baseando-se nos formatos especificados pela Configuração (CLDC) e o Perfil (MIDP).

OlaMundoMid.Java

Após o download e instalação, abra o J2ME_SDK. Sua tela inicial deve assemelhar-se com a imagem logo abaixo:

clip_image002

Escolha a opção “Create New Project” logo a direita. Na tela subseqüente selecione “MIDP Application” e pressione “Next”.

Na caixa “Project Name” digite: J2ME

Na caixa “Project Location”: C:\MIDs (ou troque C: por sua unidade de disco padrão)

Desmarque a caixa “Create Hello MIDlet”, pois não queremos que a SDK crie um “OlaMundo” automaticamente. Nós iremos criar o nosso.

clip_image002[4]

Clique em “Next”. Mantenha as opções padrões e pressione “Finish”.

A tela que a ser mostrada deverá assemelhar-se a tela abaixo:

clip_image004

Pronto, nosso ambiente de desenvolvimento J2ME está configurado, agora iremos criar nossa primeira aplicação MID.

Em “Source Packages”, veja que o pacote está com o nome de “Default Package”. A SDK nos demonstra assim justamente por não termos nenhuma MIDlet criada e conseqüentemente nenhum pacote que seja vinculado a ela.

Clique em “Default Package” com o botão direito e selecione a opção “New” >> “MIDlet”.

clip_image006

Em “MIDlet Name” digite: OlaMundoMid e em “Package” digite: j2me.

clip_image008

Pronto, demos um nome à nossa MIDlet e ao nosso pacote. Podemos clicar em “Finish”.

Uma nova MIDlet “pelada” será criada para nós automaticamente, com os métodos padrões e exigidos pelo gerenciador.

Deixe o código de sua MIDlet como este abaixo:

__________________________

package j2me;

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class OlaMundoMid extends MIDlet implements CommandListener {

private Command exitCommand; // Comando de saída

private Display display; // O display para a MIDlet

public OlaMundoMid() {

display = Display.getDisplay(this);

exitCommand = new Command(“Exit”, Command.EXIT, 0);

}

public void startApp() {

TextBox t = new TextBox(“Dimensão Tech”, “Olá Mundo eu sou uma MIDlet!!!”, 256, 0);

t.addCommand(exitCommand);

t.setCommandListener(this);

display.setCurrent(t);

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

}

public void commandAction(Command c, Displayable s) {

if (c == exitCommand) {

destroyApp(false);

notifyDestroyed();

}

}

}

__________________________

Uma vez escrita sua MIDlet, clique no botão “Run MainProject” ou pressione a tecla F6.

Uma janela com a imagem de um aparelho celular será exibida. Veja que nossa aplicação já exibiu a mensagem que programamos.

Na verdade esta emulação faz parte da chamada Wireless Toolkit, um pacote onde é possível encontrar exemplos, documentação, bibliotecas e o mais importante, testar sua aplicação para diversos modelos de aparelhos móveis.

Repare também nas opções no canto esquerdo. Se você expandir a opção “CLDC Java(TM) Platfform…” verá que aparecerão vários “Defaults”. Clique duas vezes sobre um dos “Defaults” e veja o resultado. Estes são modelos padrões de  aparelhos móveis com configurações diferenciadas para que você possa testar sua aplicação. O MIDP que comentamos, lembra?

Bom pessoal é isso aí, apesar de ser bem simples este artigo, a minha intenção foi apresentar brevemente o J2ME para a galera que se interessa em desenvolvimento para aparelhos móveis. A área é bem extensa e se expande cada vez mais.

Nos próximos artigos vamos abordar a estrutura dos arquivos JAR e JAD e falaremos mais sobre as MIDlets e a tecnologia MID.

Grande abraço!

Gabriel Domingues

Últimos 5 artigos de Gabriel Angeli

Sobre Gabriel Angeli

De Campinas-SP, graduado em Análise de Sistemas pela Universidade Paulista. Atua como desenvolvedor líder em uma empresa de consultoria e desenvolvimento de sistemas E.R.P. Gabriel é fanático por games e também adora animação digital, ficção científica e ufologia.

Deixe uma resposta