Pesquisa personalizada

2005/04/30

O melhor dos mundos! Java para a Série 60 da Nokia com NetBeans

Guia Rápido de Programação Java para a Série 60 da Nokia

Índice

Introdução - História da Busca da Solução

Recentemente estive buscando soluções Java para o desenvolvimento de aplicativos para dispositivos handhelds como Palms, PocketPcs e celulares.Instalei uma porção de IDEs com esse intuito e testei cada uma delas. Este artigo é fruto do resultado de uma delas e essa experiência positiva que descrevo aqui. Pois me surpreendeu saber que das ferramentas que utilizei somente o NetBeans foi capaz de rodar sem complicações o teste simples que propus.Espero ajudar a outros desenvolvedores que passem por situação semelhante.

Ao pesquisar uma solução de desenvolvimento para J2ME que fosse simples, rápida, gratuita e eficiente, eu me deparei com três principais ferramentas. São elas:

Ironicamente, só usei o NetBeans após ter testado todas as outras. Inclusive testei soluções que não listo acima, por não achar que sejam relevantes ou de maior utilidade. Inicialmente eu havia pensado que o NetBeans não estava preparado tão bem quanto seus concorrentes para trabalhar J2ME. Pensava que as outras fossem melhores e desconhecia a existência do Mobility Pack 4.0 para NetBeans. Então, antes, testei o WebSphere e depois o JBuilder.

Ao testar o WebSphere tive alguns problemas de configuração de variáveis de ambiente e conflitos com workspaces. Problemas que me demandaram muito tempo até que eu rodasse por muitos lugares e descobrir que todos esses problemas que tive, estavam bem documentados no releasenotes.txt que acompanha o WSDD. Após resolver os problemas com o WebSphere consegui fazer rodar os MIDlets, mas fiquei muito decepcionado com a complicação da configuração do ambiente e a lenta velocidade do linker da IBM. Para depurar, o WebSphere também não é bom. Ele é lento! Muito lento! Chega a ser antiprodutivo para quem compila e depura muito. Em contrapartida, o WSDD já vem com tudo que é necessário para desenvolver para diversos tipos de handhelds, inclusive com JVMs especificas.

As melhores JVMs que já experimentei são, sem dúvida, as JVMs da IBM para handhelds. Elas são estáveis, respeitam as especificações J2ME e são relativamente rápidas, além de terem o menor custo da categoria JVMs não-gratuitas. Para ter uma idéia, uma JVM para um Pocket PC iPAQ está por volta de USD$ 5 por dispositivo instalado. Uma boa notícia é que essas JVMs, normalmente acompanham o WSDD. Como o WSDD Trial tem duração de 90 dias, isso dá tempo suficiente para testar sua solução na JVM e decidir se compra ou não. Outra vantagem dessas JVMs é que você pode comprá-las unitariamente e diretamente do bom site (mas não menos monopolista) Handango.

O saldo do WSDD foi negativo, mas fiquei satisfeito com as JVMs da IBM. Atualmente estou recomendando usar o NetBeans como plataforma de desenvolvimento para J2ME e usar no dispositivo handheld JVM da IBM. Isso é receita para não ter problemas.

Quanto ao JBuilder só tenho algo a dizer: Nem Tente! Fique com o WebSphere ou preferencialmente o NetBeans.

Como resultado do sucesso que tive com o NetBeans, publico então um tutorial para quem está querendo começar a desenvolver para J2ME e está com dificuldade de achar um caminho. Lembro que este tutorial é dedicado para dispositivos celulares compatíveis com a Série 60, podendo ser da Nokia ou não. No entanto, eu fiz o teste em um Nokia 3650 e não posso garantir que isso fucionará outro dispositivo.

Ainda oportunamente, explico ao programador que não sabe o que é um MIDlet, seu significado. Um MIDlet é uma aplicação Java, regulado pelo perfil MIDP da especificação J2ME e é composto de um arquivo Jar contendo ao menos uma classe. A classe principal de um MIDlet é uma classe derivada de javax.microedition.midlet.MIDlet. Essa classe especifica alguns métodos que devem ser sobreescritos para prover a funcionalidade esperada de uma aplicação do tipo MIDlet. Os principais métodos são: startApp(), pauseApp(), and destroyApp(). No entanto, nem todos precisam ser sobreescritos. Geralmente o arquivo JAR é acompanhado de um arquivo JAD - Java Application Descriptor. Este é um arquivo simples que contém poucas linhas de texto que descrevem o contéudo do arquivo JAR. O objetivo é que o dispositivo possa saber informações acerca do JAR antes dele ser baixando, poupando com isso, a escassa banda de rede geralmente disponível para esses dispositivos. Caso deseje sabar mais sobre os MIDlets, leia "MIDlet Life Cycle". Sabendo disso, pode-se iniciar o tutorial.

Labels: ,

2005/04/27

IBM J9 VM: "Impossível carregar jclfoun10_22"

