MIDlet: Introdução ao J2ME

j2me

Este post será dividido em duas partes, sendo esta primeira uma introdução explicando a tecnologia e como deve ser implementado um MIDlet básico. A segunda, será voltada para a implementação da interface CommandListener, deixando-a mais interativa.
Java ME (ou J2ME)

Java ME (Micro Edition) é uma plataforma formada por API’s especificas para dispositivos embarcados, ou seja, dispositivos como celulares, PDA’s, controles remotos e muitos outros dispositivos que possuem propósitos específicos. Esses dispositivos apresentam poucos recursos de hardware, e por este motivo a plataforma Java ME é bem enxuta, deixando de fora muitas classes da plataforma Java SE (Standard Edition) que estamos acostumados.
MIDlet

Assim como os aplicativos para browsers são chamados de Applets, aplicativos para servidores são chamados de Servlets e aplicativos para TV digital são chamados de Xlet, o MIDlet é o nome dado para aplicativos  que rodam em celulares.

MIDlets, em modo geral são aplicações (softwares) escritos em linguagem Java para pequenos dispositivos, esses aplicativos são interpretados pelo Java ME (a virtual machine especifica para micro edition).
Primeiro Programa – “Hello MIDlet”

Esse é um exemplo bem simples de um MIDlet que exibe um “Hello MIDlet” quando executado, tendo como foco o que de fato deve ser implementado para que um MIDlet possa rodar. O exemplo foi feito com o NetBeans 6.5 que pode ser baixado aqui, baixe a versão que tiver suporte para Java ME. Lembrando que o SDK também deve estar devidamente instalado e configurado em seu sistema. Após preparar o ambiente de desenvolvimento podemos iniciar o código.

Para se trabalhar com aplicativos do tipo MIDlet é preciso seguir algumas regras:

Primeiramente é necessário importar o pacote javax.microedition.midlet, estender a classe MIDlet deste pacote, e por conseqüência implementar seus três métodos (todos métodos da classe MIDlet). Aqui estão eles:

startApp()
pauseApp()
destroyApp(boolean unconditional)

Esses métodos são responsáveis pelo ciclo de vida de uma aplicação para celular (veja imagem abaixo). É possível deduzir o papel de cada método pelo seu próprio nome:

– O método startApp(), responsável por inicializar a aplicação (pode ser comparado com o método main() no Java SE);

– O método pauseApp() é chamado geralmente quando a aplicação fica em segundo plano deixando uma outra aplicação executando.

– E por fim o método destroyApp() é executado quando a execução da aplicação chega ao seu fim, com o objetivo de destruir qualquer vestígio da aplicação da memória.

img2

Em código tudo o que foi escrito acima pode se resumir na seguinte classe (MIDlet) de nome MeuPrimeiroMIDlet.

img1

Agora que já sabemos o que é preciso para uma aplicação MIDlet “rodar”, vamos implementá-la para que seja exibido um “Hello MIDlet” na tela.
O código abaixo faz exatamente isso:

codigo

Entendendo o código

Na linha 2 o pacote javax.microedition.lcdui foi importado para fazer uso de suas classes, como a classe Display. Esta classe é responsável por gerenciar o display do celular.

Na linha 10, dentro do método startApp(), criamos um objeto da classe Display, invocamos o método estático getDisplay() e passamos this como parâmetro para este método, ou seja, passamos o MIDlet corrente (a própria aplicação).

Temos também na linha 7, a declaração de um Form. Este form é utilizado logo abaixo, também no método startApp() (linha 11). Esse é sem mistérios, um formulário comum que recebe um objeto do tipo String como parâmetros para seu construtor, esse String define o titulo do formulário.

Na linha 13 é adicionado um texto (o nosso “Hello MIDlet”) no corpo do formulário, esse texto é incluso através do método append(), que espera um String como parâmetro.

O objeto formulário é adicionado no display do celular com o método setCurrent(), como pode ser visto na linha 14.

Até aqui, se a aplicação for executada ela ira iniciar normalmente e exibir o formulário com o titulo “Meu Primeiro MIDlet” e o texto “Hello MIDlet” no corpo do form sem apresentar nenhum erro de execução, porem como pode ser notado, o método destroyApp() não foi implementado, e com isso não temos uma forma de encerrar a aplicação, a não ser forçando o seu encerramento através de outros meios.

Para que a aplicação possa ser encerrada devidamente, implementamos o método destroyApp(). Dentro deste método acessamos o método setCurrent() novamente através do objeto display, mas agora passando null para eliminar qualquer objeto da tela do celular. Por fim fazemos um this.notifyDestroyed(), que informa ao AMS (Application Manager System) –  sistema operacional do celular, que a aplicação será finalizada e que o sistema operacional pode assumir o display do celular novamente.

Obs.: Não houve a necessidade de “implementar” o método pauseApp() para este exemplo.
Executando a aplicação

Pronto! Está feito! Agora é possível executar a sua aplicação diretamente do NetBeans (caso esteja com esse IDE), ou gerar o jar/jad para que possa ser executado por qualquer outro emulador ou até mesmo um celular.

Se todos os passos foram seguidos corretamente, algo como a imagem abaixo será exibida como saída.

img4

Att
[]’s

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s