Como criar uma aplicação nativa Olá Mundo em BlackBerry
Ensinarei neste tutorial a escrever, compilar e testar uma aplicação simples, do tipo Olá Mundo, em J2ME com as bibliotecas nativas BlackBerry.
Antes de iniciar, você já deve ter instalado toda a plataforma de desenvolvimento BlackBerry. Se não fez isso, siga este tutorial escrito por mim:
Instalar e configurar a plataforma de desenvolvimento BlackBerry
Preparação do Projeto
Inicie o NetBeans e crie um novo projeto. Na tela de assistente para um novo projeto, escolha a categoria “Mobility”, o projeto “MIDP Application”, e clique em “Próximo”.
No campo “Project Name” informe o nome que usaremos para nosso projeto “bbOlaMundo”. Em “Project Location” escolha uma pasta para gravar o seu projeto, no meu caso estarei usando “C:\dev\blog”, sendo que a pasta final do projeto será “C:\dev\blog\bbOlaMundo”. Ative a opção “Set main project” para que o NetBeans defina esta aplicação como ativa. Desative a opção “Create Hello MIDlet”, pois não iremos querer que o NetBeans crie classes de exemplo em nossa aplicação. Clique em “Próximo”.
No campo “Emulator Platform” serão mostradas entre outras, as plataformas BlackBerry que você implantou no NetBeans, com os nomes que você escolheu. Escolha a plataforma BlackBerry com a versão que você deseja criar a sua aplicação. Lembre-se que a versão deve ser a mesma do seu device BlackBerry. A que escolhi é a compatível com o meu device, “BlackBerry 4.2.1″, pois meu BlackBerry-8800 tem o SO versão 4.2.1. Após escolher a plataforma, clique em “Finalizar”.
Escolher: RIMlet ou MIDlet?
Num device BlackBerry você pode rodar tanto aplicações J2ME, os MIDlet, quanto aplicações nativas BlackBerry, que possuem acesso às APIs nativas das bibliotecas Rim, denominadas RIMlet. Nossa aplicação será nativa Rim, RIMlet, e não MIDlet. Se você deseja entender as principais diferenças entre aplicações não nativas MIDlet e nativas RIMlet, leia este artigo complementar:
Aplicações BlackBerry: RIMlet X MIDlet
Criando a aplicação
Após ter criado o novo projeto chamado bbOlaMundo, ele aparecerá no painel “Projetos”. Para criarmos a classe principal de nossa aplicação, o RIMlet, clique com o botão direito sobre o projeto, e escolha “Novo”, “Classe Java”. No nome da classe coloque “bbOlaMundo”, pois é o nome do arquivo principal da aplicação. Quando precisar desinstalar uma aplicação do device, este será o nome que aparecerá na lista de aplicações instaladas. Tome cuidado, pois não pode haver duas aplicações com o mesmo nome de classe RIMlet no mesmo device. Eu não poderia instalar uma agenda com a classe principal RIMlet chamada App, e uma calculadora com a classe principal RIMlet também chamada App. Escolha bem os nomes das classes RIMlet dos seus projetos. No campo para definir o pacote, deixe em branco. Ganha-se em performance quando não usamos pacotes numa aplicação J2ME, e nossa aplicação não terá muitas classes. Clique em “Finalizar” e a classe principal será criada.
Definindo o RIMlet do Projeto
Após termos criado esta classe, precisamos informar nas propriedades do projeto que esta é a classe principal, por onde a aplicação iniciará. Para isso, clique com o botão direito no projeto, “Propriedades”. Clique no item “MIDlets”. Não há nenhum MIDlet definido. Precisamos adicionar nossa classe principal como MIDlet, embora ela seja na realidade um RIMlet, mas o NetBeans não sabe disso. Clique no botão “Add” e informe no campo “MIDlet Name” o nome visual da aplicação: “Olá Mundo”. No campo “MIDlet Class” informe o nome de nossa classe principal “bbOlaMundo”. Deixe o campo “MIDlet Icon” em branco, e clique em “OK”. Será informado que o nome da classe é inválido, mas ignore isto, pois o NetBeans não sabe que se trata de um RIMlet. Clique em “OK” para confirmar as alterações.
Implementando a classe da aplicação
Agora precisamos tranformar esta classe numa classe RIMlet. Para isso, faça com que ela estenda a classe UiApplication, adicionando as dependências de Import, dessa forma:
import net.rim.device.api.ui.UiApplication;
public class bbOlaMundo extends UiApplication {
...
Agora precisamos criar o método estático main(), por onde nossa aplicação iniciará. Se usássemos MIDlet, a aplicação iniciaria por um método chamado startApp(). Nosso método main pode ser declarado acima do construtor. Teremos então uma classe com esta aparência:
public class bbOlaMundo extends UiApplication {
public static void main(String[] args) {
}
public bbOlaMundo() {
}
}
Precisamos escrever as instruções do método de inicialização main(). Ele deve criar uma instância da aplicação e mandar rodar a thread principal desta instância, assim:
public static void main(String[] args) {
//Cria uma nova instância da aplicação
bbOlaMundo aplicacao = new bbOlaMundo();
//Entra na thread principal para rodar a aplicação
aplicacao.enterEventDispatcher();
}
Precisamos também escrever as instruções do construtor da classe principal, ou seja, o que será feito quando se instanciar uma classe da aplicação. Dentro do construtor da aplicação deve-se, entre outras coisas, instanciar e mostrar a janela principal da aplicação na tela do celular, assim:
public bbOlaMundo() {
//Instancia a tela principal da aplicação
TelaPrincipal telaPrincipal = new TelaPrincipal();
//Mostra a tela principal
pushScreen(telaPrincipal);
}
O NetBeans deve apresentar erros, pois ainda não temos nossa classe TelaPrincipal.
Criando a classe da tela Principal
Criaremos a classe da tela agora. Clique com o botão direito no projeto, “Novo”, “Classe Java”. Nomeie a classe como “TelaPrincipal” e clique em “Finalizar”. Pronto, nossa classe já foi criada.
Para que nossa aplicação reconheça nossa classe como uma classe de tela, precisamos fazer com que ela estenda a classe “MainScreen”. Se fosse em J2ME usaríamos a classe Form, ou Canvas. Portanto, faça isso:
import net.rim.device.api.ui.container.MainScreen;
public class TelaPrincipal extends MainScreen {
...
Implementando a nossa tela
Agora precisamos escrever o construtor da nossa TelaPrincipal. Inicialmente definiremos apenas o título, e algumas particularidades de janelas, como o menu padrão e a ação de fechar, dessa forma:
public TelaPrincipal() {
//Define algumas propriedades da janela
super(DEFAULT_MENU | DEFAULT_CLOSE);
//Define o título da janela
setTitle("TelaPrincipal"); //Define o título da janela
}
Precisamos de ítens em nossa janela. Queremos que ela tenha 2 ítens com mensagens, um contendo “Olá BlackBerry!!!” e outro contendo uma mensagem maior. Esses ítens ficam no pacote net.rim.device.api.ui.component. Para usarmos os dois ítens na tela, vamos criar dois campos, ou variáveis, em nossa classe para guardar nossos ítens. Assim sendo, declare:
public class TelaPrincipal extends MainScreen {
LabelField labelFieldOla;
LabelField labelFieldMensagem;
public TelaPrincipal() {
...
Após criarmos as variáveis, precisamos construir os ítens nessa variáveis, usando o construtor da classe, e depois de construirmos os ítens, precisamos adicioná-los ao corpo da nossa tela, usando o método add(). Nosso metódo construtor ficará assim:
public TelaPrincipal() {
//Define algumas propriedades da janela
super(DEFAULT_MENU | DEFAULT_CLOSE);
//Define o título da janela
setTitle("TelaPrincipal");
//Instancia o label Olá
labelFieldOla = new LabelField("Olá BlackBerry!!!");
//Adiciona o label à Janela
add(labelFieldOla);
//Instancia o label Mensagem
labelFieldMensagem = new LabelField("Neste exemplo você aprendeu a criar uma simples aplicação Olá Mundo.");
//Adiciona o label à Janela
add(labelFieldMensagem);
}
Sequência normal da aplicação nativa
Vou descrever brevemente o que acontecerá quando mandarmos rodar a aplicação no emulador ou no device. A JVM executará o método main() da classe principal da aplicação. O método main criará uma nova instância da aplicação. O construtor da aplicação criará uma nova janela. O construtor da janela criará os ítens e adicionará estes à janela. A linha de execução voltará para o construtor da aplicação. O construtor manda definir a tela instanciada como a tela corrente. A linha de execução volta ao método main(). O método main manda rodar a thread de controle principal da aplicação, que escutará/executará os eventos da aplicação corrente.
Rodando a aplicação no simulador
Pronto!!! Agora vamos rodar nossa aplicação no emulador BlackBerry. Pressione F5, ou clique no botão do NetBeans “Depurar Projeto Principal”. Será carregado o emulador.
Quando o simulador estiver totalmente carregado, use as setas do teclado do seu computador para navegar nos ítens do simulador, e use Enter para clicar em um ítem.
Vá no último ítem, para mostrar as aplicações que estão no simulador. Procure pela aplicação chamada “Olá Mundo”. Pressi
one Enter quando tiver encontrado. Sua aplicação deverá rodar como na imagem:

Espero que este artigo tenha sido útil.
Um abraço.
Nelson Pereira Junior
Sobre o Autor
Nelson é desenvolvedor há 12 anos. Hoje desenvolve aplicações Web e Móveis na Abacomm Brasil cuidando do desenvolvimento server-side J2EE, banco de dados, design de aplicações móveis, e desenvolvimento móvel usando várias plataformas como BlackBerry, J2ME, FlashLite, Android, etc. Para conversar com o autor use o e-mail, MSN e GTalk npereirajr@gmail.com.

Patrício Souza:
Olá, tudo bem? Segui os passos como descrito acima, mas quando vou fazer o debug ocorre o seguinte erro:
‘”cd’ is not recognized as an internal or external command,
operable program or batch file.
‘jdwp”‘ is not recognized as an internal or external command,
operable program or batch file.
O que devo fazer?
12 Agosto 2008, 4:45 pmRaimundo:
Ola, quando coloco para rodar o programa apresenta o seguinte erro:
‘”cd’ nÆo ‚ reconhecido como um comando interno
12 Dezembro 2008, 1:20 amou externo, um programa oper vel ou um arquivo em lotes.
‘jdwp”‘ nÆo ‚ reconhecido como um comando interno
ou externo, um programa oper vel ou um arquivo em lotes.
Não consigo colocar para rodar, o que faço?
Samuel Silva:
Olá, Tive o mesmo problema apresentado nos comentários acima. Como devemos proceder para resolver esse problema?
4 Março 2010, 11:45 amNelson:
Troque as aspas duplas inclinadas por aspas duplas normais. O encode do artigo deve ter convertido as aspas duplas automaticamente.
4 Março 2010, 9:56 pmSamuel Silva:
Obrigado pela resposta, mais meu problema foi durante a integração do JDE com o Netbeans. Pelo tutorial parece que tenho que colocar no campo “Device Name” o valor “BlackBerry_4_2_1″, mais na verdade vc tem que escolher qual a versão do blackberry que dejesa emular, no caso escolhi 8310 e funcionou. Mesmo assim obrigado!!
7 Março 2010, 7:27 pmcarolina:
Olá!
15 Abril 2010, 5:53 pmEu fiz o passo a passo, não deu erro nenhum, carregou o simulador, fui em aplicações e lá estava o Olá Mundo, porem quando eu dou entrer na aplicação não carrega o texto na telado blackberr, vc saberia o que aconteceu? O que faria pra arrumar??