Como usar Java (SE e ME) no Maemo (N800, N810 e N900)
Um dos melhores recursos dos smartphones e mesmo de telefones em geral é a capacidade de executar arquivos Java destinados a dispositivos móveis, desenvolvidos para a plataforma Java Micro Edition, popularmente conhecida como Java ME . Há diversos aplicativos desenvolvidos para essa plataforma, que pode ser utilizada por uma varidade de aparelhos, dos mais simples aos topo de linha. Dentre os exemplos de aplicativos estão o Opera Mini, Google Maps, Gmail Mobile, clientes para Twitter e jogos.
Além da quantidade de aplicativos existentes, o que torna importante ter um aparelho que possa executar estes aplicativos é o desenvolvimento feito para economizar recursos do dispositivo, como uso de memória e o tráfego de dados. Ao invés de acessar aplicativos acessíveis por meio de navegadores, e com isso ter que baixar os dados e a formatação das páginas, é possível transferir apenas os dados que são necessários, já que a apresentação está disponível pelo programa em execução. Com isso é possível ganhar em velocidade de execução e em economia de dados, evitando que se ultrapasse a quantidade prevista de dados em planos para dispositivos móveis.
Para se ter uma noção, ao acessar o Free Bird e depois abrir a página do (P)Review do N900, os valores obtidos com o Firefox e o Opera Mini, ambos no N900, foram:
| Download | Upload | Total | |
|---|---|---|---|
| Firefox | 4,204 MB | 376,797 KB | ~4,5 MB |
| Opera Mini | 397,442 KB | 19,816 KB | ~0,5 MB |
Por esses fatores, uma das grandes necessidades existentes para o N800 era a possibilidade de executar aplicativos da plataforma Java ME. A falta dessa possibilidade foi entendida, apesar de certa resistência, pelo fato de o N800 não ser um telefone e não ter acesso a rede GSM. Porém, o uso do aparelho em conjunto com um telefone, especialmente pela qualidade da tela e seu poder de hardware, mantém essa necessidade.
Além do caso do N800 e do N810, o N900, apesar de já ser telefone, ainda não apresenta uma opção nativa para executar aplicativos da plataforma, o que é um problema pelos mesmos aspectos supracitados. A solução para boa parte desses problemas apareceu recentemente em um blog russo, sendo apresentado como uma forma de executar o Opera Mini no N900. Contudo, a solução apresentada é mais completa do que pode se notar, permitindo a execução de aplicativos JAD, feitos para dispositivos móveis, e arquivos Java feitos para desktop. Mais do que isso, essa solução funciona tão bem no N800 (e por consequência no N810) quanto no N900. A forma de utilizá-los nos aparelhos será mostrada agora.
Instalação no Nokia N900 (Maemo 5 – Fremantle)
Requisitos
- Ser root (instalar o Rootsh):
apt-get install rootsh
- Ter um aplicativo para descompactar arquivos zip:
apt-get install zip unzip
- Ter um editor de texto (usado o PyGTKEditor):
apt-get install pygtkeditor
Instalação
A instalação no N900 foi originalmente postada aqui e pode ser vista em suas versões traduzidas automaticamente para inglês e português. Para esse exemplo a instalação será feita totalmente no N900, incluindo o processo de baixar e descompactar o arquivo. Para ver detalhes de como proceder com o auxílio de um computador, basta olhar os detalhes do processo feito para o N800, que muda apenas com relação ao diretório usado.
- Baixe o arquivo e o salve no telefone. Para o exemplo o arquivo será salvo na raiz do cartão de memória;
- Abra o terminal;
- Acesse a pasta onde o arquivo foi salvo:
cd /media/mmc1
- Descompacte o conteúdo do arquivo:
unzip java_nokia_n900_maemo5_opera_mini.zip
- Obtenha acesso como root:
root
- Copie a pasta JRE (localizada dentro do arquivo descompactado) para o diretório /home/user:
cp /media/mmc1/jre /home/user/ -r
- Apague a pasta anterior:
rm -r /media/mmc1/jre
- Entre na pasta /home/user/jre/bin:
cd /home/user/jre/bin
- Confira permissão de execução para os arquivos java e opera.sh:
chmod +x java chmod +x opera.sh
- Execute o arquivo opera.sh:
./opera.sh
Instalação no N800 e N810 (Maemo 4 – OS2008)
Requisitos
- Ser root (instalar o Rootsh):
apt-get install rootsh
- Ter um aplicativo para descompactar arquivos zip:
apt-get install zip unzip
- Ter um editor de texto (foi usado o PyGTKEditor):
apt-get install pygtkeditor
- No computador, faça o download do arquivo e o descompacte;
- Ligue o N800/N810 ao computador e transfira a pasta para o cartão. A partição usada para o exemplo foi a usada pelo Windows, com o sistema de arquivos FAT.
- Entre no terminal e ganhe acesso como root:
root
- Copie a pasta do cartão para o diretório /
cp -r /media/mmc2/jre /
- Entre na pasta copiada
cd /jre/bin
- Atribua permissões de execução para os aplicativos java e opera.sh
chmod +x java chmod +x opera.sh
- Execute
./opera.sh
Usando o MicroEmulator
O processo de instalação é feito com acesso como superusuário (root). Com o término da configuração não é necessário se manter como superusuário para executar o script. Este, por sua vez, invoca a execução do MicroEmulator, um emulador de J2ME que permite rodar arquivos destinados a dispositivos móveis. O processo é feito originalmente para que o Opera Mini já esteja pronto para ser executado, mas permite que outros aplicativos sejam executados com facilidade.
Para executar Opera Mini com o MicroEmulator já aberto é preciso:
- Invocar o aplicativo: Clique duas vezes sobre o opera mini;
- Na página aberta, role até em baixo e clique em Accept.
Para usar a versão mais recente do Opera Mini, acesse: http://www.opera.com/mini/next/download/ e escolha o arquivo JAD da opção “For Java-enabled phones”. Essa versão, além de ser visualmente melhor trabalhada, permite o uso de abas e dá acesso a um teclado virtual.
Algumas observações que podem melhorar o uso do MicroEmulator:
- Para adicionar um aplicativo no MicroEmulator é preciso especificar a URL de origem do JAD ou copiar para o aparelho os arquivos JAD e JAR, indicando o primeiro ao emulador;
- Para melhorar a visualização dos programas no MicroEmulator, clique sobre o ícone resize e dê ok para o valor mostrado. Com isso serão exibidos os botões da parte inferior da janela, como no caso do Opera Mini;
- Os botões de navegação de telefones funcionam com as setas e com o ENTER. Para o caso dos dois botões de acesso às duas opções apresentadas no canto inferior da tela o acesso é configurado para as telas F1 e F2. Caso o aparelho seja usado com o modo USB Host, synergy ou outra forma de acesso com teclado, o uso das teclas melhora a navegação e a resposta dos programas.
Licença de uso
Algo que não pôde deixar de ser notado ao executar o arquivo foi a mensagem informando que o produto poderá ser avaliador por 90 dias:
“Java SE Embedded 90 Evaluation Version
Use command ‘java -version’ to view days remaining in evaluation period”
Essa mensagem é exibida pelo Java SE Embedded, invocado como “java”, dentro do script opera.sh e se destina aos desenvolvedores que utilizam a API. O aplicativo é gratuito para desenvolvedores e só passa a ser paga quando este, ou a empresa que o contrata, deseja passar da fase de desenvolvimento para a de implantação do aplicativo, quando se espera que obtenha lucros.
Interessado em saber como a Sun (agora a Oracle) vê o uso do aplicativo por usuários comuns, encaminhei um e-mail perguntando sobre licença e custos para uso individual, sem intenção de aplicá-lo para desenvolvimento. Tendo a agradável surpresa de ser respondido em menos de 1 hora, tive como resposta:
“You can continue to use the 90 day evaluation version of Java SE Embedded at no cost. At the end of the 90 days, you can simply download another copy, again at no charge. There are no limits to the number of times that you download and install the JVM to a single device. At this time, we do not sell individual copies of the software – expiration free copies are only available under a volume license agreement.”
Resumindo, o funcionário da Oracle indica que ao fim dos 90 dias de avaliação seja feito um novo download do aplicativo que durará outros 90 dias. Ou seja, exceto pelo trabalho de fazer o download periodicamente, ele é gratuito e pode ser usado sem que se infrinja a lei.
Executando aplicativos Java para Desktop (J2SE)
Como dito antes, a forma como o arquivo é oferecido se destina à execução do MicroEmulator já configurado para a execução do Opera Mini. Contudo, o pacote abre a possibilidade de execução de outros arquivos e contém a versão do Java SE for Embedded, uma versão da plataforma Java que oferece recursos mais avançados do que a J2ME e que se destina a dispositivos embarcados, normalmente com maior poder de processamento.
Considerando a instalação já feita do aplicativo, tudo o que se precisa fazer é executar o comando java a partir da pasta jre/bin. Como exemplo foi executado o programa ArgoUML. O processo consistiu em:
- Baixar o arquivo do ArgoUML no N800 ou no N900 e descompactá-lo;
- Executar o comando java referenciando o arquivo argouml.jar:
./java -jar /media/mmc1/argouml-0.28.1/argouml.jar
O arquivo demora um pouco para ser aberto. Sua abertura leva pouco menos de 3 minutos para o N800 e 1 minuto e 30 segundos para o N900. Após sua conclusão a fluidez da execução é natural e sem travamentos. O único incômodo é ajustar a interface de forma mais apresentável, escondendo menus de propriedades e deixando à mostra a tela de criação dos modelos e diagramas. Após a primeira organização das janelas, a configuração é preservada em utiliações posteriores do programa.
Desempenho do Java
Algo importante a ser ressaltado é o desempenho geral do java nos aparelhos. Ao contrário do que ocorre ao executar o EasyDebian, a execução do Java for Embedded limita o uso de RAM à quantidade disponível. Nos testes realizados a quantidade de memória alocada para programas foi de 24MB, o que é ótimo inclusive para o N800 e o N810, que contam com 128 RAM e não precisam usar memória virtual (em SWAP), deixando o aparelho lento. A carga de processamento chega ao topo em alguns momentos, mas ainda assim dentro de um comportamento aceitável.
Na Figura da subseção anterior é possível notar quanto de memória é utilizado. Mesmo com o programa para desktop, o consumo é baixo.
Considerações Finais
A possibilidade de uso de aplicativos em Java, tanto destinados a dispositivos móveis quanto para desktop, para aparelhos com Maemo é interessante porque acrescenta uma grande quantidade de aplicativos com potencial de uso no sistema. O fato de executar fora do EasyDebian garante um desempenho melhor e ainda assim consegue suportar a execução de aplicativos feitos para computadores.
A compatibilidade com aplicativos não é total. O processo exige que se use arquivos JAD e ainda assim alguns dos programas não puderam ser utilizados. Para os casos em que eles são aceitos, a experiência de uso foi boa e se mostrou equivalente à execução do Java ME no computador.
Uma outra opção para Java no N900 é o projeto OpenJDK. Um dos resultados já obtidos com isso foi o uso do Apache Tomcat no N900, que serve como servidor Web para a execução de servlets e páginas JSP, além de outras possibilidades, como serviços Web, com o uso de outras bibliotecas.
Referências e Leituras Relacionadas
http://maemos.ru/2009/12/20/java-nokia-n900-maemo-5-opera-mini/









