Linux, Open-source, Programação e Produtividade

Algumas impressões de JavaME

Luiz em 06/10/2008


Recentemente desenvolvi, em parceria com o Rafael, autor aqui do blog, uma aplicação simples em Java para celular. A aplicação é um jogo de batalha naval, que pode ser jogado contra o computador ou contra outro celular, via internet. Vou comentar, aqui, algumas dificuldades que encontrei pelo caminho.

O JavaME foi feito para ser portável e leve. Leve ele é, mas e portável? Fiquei sabendo que era necessário testar a aplicação em diversos modelos de celular para certificar o funcionamento do aplicativo em todos eles. Isso fica mais fácil com os emuladores, mas esses ainda não são 100% confiáveis.

Esse nem foi um problema tão grande para mim. O objetivo do meu projeto era simplesmente desenvolver uma aplicação que rodasse no celular de visor colorido padrão da Sun no emulador. O maior problema foi a falta de recursos do JavaME (como já havia sido avisado por quem nos deu o projeto). Tudo bem que o JavaME tem que ser leve. Mas que sentido faz ele ter, nas classes padrão, a classe Hashtable e não ter uma simples LinkedList? E por que não tem reflection? E por que a String está tão jogada de lado?

Outra coisa que me incomodou, também, foi o grande acoplamento que as classes de visualização te impõem. A classe GameCanvas, por exemplo, é responsável pelo desenho na tela e por parte dos controles (a outra parte você pode por em outra classe). Se eu quiser mudar a camada de visualização da minha aplicação (o que podia ocorrer no nosso caso, já que nosso jogo podia ser no modo texto), vou ter que mudar tudo? E por que não tem uma classe unicamente para o tratamento da entrada?

Agora, alguns elogios: foi bem fácil fazer uma interface gráfica com as classes do sistema. O JavaME já vem com classes para desenho de sprites e múltiplas camadas de imagem, e os sprites contam até com detecção de colisão entre si. Bem mais fácil do que fazer interface para Desktop.

Creative Commons License
Algumas impressões de JavaME de Luiz está licenciado sob Creative Commons License.