Como tem muita gente tentando rodar aplicativos em Java no N900, aqui vai a forma de instalar a máquina virtual no aparelho.

Antes de qualquer coisa, vale falar um pouco sobre as versões do Java que existem. No nosso caso, vamos considerar apenas 2: o Java SE e o Java ME. O SE é o standard edition. É aquele que as pessoas possuem em seu computador. O ME é o micro edition, que é uma versão reduzida, utilizada em aparelhos mais simples.

Todos os celulares que possuem Java, possuem a versão ME.

A versão que instalaremos é outra, chamada de embedded. Ela é basicamente a versão SE compilada para o processador utilizado no N900. Para rodar aplicativos desenvolvidos para Java ME, há alguns passos adicionais, explicados aqui também.

Só um detalhe extremamente importante: o plugin para o navegador NÃO funciona (ou pelo menos até agora não consegui)! Portanto se a sua intenção ao instalar o Java é poder acessar sites que usam applets em Java (como por exemplo o site do Banco do Brasil), esqueça! Não vai adiantar nada!

Importante também salientar que essa versão de Java é uma versão de avaliação, e diz que só funcionará por 90 dias. Após esse período, é necessário instalá-lo novamente. Claro que muito provavelmente basta apagar algum arquivo oculto que ele cria quando executado pela primeira vez, ou qualquer coisa assim….isso, claro, se efetivamente deixar de funcionar (o que talvez nem aconteça).

A primeira coisa é baixar a máquina virtual (esse é o link direto, mas como a Sun costuma muito mudar os links para o seu site, e mesmo sendo a Sun agora da Oracle, este é o link para a página inicial do Java SE for Embedded, que é a versão a ser instalada).

Na página você encontrará, no momento em que escrevo este texto, 5 opções de download! A correta é a versão para ARMv6. Para essa plataforma, há 3 opções…a que nos interessa é a versão headful. Pelo que entendi, a versão headful é a mais completa, e conta com suporte a Swing, AWT, Java 2D e o plug-in (para o navegador…que não funciona).

Portanto, é fácil decidir qual é o arquivo: é o ARMv6 headful (o que neste momento significa ser a terceira opção da lista). Ele pode ser baixado no próprio N900 ou num computador, tanto faz. O importante é, depois de baixado, jogar o arquivo pro N900 (para todos os efeitos, vou considerar que jogou o arquivo no diretório “MyDocs”…também conhecido como “/home/user/MyDocs”).

Todos os passos a seguir deverão ser feitos como root. Abra o terminal do N900 ou conecte-se via SSH. E digite estes comandos:

cd /opt
mkdir java
cd java

Esses comandos fazem algo bem simples: criam um diretório de nome “java” em “/opt”…dessa forma teremos os diretório “/opt/java”. Em “/opt” é onde são instalados os programas por padrão. Esse diretório está dentro da partição de 2GB. Então não há com o que se preocupar em relação ao rootfs.

Agora vamos descompactar o arquivo baixado da Sun/Oracle:

tar xvzf <caminho do arquivo>

Se jogou o arquivo no diretório comentado antes, e baixou o mesmo que eu, a linha deve ser esta:

tar xvzf /home/user/MyDocs/ejre-1_6_0_10-ea-b39-linux-armv6-vfp-eabi-min-eval-30_jul_2009.tar.gz

Ao dar o comando “ls”, deve ser mostrada a existência do diretório “ejre1.6.0_10”. Agora vamos alterar as permissões do diretório e de todos os seus arquivos para evitarmos problemas futuros:

chown -R root:root ejre1.6.0_10

E agora vamos criar um link simbólico em outro diretório, para que o Java possa ser acessado de qualquer lugar que estiver:

ln -s /opt/java/ejre1.6.0_10/bin/java /usr/bin/java

Finalmente, vamos testar!! Digite “java -version”, e deve aparecer isto:

Java SE Embedded 90 Evaluation Version
Use the command: "java -version" to view days remaining in evaluation period

java version "1.6.0_10-ea"
Java(TM) 2 Runtime Environment, Standard Edition for Embedded (build 1.6.0_10-ea-b39)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode)
Evaluation version, 90 days remain in evaluation period

Se digitar “java -version” de novo, deve aparecer apenas isto:

java version "1.6.0_10-ea"
Java(TM) 2 Runtime Environment, Standard Edition for Embedded (build 1.6.0_10-ea-b39)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode)
Evaluation version, 90 days remain in evaluation period

Isso significa que o Java está instalado!! E pode rodar aplicações feitas para o desktop ali. Estas duas telas são de um programa que eu escrevi há um tempo atrás, para auxílio num jogo que já não existe mais. Ele é totalmente escrito em Java. Como dá pra notar, há alguns probleminhas….a segunda imagem por exemplo seria de uma janela popup.

Mas mesmo assim, é utilizável.

Agora vamos instalar o necessário para rodar aplicações feitas para Java ME. O passo é bem simples: vá no site do MicroEmulator, seção “releases”, dentro de “downloads” (no menu à esquerda), e baixe a última versão (neste momento, a 2.0.4).

Descompacte o arquivo. O que nos interessa é o “microemulator.jar”. Porém o conteúdo do diretório “lib” pode ser necessário (são bibliotecas que um ou outro programa podem precisar). Para teste, eu usei um joguinho bem simples. Eu só preciso do “.jar”.

Para rodar o emulador, vá até o diretório onde copiou o arquivo “microemulator.jar”, no N900, e digite este comando (não é necessário ser root…aliás, é até recomendável que não seja):

java -jar microemulator.jar

As imagens a seguir ilustram o processo de abrir um programa e executá-lo.

Como dá para perceber claramente, não é uma maravilha rodar aplicativos Java ME no N900. Talvez existam formas de deixar a tela melhor (como aumentar o zoom e usar o programa em modo retrato).

Eu tentei rodar um joguinho 3D, e não tive muito sucesso (reclamou da falta de classes). Talvez seja possível encontrar essas dependências pela internet…mas como isso não é assunto do post (e tampouco um interesse real meu), deixo para cada um que precise fazer o trabalho! 🙂

Para facilitar um pouco a vida de alguns, disponibilizo este script que se preocupa de fazer as bibliotecas que estão no diretório “lib” visíveis para o Java.

Copie o diretório “microemulator-2.0.4” que foi descompactado no computador para o diretório “/home/user” do N900. Crie um arquivo com nome “microemulator.sh” e coloque isto dentro dele:

#!/bin/sh
JAVACLASSRUN=org.microemu.app.Main
JARS=./microemulator.jar
JARDIR=lib
for f in $JARDIR/*
do
  JARS=$JARS:$f
done
java -classpath $JARS $JAVACLASSRUN

Agora coloque-o no diretório “/home/user/microemulator-2.0.4”. E como root, execute este comando:

chmod +x /home/user/microemulator.sh

Isso vai permitir que o script possa ser executado.

Para iniciar o emulador, basta digitar “microemulator.sh” no diretório “/home/user/microemulator-2.0.4” (importante não estar como root).

Artigos relacionados: