J2ME Polish: Desenvolvendo interfaces gráficas para aplicações JavaME
Ao final do artigo teremos condições de começar a utilizar as funcionalidades do J2ME Polish no desenvolvimento de interfaces gráficas em nossas aplicações.
Esse artigo faz parte da revista WebMobile edição 15. Clique aqui para ler todos os artigos desta edição<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
J2ME Polish – Desenvolvendo interfaces gráficas para aplicações JavaME
No desenvolvimento de uma aplicação, para qualquer que seja a plataforma, o programador tem que estar atento a alguns detalhes que serão cruciais para o sucesso do seu trabalho. Entre todas as questões que o desenvolvedor tem de dar atenção, cabe à interface gráfica uma atenção especial, porque ela é o cartão de visita de qualquer programa.
A interface de uma aplicação irá gerar a primeira impressão que o usuário terá do produto. Quando de bom gosto irá motivar a utilização do programa, do contrário poderá até mesmo ter um efeito improdutivo, visto que ela é capaz de desmotivar ou até complicar a execução de algumas tarefas por parte do usuário.
Muitos são os fatores que influenciam na criação de uma boa interface gráfica, o que faz com que esta não seja uma tarefa simples. Este é o motivo pelo qual, em algumas equipes de desenvolvimento, existem pessoas cuja função é tratar de dar 'cara' à aplicação. Para este grupo, em determinadas situações, caberá preocupação apenas com o aspecto visual do produto. Nesse modelo de organização, questões relativas à lógica de negócio acabam sendo destinadas a outra equipe.
No desenvolvimento de aplicações web, uma das formas de separar o trabalho da equipe que cuida da lógica de negócio do trabalho da equipe que cuida do visual da aplicação, é através de folhas de estilo ou arquivos .CSS (Cascading Style Sheets).
Folhas de estilos são arquivos que servem para definir a aparência de documentos escritos em uma linguagem de marcação, por exemplo, HTML ou XML. Estes arquivos são escritos em uma linguagem chamada CSS.
No caso do Java ME, o desenvolvimento da interface da aplicação fica muitas vezes preso ao código, já que precisamos utilizar elementos como TextField ou TextBox, ou até mesmo partir para uma estratégia de mais baixo nível, com o uso de canvas. Dessa forma, a situação em que o desenvolvedor cria o visual da aplicação sem ver o código fonte parece algo mais restrito às aplicações WEB.
Entretanto, existe um framework que permite uma melhor divisão no trabalho de desenvolvimento da interface gráfica de uma aplicação Java ME. Isso é possível porque com o uso desse framework a interface gráfica pode ser desenvolvida com o auxílio de folhas de estilo. Assim, é mais fácil dividir equipes para a criação da interface gráfica e para o tratamento da lógica de negócio.
O framework sobre o qual estaremos falando é o J2ME Polish.
Neste artigo desenvolveremos uma aplicação simples com este framework. Nossos objetivos serão desenvolver a interface gráfica da aplicação através de folhas de estilo e entender o conceito de pré-processamento.
No final do artigo teremos condições de começar a utilizar as funcionalidades do J2ME Polish no desenvolvimento de interfaces gráficas em nossas aplicações.
O J2ME Polish é um conjunto de ferramentas que visa auxiliar o programador a lidar com vários aspectos da interface gráfica na criação de aplicações para dispositivos de pequeno porte.
Vale lembrar que essa é uma tarefa um tanto ingrata na criação de aplicações para dispositivos celulares, tendo em vista que devido à variedade de modelos no mercado, existe uma grande diversidade de dimensões de tela. Assim, uma falta de atenção nesta etapa do desenvolvimento pode trazer surpresas desagradáveis quando a aplicação estiver sendo instalada em aparelhos de diferentes modelos.
O J2ME Polish conta também com ferramentas de construção (build tools). Essas ferramentas permitem que um único código de aplicação possa ser utilizado em aparelhos de diferentes marcas e modelos.
O J2ME Polish possui uma base de dados com mais de 300 dispositivos celulares que podem usar Java ME. Através dessas informações podem-se analisar as funcionalidades que um dispositivo pode suportar. Assim, essas informações podem ser utilizadas diretamente durante a fase de pré-processamento da aplicação, de forma que o código do desenvolvedor seja trabalhado para aparelhos com características diferentes.
O pré-processamento atua modificando o código fonte da aplicação antes da compilação. Dessa forma, o código fonte é modificado tendo em vista as características específicas de determinados aparelhos. Feito isso, com apenas um código o programador poderá atender as necessidades de mais de um aparelho, tornando a aplicação portável para diversos dispositivos.
Algumas vezes, para incluirmos soluções mais avançadas em nossas aplicações, acabamos fazendo uso de bibliotecas específicas de um determinado aparelho ou fabricante. Esta atitude acaba impossibilitando o uso de um mesmo código em aparelhos distintos. Em determinadas situações sendo necessário reescrever uma aplicação para que ela se adéqüe a outro aparelho.
Durante o desenvolvimento da nossa aplicação, abordaremos quatro pontos: a criação da interface gráfica; o uso de ferramentas de construção; o banco de dados de dispositivos; e analisaremos um pouco mais o trabalho de pré-processamento, para entender como este mecanismo pode nos ajudar a criar um código com maior portabilidade.
Como obter o J2ME Polish
O J2ME Polish pode ser obtido através do endereço: http://www.j2mepolish.org/download.html.
Esse conjunto de ferramentas é distribuído tanto sob a forma comercial, quando a sua utilização se dá para fins comerciais, como através de licença GPL.
GPL é o nome dado a Licença Pública Geral (General Public License), definida pelo projeto GNU e que impede do software desenvolvido sobre ela ser adicionado a projetos de software proprietários. Mais informações sobre a licença GPL podem ser obtidas no endereço http://www.gnu.org/licenses/gpl-faq.html.
No formato comercial, o J2ME Polish é distribuído sob três modalidades de licença. A single license, utilizada para o desenvolvimento de uma única aplicação. A enterprise license, utilizada para o desenvolvimento de um número ilimitado de aplicações, essa por razões claras é mais cara do que a primeira. Ambas as modalidades permitem ao desenvolvedor a venda de um número ilimitado de aplicações.
O J2ME Polish é distribuído ainda sob a developer license, uma licença gratuita que permite aos desenvolvedores vender suas aplicações. Ao assinar essa licença o desenvolvedor precisa registrar as aplicações que produzir. Ao fazer isso o vendedor está autorizando a Enough Software, companhia que desenvolveu o J2ME Polish (http://www.j2mepolish.org/company-enough.html) a também vender a sua aplicação. Do resultado dessa venda 60% do valor serão repassados ao desenvolvedor enquanto que 40% ficarão com a Enough Software. Cada aplicação que usa o J2ME Polish precisará ser registrada no Programa de Desenvolvedor Polish e o desenvolvedor deverá enviar à Enough Software as atualizações das aplicações que produzir.
Mais informações sobre as modalidades de licença em que é distribuído o J2ME Polish são encontradas no endereço http://www.j2mepolish.org/licenses.html. Nesta página estão disponíveis várias informações, como uma explicação a respeito de quando fazer uso da ferramenta através da licença GPL ou através de alguma das modalidades de licença comerciais.
Como instalar o J2ME Polish
Como já foi dito anteriormente, o J2ME Polish pode ser obtido no endereço http://www.j2mepolish.org/download.html.
Este Framework é disponibilizado na forma de um arquivo .jar. Ao obter esse arquivo o usuário poderá inicializar a instalação de duas formas. Uma delas é através de um duplo clique no arquivo, a outra é através de algum terminal, como o prompt do windows. Na segunda forma o desenvolvedor deverá digitar no terminal do seu sistema operacional o comando: java -jar j2mepolish-2.0-RC4.jar. Neste caso, j2mepolish-2.0-RC4.jar é a versão mais atual deste framework e também a versão que utilizamos no desenvolvimento deste artigo.
Ao adotarmos qualquer um dos procedimentos citados, será inicializado o programa instalador do J2ME Polish. A tela inicial do processo de instalação pode ser vista na Figura 1.
Figura 1. Primeira janela do instalador J2ME Polish.
Muito bem, demos o primeiro passo em nossa caminhada, seguiremos agora com a instalação do J2ME Polish. Neste ponto farei determinados alertas a respeito de alguns cuidados que devem ser tomados nessa tarefa.
Após apertarmos o botão Next, surgirá uma janela que pergunta se aceitamos as regras em que o programa está sendo distribuído. Caso aceite as regras marque a opção correspondente e siga para a próxima janela.
Na terceira janela o desenvolvedor deverá especificar o lugar onde a ferramenta será instalada e após isso partir para a próxima etapa da instalação.
Na quarta janela deve ser especificado o local onde está instalado o Wireless Toolkit, no campo wtk home, e emuladores que o desenvolvedor tenha instalado em seu ambiente nos campos com nomes específicos. Essa janela pode ser vista na Figura 2.
Figura 2. Especificando o local de instalação do Wireless Toolkit.
Na próxima janela do instalador deveremos especificar os pacotes que queremos que sejam instalados com o J2ME Polish. Para os usuários de Eclipse ou NetBeans, são disponibilizados pacotes de instalação para ambos. Dependendo de qual IDE o desenvolvedor utilize, ele poderá optar por um desses pacotes de integração. Neste artigo iremos realizar os nossos trabalhos no Eclipse, então, fizemos a opção pela instalação do pacote de integração do Eclipse, chamado Mepose. Esse procedimento pode ser visto na Figura 3.
Figura 3. Escolhendo o pacote de Integração com o Eclipse.
Feito isso, após apertarmos o botão Next, a instalação será iniciada e em instantes teremos o J2ME Polish instalado em nosso ambiente.
Após a instalação do J2ME Polish, precisaremos ajustar alguns detalhes no Eclipse. Antes de qualquer coisa cabe fazer um alerta àqueles que pretendem trabalhar com o Netbeans: instalem o pacote de desenvolvimento de aplicativos móveis, o Mobility Pack for CLDC/MIDP. Este pacote pode ser obtido em http://www.netbeans.info/downloads/index.php?rs=22&p=4.
A título de conhecimento, para este artigo estou trabalhando com o eclipse 3.2. Iremos agora instalar o plug-in Mepose e efetuar a configuração do eclipse.
Para instalar o plugin Mepose, devemos ir em: help | software updates | find and install... | search for new features to install. Ao seguirmos esse procedimento chegaremos a uma janela que contém alguns botões, devemos clicar em New remote site. Ao clicarmos nesse botão, aparecerá uma pequena caixa em que devemos colocar um nome para identificar o plugin que estamos baixando e a URL do lugar de onde este plugin será baixado, de acordo com a Figura 4.
Figura 4. Instalando o Mepose no Eclipse.
Ao fazer isso devemos clicar <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />em Finish. Em seguida veremos uma tela e nela devemos marcar os itens que serão instalados. No caso do Mepose, iremos marcar todos os itens e clicar em Next. Em seguida, será apresentada uma tela que nos perguntará se aceitamos os termos da licença. Caso estejamos de acordo clicamos novamente em Next. Por fim, aparecerão mais duas janelas, a primeira mostrará o pacote que será instalado, nesta janela devemos clicar em Finish. Logo após, aparecerá a janela de instalação, nela, clicamos em Install all. Pronto, a primeira parte da instalação do Mepose está concluída. Vamos partir agora para as configurações que precisamos fazer.
De acordo com o site do J2ME Polish, na página que nos auxilia a instalar o Mepose, http://www.j2mepolish.org/docs/mepose-install.html#installdetails, devemos primeiramente ir em window | preferences | java | debug e desmarcar a opção "Suspend execution on uncaugt exceptions", como podemos ver na Figura 5.
Feito isso iremos indicar o lugar onde estão instalados o nosso Wireless Toolkit e nossos emuladores, caso tenhamos. Neste artigo utilizaremos apenas o Wireless Toolkit. Para fazermos isso, devemos ainda na janela preferences, escolher a opção j2me polish e dentro dela a opção installation. Na janela que irá aparecer, é preciso informar o local onde estão instalados o J2ME Polish e o nosso Wireless Toolkit (ver Figura 6).
Figura 5. Configurando o Mepose no Eclipse – I.
Figura 6. Configurando o Mepose no Eclipse – II.
Seguindo estes passos terminamos de fazer a configuração do Mepose no eclipse e, conseqüentemente, a instalação do J2ME Polish.
Agora que instalamos o J2ME Polish podemos começar a criação do nosso projeto no eclipse. Nosso projeto irá consistir em um simples controle de estoque no qual podemos cadastrar um item e sua quantidade e em seguida listar todos os itens cadastrados.
O primeiro passo para criar um projeto J2ME Polish é acessar New ? Project ? Other ? Java, escolher a opção J2ME Polish Project e então clicar em Next. Feito isso, veremos uma janela que solicita o nome do projeto e um comentário a cerca do mesmo. O comentário é algo facultativo, entretanto, o nome do projeto é opção obrigatória. Essa janela pode ser vista na Figura 7.
Figura 7. Criando Um projeto J2ME Polish.
Clicando em Next, teremos uma janela na qual devemos especificar o lugar onde estão instalados o J2ME Polish, o Wireless Toolkit, e algum simulador que venhamos a utilizar. Essas opções já foram informadas no momento da configuração do Mepose, portanto, normalmente os campos onde estas informações devem ser colocadas já vêm preenchidos, como pode ser visto na Figura 8.
Figura 8. Criando um projeto J2ME Polish.
A seguir devemos informar as características do dispositivo que iremos utilizar. Neste caso informamos que ele usa MIDP 2.0 e CLDC 1.1. Também informamos qual o simulador que utilizaremos. Neste artigo faremos uso de um simulador do Wireless Toolkit (observe a Figura 9).
Figura 9. Definindo o dispositivo que iremos utilizar em nosso artigo.
Por fim, como padrão do eclipse, é mostrada uma janela que informa que os arquivos .java ficarão em uma pasta chamada src e os arquivos .class ficarão em uma pasta bin. Na janela apresentada na Figura 10, precisamos apenas clicar em Finish.
Figura 10. Criando um projeto J2ME Polish – Final.
Com o projeto é criada uma estrutura de pastas que já conta com o local onde colocamos os recursos do projeto, como o arquivo .css que utilizaremos no desenvolvimento de nossa interface gráfica. O projeto também nos fornece um arquivo build.xml, através do qual será automatizado o processo de build da aplicação. O J2ME Polish faz uso de um framework chamado ant para tal tarefa.
Agora que criamos um projeto, podemos dar início ao desenvolvimento da nossa aplicação. Iremos iniciar esse processo organizando a automatização do ciclo de build da aplicação. Este ciclo consiste nas tarefas de pré-processamento, compilação, obfuscação, preverificação, empacotamento da nossa aplicação e, por fim, a chamada ao simulador para que seja visto o seu funcionamento.
Como já comentamos anteriormente, o nosso projeto, gerado pelo plugin Mepose, já vem com uma determinada estrutura de pacotes e um arquivo build.xml. Neste arquivo, estão as instruções relativas à maneira como ocorrerá o processo de build da aplicação.
O build.xml gerado pelo Mepose é bastante intuitivo, visto que ele dispõe de muitos comentários que permitem desenvolver a aplicação de acordo com o interesse do programador. Além desses comentários, ele vem com uma boa quantidade de código que serve para demonstrar as funcionalidades do J2ME Polish. Em nosso artigo iremos eliminar alguns desses excessos para que o build.xml fique de acordo com as necessidades da nossa aplicação.