Esse artigo faz parte da revista Java Magazine edição 60. Clique aqui para ler todos os artigos desta edição

AN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: red; FONT-FAMILY: Verdana; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">

ice" />

Nova API traz para o Java ME interface parecida com o Swing

Durante o Java One 2008 a comunidade ME ganhou de presente o anúncio de uma biblioteca que promete revolucionar o “acabamento” dos aplicativos Java ME

De que se trata o artigo:

A biblioteca LWUIT (Lightweight User Interface Tools) é uma API para facilitar e melhorar o visual de aplicações Java ME. Ela oferece diversos componentes visuais, além de suporte a temas, transições, animações, internacionalização e muito mais.

 

Para que serve:

Facilitar o desenvolvimento de aplicações Java ME com uma interface gráfica melhor elaborada, mais atraente para o usuário e bastante simples de programar, principalmente se comparada à utilização de Canvas.

 

Em que situação o tema é útil:

Quando se deseja criar uma interface amigável e em menos tempo de desenvolvimento, o LWUIT é uma ótima opção. Além de ajudar com a compatibilidade entre diversos dispositivos, já que a biblioteca faz todas as adaptações automaticamente.

 

LWUIT: “Swing” para Java ME:

Ao invés de gastar muito tempo desenhando (literalmente) telas em Canvas ou utilizar telas mais “pobres” por ser mais rápido o desenvolvimento, utilizando LWUIT o desenvolvedor pode criar telas mais ricas e em um curto espaço de tempo.

O LWUIT traz também alguns recursos que não são nativos no Java ME, mas melhoram muito a usabilidade e a qualidade da interface gráfica, como por exemplo: temas, utilização de CSS, transições e internacionalização.

Além disso, possui uma licença que permite a utilização da biblioteca mesmo em aplicações fechadas e/ou comerciais. E também, caso algum componente não se encaixe da forma ideal à sua aplicação, é possível criar componentes ou entender melhor o seu funcionamento, pois o código é aberto.

 

Durante o Java One deste ano a comunidade ME foi presenteada com o anúncio de uma biblioteca para criação de telas em Java ME. Mesmo que ainda seja cedo para saber se ela será bastante utilizada, nota-se que a colaboração para a melhoria da qualidade dos aplicativos móveis em Java já é algo real.

A parte de interface com o usuário (principalmente se tratando de CLDC) sempre foi um ponto fraco e bastante criticado, pois se a opção é utilizar algo simples e que gaste pouco tempo de desenvolvimento, a qualidade da tela é pobre em detalhes e sem possibilidades de customização. Se a opção é utilizar um Canvas ou um CustomItem o tempo de desenvolvimento é mais alto e se torna muito mais complicado e minucioso.

E ainda mais agora, com a chegada de concorrentes de peso para o Java ME como o Google Android e o iPhone (com seu SDK oficial), que possuem uma ótima qualidade de interface, o Java ME precisava realmente de algum componente que o colocasse em pé de igualdade com os outros.

O projeto LWUIT

LWUIT é uma sigla para LightWeight User Interface Toolkit. Como o nome já diz, é uma biblioteca que foi elaborada para ser a mais leve possível e comprometer o mínimo da aplicação final, já que você terá que incluir o jar da biblioteca na sua aplicação para poder ter todas as funcionalidades e também distribuí-la. Ela foi pensada e baseada no Swing, inclusive a forma de utilizar alguns componentes é bem parecida.

O projeto está hospedado no Java.net e possui licença GPL v2.0 com a Classpath Exception, ou seja, desde que você apenas inclua e use a biblioteca na sua aplicação (não havendo modificação nas classes da própria API), você não precisará tornar sua aplicação aberta (mesma licença utilizada pela Sun para abrir o código do Java SE e Java ME). Por enquanto o código ainda não está disponível, mas de acordo com anúncios nos blogs dos engenheiros do projeto, isso deve ocorrer logo.

Enquanto isso, já é possível baixar o pacote binário da biblioteca e utilizar em suas aplicações. Além disso, no site do projeto também é possível encontrar o javadoc completo, um tutorial criado por um dos engenheiros do projeto, um guia para desenvolvedores e também screenshots da aplicação demo, como as imagens apresentadas na Figura 1.

 

 

Figura 1. Screenshots da aplicação demo no site do projeto

Principais “Concorrentes”

A idéia de facilitar e melhorar a qualidade das interfaces não é novidade. Muitas bibliotecas e tecnologias foram criadas, seja através de JSRs como bibliotecas de terceiros e da própria Sun.

Uma opção alternativa ao LWUIT, que tem o mesmo modo de utilização, é o J2ME Polish da empresa alemã Enough Software. Além do suporte à parte visual, essa biblioteca também oferece suporte à internacionalização, persistência, RMI/RPC, entre outras. Para aqueles que se interessaram e desejam utilizar, a única ressalva é em relação à licença, pois além da GPL (sem Classpath Exception) eles também possuem opções de licença comercial para que você possa utilizar em sua aplicação comercial.

Além de utilizar bibliotecas de terceiros que causam overhead em sua aplicação, há também a opção de se utilizar SVG (Scalable Vector Graphics) para os dispositivos que possuam suporte à JSR 226 (Scalable 2D Vector Graphics API for J2ME). Gráficos SVG são independentes de resolução, facilitando adaptar as GUIs a telas de qualquer tamanho. Um ponto positivo da JSR 226 é que o seu uso não implica em aumento do tamanho do JAR da sua aplicação, já que você utiliza recursos da própria plataforma. O ponto negativo e principal limitador é que imagens SVG são baseados em XML e precisam ser renderizadas, o que exige algum cuidado na programação para evitar mau desempenho em alguns dispositivos.

Outra tecnologia que promete balançar o mundo dos dispositivos móveis é o Java FX Mobile. O seu anúncio (durante o Java One 2007) provocou muitos suspiros e dúvidas, principalmente quanto ao rumo do próprio Java ME em si. Porém, um ano se passou e ainda não temos nada de concreto quanto à parte móvel do FX. Essa tecnologia promete trazer uma rica interface com o usuário além de portabilidade e compatibilidade entre aplicativos escritos utilizando-se FX em geral, e não apenas mobile.

Principais Funcionalidades

Ao incluir a LWUIT em sua aplicação, você terá a melhoria de alguns componentes já “conhecidos” no Java ME (como Forms, Lists, etc.) e também novas possibilidades que irão trazer facilidades aos usuários da sua aplicação.

As principais funcionalidades são:

...

Quer ler esse conteúdo completo? Tenha acesso completo