logotio LWUIT

Recentemente estive fazendo alguns testes com o Lightweight User Interface Toolkit (LWUIT), uma API da SUN/Oracle para substituição da antiga LCDUI do Java ME. Atualmente ela encontra-se na versão 1.3 e seus componentes serão utilizados como base para a construção de interfaces gráficas no Ginga-J, que é middleware onde irão rodar as aplicações para TV Digital no Brasil.

Não irei falar muito sobre LWUIT agora. Além de meu tempo estar meio curto, gostaria de falar sobre ele aplicado mais especificamente à TV Digital, algo que pretendo fazer em artigos futuros. Para mais informações sobre o LWUIT, dê uma olhada nos links no fim deste artigo que irão falar melhor do que eu sobre ele.

Desses primeiros testes que realizei nasceu um penqueno aplicativo bem simples, o Flex Mobile, que serve para indicar a escolha entre álcool ou gasolina na hora de abastecer seu carro. Ele não está completo, mas encontra-se usável.

Vantagens e Desvantagens

LWUIT lembra muito o SWING. É bastante fácil desenvolver interfaces gráficas utilizando esse framework. A seguir algumas vantagens e desvantagens que pude perceber ao utilizá-lo:

Vantagens:

Melhorias a alguns componentes já existentes:

  • Algumas classes foram completamente reformuladas como List e Form por exemplo. Algumas outras foram substituídas ou extintas como a classe StringItem.

Suporte a Touch Screen:

  • Aplicações feitas em LWUIT são suportadas por dispositivos equipados com telas sensíveis ao toque. É algo que o framework faz sozinho.

Transições de telas animadas:

  • Algo bastante fácil de configurar e que deixam sua aplicação com um visual bastante legal. Algumas dessas transições lembram muito as utilizadas pelo Gnome (interface gráfica para Linux).

Botões como componentes nativos:

  • Nada mais de ter que fazer gambiarras com a classe StringItem ou ter um enorme trabalho em desenhar botões “de verdade” utilizando a classe Canvas. Em LWUIT  existe a classe Button que é praticamente igual a classe Button do SWING.

Suporte a temas personalizados:

  • Uma das melhores caracteríscas do LWUIT na minha opinião. Você pode personalizar toda a parte de UI em sua aplicação, desde a tela de fundo até componentes como SoftButton e Menus, de maneira simples e fácil. Uma mesma aplicação pode ter suporte a vários temas sem muito esforço.

ResourceEditor:

  • O ResourceEditor é um pequeno aplicativo que acompanha o framework. Ele é um aplicativo que ajuda bastante na criação de temas de forma visual. Além de criar temas através dele é possível importar imagens, animações, arquivos SVG, datasources e gerar um único arquivo de extenão .res, que pode armazenar todos os recursos do projeto e é acessado de maneira bastante simples por toda a aplicação.

Layouts:

  • Utiliza o mesmo conceito de Layouts do SWING para organização dos componentes visuais em um container. Os layouts disponíveis são: BorderLayout, BoxLayout, FlowLayout, GridLayout, GroupLayout, Coordinate Layout e Table Layout. Quem já os utilizou SWING não irá estranhar nenhum dos nomes citados anteriormente.

TabbedPane e Dialog:

  • As famosas Abas e caixas de dialog agora estão disponíveis também em Java ME através dos componentes TabbedPane e Dialog, respectivamente.

3D:

  • Suporte a 3D através da M3G (Scene Graph or Immediate Mode 3D API).

Internacionalização e Localização:

  • Suporte a Internationalization (I18N) e Localization (L10N).

Personalização Flexível

  • A personalização de temas completos e/ou componentes isolados pode ser feita através do ResourceEditor, programaticamente ou através de ambos.

Desvantagens

Tamanho final da aplicação tende a ficar maior:

  • Algumas aplicações tendem a ficar um pouco (ou muito) pesadas e consequentemente grandes

Dispositivos mais fracos não rodam bem aplicativos feitos em LWUIT:

  • Mesmo diminuindo os recursos utilizados, como o tamanho dos temas e outros recursos, alguns celulares ainda não irão conseguir rodas aplicativos feitos em LWUIT de maneira satisfatório, como aconteceu com meu Motorola W388. Já em um SonyEricsson W910i consegui rodar os exemplos fornecidos no site do projeto e um pequeno aplicativo que fiz, o Flex Mobile (que irei falar em seguida), de maneira bastante satisfatória.

Flex Mobile

Flex Mobile é um aplicativo bem simples que indica se você deve abastecer com álcool ou gasolina. Simplesmente digite o preço do litro dos combustíveis, sem vírgula, no local indicado e ele sugere qual combustível utilizar.

Ele é OpenSource e o site do projeto é: http://sourceforge.net/projects/flexmobile/. Lá você irá encontrar os fontes do aplicativo (que ainda necessitam de uma última refatoração) e um .jar no ponto para ser instalado no seu celular.

Ele ainda está em uma versão beta, necessitando de algumas melhorias em relação aos botões de ação e algumas coisinhas a mais que dependem de testes em outros dispositvos. Caso queiram testar o aplicativo sintam-se à vontade. Surgindo alguma dúvida ou sugestão podem mandar um email para mim ou postar um comentário neste artigo que estão lendo. Sugestões são sempre bem-vindas.

Algumas das características a serem consideradas antes de rodar o aplicativo:

  • Configurado para rodar em dispositivos com display de 240×320 pixels.
  • O dispositivo deve ter suporte a imagens de fundo.
  • O dispositivo deve suportar a CLDC 1.1 e MIDP 2.0 (ou MIDP 2.1)

O aplicativo foi testado em um SonyEricsson W910i, onde rodou sem nenhum problema.

Conclusão

LWUIT é uma boa API para o desenvolvimento em Java ME. Lembra muito o SWING, diminuindo muito a curva de aprendizagem desse framework. Mesmo não resolvendo por completo o problema de um mesmo aplicativo não funcionar exatamente igual em dispositivos de diferentes fabricantes, arrisco a dizer que ele resolve 90% desse problema. Recomendo a utilização desse bom framework Java ME caso não queira usar a classe Canvas diretamente.

Links

LWUIT site project: https://lwuit.dev.java.net/

Shai’s Java & LWUIT blog: http://lwuit.blogspot.com/

Indrodução ao LWUIT – site da Oracle/Sun: http://java.sun.com/developer/technicalArticles/javame/lwuit_intro/

Flex Moblie: http://sourceforge.net/projects/flexmobile/

Anúncios