Esse Java2Se tem plugin pro browser? Só falta isso pra navegar bem no site do BB… infelizmente, a interface p/ iPhone não fica muito legal no n810 :(
[Translate]
Cristiano,
Esse é o próximo passo que quero tentar. Já conversei o Panaggio e vamos tentar a configuração.
Só que, para ser sincero, aposto mais no OpenJDK (http://wiki.maemo.org/OpenJDK_6.0_0_(Cambridge_Software_Labs)_on_N900), pelo menos pela forma de configuração. Vou verificar a possibilidade, inclusive ver a compabilidade do Open JDK com o Maemo 4, e posto os resultados.
[Translate]
Bom dia gurisada!
Ótimo artigo,como simples usuário vou tentar instalar no meu N800 me pareceu bastante claro e simples! Minha maior dor de cabeça no Linux (Maemo/Ubuntu) são as linhas de comandos ! Esse artigo aguardo ao um bom tempo ser escrito aqui no FreeBird! Tomara que não demore! Parabéns pelo trabalho!
[Translate]
Aknaton,
Muito obrigado. Realmente estamos devendo esse post. Aliás, talvez ele nem venha na forma de post, mas de um modo diferente, para servir de consulta quando for preciso. Mas vamos tentar organizar esse conteúdo para postar.
[Translate]
Eu tô ensaiando para instalar aqui, só pra ter o Snaptu nele. Por mais que eu goste do iPod, o N800 é como um filho pra mim, é meu gadget preferido, e ter o Snaptu nele vai me dar mais uma desculpa pra carregar ele na mochila, no lugar do iPod ;D
Offtopic: dá pra vc dar uma passadinha lá no PDABr ? Tem um tópico sobre a venda de N900 no Brasil, e acho que você têm uma experiência pra relatar, certo ?
Abraços!
[Translate]
Olá Mauro,
Acho que vale a pena usá-lo, já que os outros clientes para Twitter deixam a desejar (ainda mais pelas outras funções do Snaptu). Essa opção de uso do Java Embedded é melhor do que a do OpenJDK pelo desempenho. Só fiz o teste pelo N900, que levou o dobro do tempo para abrir os aplicativos. No N800 não consegui instalar por falta de espaço, mas vou voltar a clonar o sistema e reorganizá-lo para ver se funciona (apesar de suspeitar que não).
Já coloquei uma experiência dno PDABr, mas vou adicioná-la também no tópico de venda do N900. Acho válido para ter um centro de referências de empresas.
[]‘s
[Translate]
Com essa possibilidade de rodar arquivos Java, é possível rodar jogos, ou tem algum problema relacionado a botões de comando de navegação?
[Translate]
Leandro,
Possível é, mas não quer dizer que qualquer jogo possa ser usado. A primeira dificuldade é conseguir encontrar um jogo que tenha o arquivo JAD. Para isso, é possível baixar o arquivo JAR e usar o JAD Maker para criar o arquivo JAD para ele. Enviando JAR e JAD para o N900, é possível tentar executar o jogo. Se não der erro e o jogo for executado, vai depender da forma do jogo. Se for bom para touchscreen, é provável que não tenha problemas, já que funciona corretamente. As teclas do aparelho também funcionam bem. O problema vem com as teclas de ações normalmente presentes no telefone, que indicam ações de menu. Como elas não existem no N900, é preciso usar a tela, fazer um mapeamento ou usar um device (configurável no Micro Emulator) que mostre o telefone e sua tela. Com isso é possível jogar usando o touchscreen e clicando nas teclas virtuais do telefone.
Pelo tamanho da resposta e os vários “se” sei que é de desanimar.
Testei 3 jogos jar encontrados aleatoriamente. Gerei os arquivos JAD dele e tentei rodá-los no emulador. 2 deles deram erro ao carregar. O que abriu não saiu da tela inicial. Porém, fazendo o mesmo teste com o Nokia E62 (com aplicativo java nativo) ocorreu o mesmo problema. Resultado: inconclusivo.
A opção de Java é boa com o Opera Mini e deve funcionar bem com alguns outros aplicativos. É preciso testar e ver quais possuem uma boa compatibilidade.
[Translate]
Ok! Valew… mesmo assim vou dar uma de guerreiro e tentar… posto minhas conclusões finais. Ate mais.
[Translate]
parabens, ótimo tutorial, funcionou direitinho no meu n800
[Translate]
Olá Marcel.
Obrigado pelo comentário. Se tiver alguma dúvida ou até sugestão de post, sinta-se à vontade para dizer.
[Translate]