Recentemente eu fiz o download da versão trial do WSDD - Websphere Studio Device Developer - para brincar um pouco programando para meu PocketPC. Ao instalar a JVM em meu Pocket, eu fui surpreendido com um erro chato que empedia o J9 de rodar adequadamente. Relato a seguir o problema que tive e sua solução.

O WSDD vem com o WEME - WebSphere Everyplace Micro Environment - que basicamente contém uma coleção de JVMs. São diversas JVMs para diversos tipos de handhelds, de Palm Tops a telefones celulares, todas acompanhando o WEME.

J9 com o problema da DLL.
J9 funcionando.

Para meu Pocket PC, um HP iPAQ h5550 com o Windows Mobile 2003, há duas diferentes implementações diferentes de JVMs e suas respectivas bibliotecas: MIDP 2.0 (CLDC) e Personal Profiler 1.0 (CDC). Eu instalei as duas, mas somente a primeira funcionou de imediato. Para que a segunda funcionasse adequadamente, eu tive que ralar um pouco até descobrir o problema.

O problema ocorria quando tentava executar o \Arquivos de programas\J9\PPRO10\bin\j9.exe em meu PocketPC. Este é o arquivo o que fornece acesso a JVM J9. A mensagem de erro era:

(W)J9VM0011 Impossível carregar jclfoun10_22: Não foi possível localizar o módulo especificado.

(E)EXEX0013 Erro interno de VM: Falha ao criar Java VM

(I)EXEX0014 Executar \Arquivos de programas\J9\PPRO10\bin\j9.exe -help para uso
Veja que o J9 reclama da DLL jclfoun10_22. Eu procurei essa DLL e não encontrei no pacote de instalação do J9. No entanto, ao navegar no diretório PPRO10\bin que está dentro do diretório de instalação do J9 no PocketPC, eu localizei um arquivo que tem nome semelhante ao reclamado. Se trata do jclppro10_22.dll. O que em seguida eu fiz, foi renomear este arquivo para jclfoun10_22.dll e para minha felicidade funcionou!
Então se você também estiver passando por este problema, tente renomear esse arquivo.

Após ter escrito a primeira versão desse texto (que se passa acima), verifiquei no guia de instalação do J9 PP, que há um parâmetro que pode ser passado para o J9 via linha de comando. É o parâmetro -jcl:[config] que especifica qual DLL JCL será utilizada (qual JNI nativa será utilizada pelo código Java de biblioteca de classe). Abaixo reproduzo trecho do próprio guia que trata do parâmetro:

Se você utilizar o -jcl:<config> sem indicar um -Xbootclasspath: <caminho>, então o valor para o -Xbootclasspath: <caminho> será assumido (%JAVAHOME%/lib/jclLibraryName/classes.zip). No entanto, se as bibliotecas de classe forem armazenadas em um local que não seja padrão, você deverá incluir o -Xbootclasspath: <caminho> para direcionar a VM para o arquivo classes.zip.

Nota: Se o -Xbootclasspath e as opções -jcl da VM forem incompatíveis, a VM gerará um erro "Biblioteca de classe incompatível".

Os argumentos possíveis de biblioteca são:

  • -jcl:foun10 (biblioteca de classe jclFoundation10)
  • -jcl:ppro10 (biblioteca de classe jclPPro10)
  • -jcl:midp20 (biblioteca de classe jclMidp2.0)
  • -jcl:max (biblioteca de classe jclMax)
  • -jcl:rm (biblioteca de classe jclRM)

Nota: Nem todas estas opções estão disponíveis para todas as plataformas.

Labels: ,

2005/04/23

O retorno (novamente...)

Já faz algum tempo que não posto nada no blog. De fato andei um pouco ocupado (ou desocupado, talvez) com alguns problemas pessoais e profissionais. Tive alguns projetos fracassados, pouco tempo e vontade para ir a faculdade, clientes me pressionando, bem como, os bancos e demais credores. Vi o tempo rolar a minha frente e dias infrutiferos se passarem. Dias que não sei o que fiz, só sei que poderia ter feito melhor!

Acho que estive um pouco depressivo. Felizmente tenho ainda alguns bons amigos que fazem seu papel. Minha família também tem sido fundamental para aguentar os tempos de tristeza que se abateram sobre mim. E ai de mim se não conhecesse o Daime, provavelmente já estaria em outra, não teria nem mesmo visto a virada do milênio...

Felizmente, graças a tudo isso, a Deus e novamente ao trabalho que voltei a desenvolver com o Vegetal, estou bem. Vou ficar melhor ainda. E dessa vez espero que não volte a passar por isso. Depressão é horrível! Eu estou fora dessa morbidez depressiva. Quero mais é ser feliz! Ter sucesso, prosperidade e ter condições de desculpar e pedir perdão a todos que for necessário.

Voltei à ativa. Voltei a trabalhar e vou correr atrás do que não está perdido e batalhar por um presente e futuro melhor.

Graças a Deus eu estou de volta e vou começar com um pequeno tutorial sobre como derrubar um servidor Interbase ou Firebird. :)

Labels: ,