Strict Standards: Non-static method themeGluedIdeas_Subtle::initOptions() should not be called statically in /home/riopro/www/blog.riopro.com.br/wp-content/themes/gluedideas_subtle/header.php on line 19
Riopro Blog - » O Android na ilha de Java

O Android na ilha de Java



Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Após ler diversos bons posts a respeito do Android (ver no final os links indicados pelo Rodrigo), resolvi dar uma olhada mais próxima. A maior curiosidade era o Dalvik, um fork máquina virtual Java, disponibilizado para rodar as aplicações desenvolvidas para os futuros gPhone’s. Outra curiosidade era avaliar o plugin feito para o Eclipse e o emulador (muito importante já que não existe ainda nenhum celular funcionando com o Android).

O Dalvik é bastante interessante, por delegar ao sistema operacional do Android o isolamento de memória e o suporte a threads. Ou seja, usa com intensidade o ponto forte do kernel do Linux (estrutura básica do SO do Android). Não dá ainda para avaliar a performance real por falta de um protótipo, mas a expectativa é positiva. Nem vou entrar na discussão sobre mais um fork da máquina virtual do Java, porque isso já foi tratado nos links ao final. A minha opinião é positiva em relação a isso. Ainda não existe uma padronização tão grande nos aparelhos de celular, o próprio desenvolvedor se vê obrigado a suportar diversas versões de máquina virtual nos celulares, o que prejudica a compatibilidade total do código desenvolvido.

Outro ponto muito discutido foi a API básica do Android. Enxuta, ou melhor, selecionada, ela excluí similares (por exemplo, não tem a java.io, só a java.nio, mais recente) e coloca para todos os desenvolvedores pacotes úteis como java.util.ResourceBundle, usado para internacionalização e que na JavaME só está disponível para os aparelhos mais avançados, que usam a versão CDC. A API do Java é muito inchada. E não são só os criadores do Android que pensam assim. Já vi muita discussão sobre isso, como essa aqui. E com algumas classes muito pouco evoluídas para uma linguagem há tanto tempo estabelecida, caso clássico da java.util.Date (que não escaparemos de usar no Android, junto com a Calendar). Mas, já que um dos objetivos era reduzir o tamanho do pacote básico disponível, porque não aproveitar e excluir as dezenas de métodos marcados como deprecated?

Quanto ao plugin para o Eclipse e o Emulador, achei ambos excelentes. Raro ver um lançamento inicial tão bem feito, integrado e sem bugs. Somente a edição campos ainda poderia ser melhorado com um ajudante para agilizar a criação de campos dos templates de telas (pelo menos não encontrei nenhum). Pelo menos, o parser do Android xml não deixa errar no momento de criar os campos para cada template. Ou melhor, deixa, mas nesse caso, a compilação não funciona. Se estiver usando o plugin do Eclipse, um problema será informado antes da compilação. Mais rápido ainda para identificar os erros da sua visão.

Emulador Android

Gostei também de duas características do sdk do Android: os Content Providers e os Services (leia sobre a anatomia completa do sdk aqui). Os Content Providers são, em linhas gerais, os bancos de dados intercambiáveis, ou melhor, a forma padrão de acesso a dados armazenados no celular. Com isso, desde que especificado no AndroidManifest.xml de sua aplicação, você pode ter acesso aos contatos do celular ou qualquer outro recurso (como a lista de imagens do celular por exemplo). Ter bases intercambiáveis aumenta bastante o poder das suas aplicações. Você pode, por exemplo, ter uma aplicação que baixe a cotação de ações da bolsa de valores e outro aplicativo que acesse a base de dados de cotações e envie um alerta para o usuário quando a cotação atingir ou ultrapassar um determinado valor (veja aqui um vídeo com uma aplicação exemplo).

Ao analisar o exemplo acima você pode se perguntar: “Tá, mas a aplicação que envia as mensagens vai ter que ficar ativa o tempo todo?”. Bom, é aí que entra os Services. Os Services permitem criar “códigos que ficam ativos mesmo sem uma interface de usuário” (numa tradução rápida da própria descrição de Services). Ou seja, é o famoso rodar em background (quem usa linux está acostumado com os Daemons). Essa característica é muito legal, mas tenho medo que os participantes do consórcio inibam essa características para aumentar a “segurança” do celular.

NOTA: No momento que escrevi o artigo esqueci de um  item melhor ou igual aos Services: o Intent Receiver. Diferentemente dos Services, o Intent Receiver permite que o celular chame a aplicação, mesmo que ela não esteja rodando, através de uma notificação (o NotificationManager).
Finalizando, devemos ressaltar que a documentação também foi muito bem feita, com bons exemplos para iniciar no SDK do Android. Inclusive alguns vídeos de aplicações exemplo foram colocadas no YouTube. Um bom início para a Open Handset Alliance, por mais que somente com um protótipo os desenvolvedores vão ficar realmente confiantes.

Links:

Google’s Android parts ways with Java industry group
http://crave.cnet.com/8301-1_105-9815495-1.html?part=rss&tag=feed&

Google’s Android SDK Bypasses Java ME in Favor of Java Lite and Apache Harmony
http://www.infoq.com/news/2007/11/android-java

Off-Topic: gPhone!
http://www.akitaonrails.com/2007/11/13/off-topic-gphone

Informações e Links

Junte-se comentando, lendo o que os outros dizem ou colocando um link a partir do seu blog.


Outros Artigos

Strict Standards: Only variables should be assigned by reference in /home/riopro/www/blog.riopro.com.br/wp-includes/post.php on line 117
O seu cliente trabalha de graça pra você e ainda fica mais feliz por isso?

Strict Standards: Only variables should be assigned by reference in /home/riopro/www/blog.riopro.com.br/wp-includes/post.php on line 117
Estamos contratando!

Comente

Tire um tempo para comentar e nos dizer o que você acha. Alguns códigos HTML são permitidos para formatação.

Comentários dos Leitores


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

[…] http://blog.riopro.com.br/2007/11/20/o-android-na-ilha-de-java/ […]


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

“A maior curiosidade era o Dalvik, um fork máquina virtual Java…”
Creio que o Dalvik não seja um fork, ele nem roda bytecode java.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

[…] O Android na ilha de Java […]


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Prezado nobody,

devo dizer: “nobody is right!” :)
Realmente, na documentação eles não mencionam a utilização do código fonte da máquina virtual java para a criação do dalvik.

Isso ainda está nebuloso e até eles explicarem (ou melhor, liberarem o código fonte como prometeram) fica a dúvida. De qualquer maneira, usei a palavra fork (que ficou meio “forte”) pois o source que a gente tem que escrever é totalmente compatível com Java, além de usar as API’s do Java.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Para quem quizer saber mais sobre o Android e quem já está programando para o mesmo, acesse www.portalandroid.org

é bem interessante!