DESENVOLVIMENTO DE APLICATIVOS PARA CELULAR JAVA 2 MICRO EDITION Robison Cris Brito Centro Federal de Educação Tecnológica do Paraná Unidade de Pato Branco robison@pb.cefetpr.br RESUMO Engana-se quem acha que o aparelho celular é um dispositivo eletrônico utilizado apenas para transmitir sinal de voz, hoje com a grande tecnologia disponível é comum encontrar aparelhos celulares com poder de processamento igual ou até mesmo superior a computadores do início da década passada, e esses celulares podem rodar aplicativos e jogos. A tecnologia Java disponibiliza recursos para desenvolver programas para estes pequenos dispositivos criando para isso uma versão especial chamado J2ME (Java 2 Micro Edition). Esta versão apresenta vários recursos e bibliotecas para este tipo de desenvolvimento. Este artigo apresenta de forma básica todo o desenvolvimento de um aplicativo para celular, desde baixar as ferramentas gratuitas da internet, instalar, configurar o Ambiente de desenvolvimento, desenvolver o aplicativo, gerar o pacote e instalar no aparelho celular. Palavras-Chaves: Celular, J2ME, Java, MIDP. 1 INTRODUÇÃO A miniaturização dos dispositivos eletrônicos, o aumento do poder de processamento destes dispositivos aliado a necessidade do ser humano permanecer informado a qualquer hora e em qualquer lugar foi um dos motivos da grande popularização dos aparelhos celulares, hoje são mais de um bilhão de telefones celulares no mundo e esse número cresce a cada dia. Os aparelhos celulares mais modernos podem rodar aplicativos até então existente apenas em computadores e com certeza os usuários vão querer estes aplicativos, a questão é: quem irá desenvolvê-los? Vista esta grande oportunidade, gigantes da informática estão investindo cada vez mais nesta área, um exemplo é a Sun Microsystem que desenvolveu uma versão de sua plataforma de desenvolvimento, Java, exclusivamente para dispositivos móveis como celular, o nome dado foi J2ME (Java 2 Micro Edition). O Java se destaca de outras linguagens de programação, pois dispõe de recursos de Orientação a Objetos, permitindo desenvolver códigos portáveis, reusáveis e robusto. A plataforma de desenvolvimento Java possibilita desenvolver aplicativos para qualquer dispositivo, desde SmartCard s, passando por celulares e computadores até grande servidores, desde que o mesmo disponha uma máquina virtual Java (JVM), este recurso possibilita que o mesmo programa rode em várias plataformas, garantindo com isso o que o Java considera sua principal vantagem, a WORA (Write Once, Run Anywhere ou escreva uma vez e rode em qualquer lugar).
Hoje muitas empresas fabricantes de celulares vêem grandes vantagens e oportunidades na tecnologia Java, tanto que a praticamente todos os modelos de celulares da NOKIA fabricado hoje já dispõe da Maquina Virtual Java, para que possam ser instalados aplicativos desenvolvidos nesta plataforma. Fig. 1 Alguns Fabricante junto com seus celulares que dispõe de JVM 1.1 Um Tamanho Nem Sempre Serve Para Todos Na programação para celulares, infelizmente a idéia da WORA não funciona como deveria, principalmente pela grande heterogeneidade dos aparelhos celulares, existem celulares extremamente simples, com visor monocromático, telas pequenas e teclas básicas para entrada de dados e existem também celulares extremamente complexos, com grande poder de processamento, telas grandes e com suporte a uma grande quantidade de cores, além de várias teclas de entrada de dados a mais, muitas vezes sendo confundidos com vídeo Games portáteis. Para garantir esta heterogeneidade o J2ME dispõe de recursos básicos e padrões, disponíveis na grande maioria dos aparelhos, para celulares que possuem recursos a mais como teclas adicionais, alertas vibratórios conectividades diferentes é disponibilizada pelo próprio fabricante API s adicionais para um determinado aparelho, garantindo que o programa utilize o máximo dos recursos daquele celular. Com isso um programa que rode perfeitamente bem em um aparelho pode não funcionar tão bem em outro, por esse motivo a NOKIA, uma das empresas que está mais investindo em Java, criou várias series de celulares, agrupados por características do aparelho,
com isso é garantido que um programa desenvolvido para série 60, por exemplo, funcionará perfeitamente em todos os aparelhos desta mesma série. 2 DESENVOLVENDO APLICATIVOS PARA CELULAR Hoje é possível desenvolver aplicativos para celulares sem gastar nada com ferramentas para o desenvolvimento, é possível trabalhar somente com softwares livres, utilizando sistema operacional como Linux, usando editor de código gratuito e utilizando ferramentas J2ME como Wireless Toolkit que a Sun distribuí de maneira gratuita pela internet, é só fazer o download através do site da própria Sun. O Java dispõe de 3 versões para o desenvolvimento de aplicativos, o J2ME (Java Micro Edition), voltado para dispositivos pequenos e limitados, como celulares e palm s, o J2SE (Java Standard Edition) voltado para o desenvolvimento de aplicativos desktop e o J2EE (Java Enterprise Edition) usado no desenvolvimento de grandes servidores e desenvolvimento para internet. Este artigo irá configurar um ambiente de desenvolvimento J2ME baseado em Windows, utilizando o JDK da Sun, como ferramenta de desenvolvimento e emulação de celular será utilizado o Wireless Toolkit da Sun, estes dois disponíveis tanto para plataforma Windows como para Linux, como editor de código será utilizado o Gel da GExpert, por ser uma IDE de desenvolvimento rápida e de fácil utilização, porém até o presente momento só existe versão do Gel para plataforma Windows. Será abordado os conhecimentos prévios, necessários para desenvolver aplicativos para celular, em seguido o processo de instalação do JDK, que fornece bibliotecas necessárias para o desenvolvimento dos aplicativos, na seqüência, a instalação do Wireless ToolKit (J2ME) e o editor de código Gel, após a instalação e configuração das ferramentas será codificado um programa. Para terminar será simulado o aplicativo e mostrado o processo de envio do programa do computador para o aparelho celular. 2.1 Conhecimentos necessários para o desenvolvimento para celular Para se desenvolver aplicativos para celular é necessário ter um conhecimento prévio da tecnologia Java, ter um conhecimento bom da Orientação a Objetos dentro da plataforma e um conhecimento prévio das principais classes existentes no Java. Conhecimentos sobre a interface gráfica do Java (principalmente AWT) podem ajudar bastante no momento de desenvolver o layout do programa. 2.2 Instalando o JDK O JDK é o Kit de Desenvolvimento Java do J2SE (Standard Edition), utilizada na maioria das vezes para o desenvolvimento desktop, porém para todo o desenvolvimento de aplicações Java é necessário instalar essa ferramenta. É possível baixar a ultima versão do JDK no site da sun (http://java.sun.com/j2se/download.html), embora para desenvolver programas para celular exista o J2ME que possuí a API MIDlet e uma grande quantidade
de classes utilizadas neste tipo desenvolvimento, é necessário instalar também o JDK que disponibiliza classes e recursos essenciais da própria tecnologia Java, como tratamento de datas, classes de I/O entre outros recursos básicos para qualquer desenvolvimento. Também é aconselhável baixar a documentação do J2SE, pois pode ser muito útil para posteriores consultas. A documentação tem aproximadamente 33 MB e está disponível para download no mesmo link do SDK, mostrado anteriormente. A documentação está num arquivo compactado, é necessário descompactar preferencialmente na pasta onde será instalado o SDK. O SDK possui aproximadamente 50 MB, é necessário baixar o arquivo executável e em seguida se faz o processo de instalação padrão do Windows, a instalação é muito fácil, segue passo a passo a instalação sem precisar nenhuma configuração adicional. Fig. 2 Site da Sun com o link para cópia do SDK e sua documentação 2.3 Instalando a Ferramenta de desenvolvimento para Celular WTK O WTK (Wireless ToolKit) é fornecida pela Sun para o desenvolvimento de aplicativos para celular J2ME. Ele dispõe de compilador e emulador do aparelho celular, nele é possível configurar a velocidade da CPU do aparelho e o fluxo de rede, para que a emulação seja a mais próxima possível do real, já que computadores possuem muito mais memória e CPU e nem sempre o desenvolvedor dispõe do aparelho celular para instalar e testar o aplicativo. Para conseguir a instalação do WTK basta acessar o site da Sun (http://java.sun.com/products/j2metoolkit/) e fazer o download da ferramenta. Essa ferramenta não ocupa mais que 10MB. A instalação do WTK também instala a documentação do J2ME, muito útil para aprender ou consultar classes disponíveis no Micro Edition. Ele é
padrão Javadoc, ou seja, no mesmo formato da documentação J2SE, instalado anteriormente. O processo de instalação do WTK também é muito simples, sem a necessidade de configurações adicionais. 2.4 Editor de Código Fig. 3 Site para download do WTK A escolha de um bom editor de código pode facilitar muito o trabalho de codificação, um dos editores mais difundidos entre usuários que estão aprendendo a tecnologia Java a é o Gel, pela sua facilidade de trabalho e alguns recursos um pouco mais avançados, que facilita muito a codificação. Pode ser obtido através fazendo o download do site de seu fabricante http://www.gexpert.com. O Gel é uma IDE de desenvolvimento feito para Windows, logo se você deseja utilizar uma plataforma livre para o desenvolvimento, como o Linux, você terá que optar por editores como o Eclipse ou NetBeans, sendo que o último esta disponível para download no site da Sun (ver link na fig. 2). O processo de instalação do Gel é simples, porém após a instalação é necessário fazer a configuração da IDE, para que ela possa trabalhar com o SDK. Uma grande vantagem é que a configuração da IDE pode ser feita apenas uma vez, após a primeira instalação, depois que o Gel está instalado e configurado, basta copiar sua pasta para outros micros, sem a necessidade de fazer um novo processo de instalação e configuração, facilitando muito o processo de cópia desta IDE para outros computadores. O processo de configuração do Gel não será abordado neste artigo, pela grande quantidade de materiais na Internet que ensina a fazer isso, um bom tutorial de configuração do Gel pode ser baixado do site http://www.dukeduck.com.br.
Fig. 4 Interface da IDE Gel para desenvolvimento Java 2.5 Configurando o Gel para trabalhar com o J2ME. Para o desenvolvimento de aplicativos para celulares utilizamos uma API do J2ME chamado MIDP, que vem junto com o Wireless Toolkit. É necessário configurar o Gel para que recursos de auto-completar do código e précompilação sejam ativados para essa nova API. Adiciona-se o MIDP através do menu Tools Options, escolhendo a opção JDK no lado esquerdo e, em seguida, acessando a guia Classpath onde se adiciona novas API s. Clicando no botão Add File e incluindo o arquivo midpapi.zip que se encontra na pasta lib do Wireless Toolkit (WTK) estará configurando o acesso a API MIDP. Para confirmação pressiona o botão OK e pronto, o Gel já esta configurado para trabalhar com o desenvolvimento para celular. Fig. 5 Configuração do Gel para trabalhar com a API MIDP
2.6 Iniciando um Projeto Acesse o programa Wireless ToolKit pelo atalho chamado KToolBar que se encontra no menu de programas. Em seguida clica no botão New Project... e preencha o campo com o nome do seu projeto e o nome da classe principal do seu projeto, eles deverão ter os mesmo nome, no nosso exemplo o projeto se chamará OlaDukeDuck. Após clique em Create Project. A tela que aparece em seguida é utilizado para informar informações detalhadas do teu projeto, estas informações ficam disponíveis no arquivo.jad (frisando que um programa para celular se divide em dois arquivos, o.jar que possui o programa e o arquivo.jad que possui diversas informações sobre o projeto), não é interessante alterar essas propriedades, a não ser que seja realmente necessário, como colocar um ícone personalizado ou trocar a versão da MIDP. A maioria dos celulares suporta a versão 1.0 da MIDP, que é bem limitada, porém alguns modelos já suportam a MIDP 2.0, que possuí vários recursos de segurança como HTTPS e novos recursos multimídias, utilizadas principalmente para desenvolver jogos. No exemplo utilizado neste artigo serão utilizados somente recursos básicos do MIDP 1.0, para garantir a compatibilidade com a grande maioria dos celulares existentes hoje no mercado brasileiro. Após a confirmação no OK, o projeto será criado. Automaticamente é incluído um diretório dentro da pasta app, que se encontra no diretório do WTK, nesta pasta com o nome do projeto ficará localizado todos os recursos do aplicativo, conforme a figura abaixo: Projeto Criado ByteCode (.JAD e.jar) Bibliotecas Extras Imagens e recursos adicionais Código Fonte do aplicativo Fig. 6 Estrutura de diretório para o projeto OlaDukeDuck, bem como o conteúdo que deve ser incluído em cada pasta
2.7 Programa Proposto O programa proposto é bem didático, será uma formulário com um componente de texto (label) contendo a literal nome, uma caixa de texto (edit) para digitação da idade, e dois Command s: Sair e Detalhes, com a função de encerrar o aplicativo e exibir a tela de detalhe, na tela de detalhe apresentará um componente de texto longo (memo) para a digitação de uma grande quantidade de texto, nesta tela não haverá Command s. Abaixo é exibido as duas telas do aplicativo exibidas no emulador usando o layout genérico de celular. Fig. 7 Telas do aplicativo que será codificado no item 2.8 2.8 Codificando o Sistema Para a codificação do sistema, abra o editor de código Gel e seleciona a opção Java New Java File e grave o código fonte no diretório src do seu projeto, não esqueça que o nome da classe deve ser o mesmo utilizado na criação do projeto no WTK. Agora é só codificar, segue abaixo o código de um programa simples, que utiliza alguns componentes visuais, utiliza commands do celular e troca de tela.
Código 1 Programa com explicação de todas as linhas de código Package que possuí os componentes visuais da tela Package que tem o MIDlet, principal item do aplicativo Classe que herda do MIDlet e implementa os botões de Actions do celular Método acessado quando inicia o programa Formulário que será exibido na tela do celular Componente memo que será exibido na tela Mensagem que fica passando na tela (parte superior) Componente label do celular Componente edit do celular Comando Sair que será apresentado como action Comando detalhe que será apresentado Método chamado quando inicia o aplicativo O display obtém o controle da tela do celular Criação do Form que será exibido no display Criação da mensagem que será exibida Criação do Label com o Nome fixo Javaboy Criação da caixa de texto que contém a idade, sem conteúdo inicial, tamanho de 15 caractere e aceita somente caractere numérico Criação do Command para opção sair, com comando de Exit e prioridade 0 Criação do comando Detalhe, com comando de Item e prioridade 1 Adiciona o label no formulário Adiciona o edit no formulário Adiciona o Command sair no formulário Adiciona o Command detalhe no formulário Seta o interpretador de command para a classe Inclui no display o formulário para ser exibido Método acessado quando o programa é encerrado Seta o display da tela como nulo (sem tela) Notifica o celular que o aplicativo encerrou, devolvendo o controla ao aparelho Método acessado quando acontece pausa (por exemplo para atender uma ligação) Método que faz o tratamento dos botões de Ação Pergunta se a opção selecionado foi sair Seta o display da tela como nulo (sem tela) Notifica o celular que o aplicativo encerrou, devolvendo o controla ao aparelho Pergunta se a opção selecionada foi detalhe Cria um memo para digitação de detalhes, com conteúdo pré digitado Descrição, tamanho de 30 e aceita qualquer texto Inclui no display o memo para ser exibido
Após a codificação do programa, resta fazer a compilação, apesar de existir o recurso de compilação no Gel os arquivos.class serão gerados na pasta src junto com o código fonte, porém eles devem ser gerados na pasta classes. Para agilizar este processo a melhor alternativa é compilar o programa pelo WTK, clicando no botão Build, se existir erros de compilação, será apresentado na própria console do WTK, então é só voltar para o Gel, corrigir o erro, salvar, voltar para o WTK e voltar a pressionar o botão Build, até que a mensagem Build Complete apareça. 2.9 Executando o aplicativo no emulador O WTK dispõe do recurso para emular o aplicativo desenvolvido na tela do celular, porém existem poucos modelos de aparelhos, modelos adicionais podem ser conseguidos no site da empresa fabricante dos celulares, mesmo assim com os modelos básicos que vem junto com o WTK já é possível ter uma idéia de como o software irá se comportar. Para escolher o layout do aparelho onde será emulado o aplicativo selecione-o no campo Device e para rodar o aplicativo clica no botão Run. Aparecerá a tela de menu do celular para escolher o aplicativo, escolha a opção Launch e pronto, seu aplicativo já aparece no emulador, como na Fig. 7. Como sabemos, o poder de processamento do celular bem como sua conexão com a rede é bem menor de que qualquer computador, a redução destas velocidades podem ser feitas através da opção Edit Preferences... 2.10 Obfuscando o pacote Obfuscadores são softwares destinados a diminuir o tamanho dos pacotes e classes de programas Java, além disso, eles possuem recursos que evitam a engenharia reversa (obter o código fonte a partir do arquivo.class). Em programas desenvolvidos para celulares o obfuscador tem um papel importante, pois ele consegue diminuir o tamanho do aplicativo que serão instalado no celular, e como os recursos de memória são bem limitados neste tipo de dispositivo, todos os KB economizado faz uma grande diferença. Um bom obfuscador para o WTK é o RetroGuard que pode ser conseguido gratuitamente no site www.retrologic.com. Após baixar o arquivo retrologic.jar copie o mesmo para a pasta bin do WTK. Após este processo seu ambiente já está pronto para criar aplicativos obfuscados. Para gerar o pacote obfuscado acesse no WTK a opção Project Package Create Obfuscated Package. Ele gera na pasta bin do projeto um arquivo.jar e um arquivo.jad. Estes arquivos já podem ser copiados para o celular. 2.11 Copiando o aplicativo para o celular Esse processo depende muito do aparelho onde o software vai ser instalado, tem aparelhos em que é possível passar o aplicativo apenas através de WEB, neste caso via WAP, para fazer isso é necessário disponibilizar os arquivos.jad e.jar em um servidor WEB, e digita a URL no celular junto com o nome do arquivo.jad (Ex. http://www.dukeduck.com.br/j2me/oladukeduck.jad), outra forma é passar o programa via cabo, quando o aparelho dispõe deste recurso a grande vantagem é que não se paga nada para fazer a transmissão,
a desvantagem é que o cabo costuma ser vendido separadamente, além de ter um custo relativamente elevado e não é fácil encontrar estes cabos a pronta entrega. 3 CONCLUSÃO Este artigo mostrou recursos básicos para o desenvolvimento de aplicativos para celular, utilizando para isso o J2ME. Para que o celular rode este aplicativo é essencial que ele disponha da máquina virtual Java. Com essas informações é possível configurar todo o ambiente de desenvolvimento e fazer alguns programas bem simples, para se aprofundar mais no assunto existe uma grande quantidade de material na internet, no site http://www.dukeduck.com.br existe um tutorial mais avançado e bem didático de programação para celular. Este tipo de desenvolvimento é o segundo grande salto da tecnologia Java, o primeiro foi em 1995 com os Applets, o segundo é o desenvolvimento para dispositivos móveis que esta acontecendo atualmente. Com certeza é uma grande oportunidade para todos os programadores, sendo que se trata de uma tecnologia nova onde existe poucos profissionais aptos no mercado.