Início > Android > Android e sua máquina virtual Dalvik

Android e sua máquina virtual Dalvik

Dalvik é um processo da máquina virtual (VM) desenvolvida pela Google onde foi escrita por Dan Bornstein e outros engenheiros da Google e fez uma homenagem a uma vila de pescador situada em Eyafjörõur (Islândia) chamada de Dalvík, na qual moravam alguns antepassados de Bornstein.  A Dalvik veio junto com o lançamento da SDK do Android no final de 2007. Criada com base na especificação POSIX para sistema operacional UNIX onde o intuito de “Reinventar a roda” era de melhorar no gerenciamento de processo e isolamento de thread.

Por que “reinventar a roda” Google?

Infelizmente J2ME é bastante limitada pelo motivo de alguns aparelhos não suportarem tecnologias como: gráfico 3D, SIP e Bluetooth. Isso torna um incomodo para desenvolvedores da plataforma, visto que dependendo do aplicativo o mesmo não será compatível com alguns aparelhos.  Então, a frase “write once, run anywhere” não se encaixa perfeitamente no J2ME. Outro item importante que a Google destacou sobre não ter adotado o J2ME foi a especificação JSR (Java Specification Request) que é um processo bastante burocrático e necessário para que sejam inseridos novos recursos na plataforma. Em contra partida, a Google tem o controle completo e pode impulsionar a adoção de novas funcionalidades em uma forma mais rápida e simples.

Extensão .Dex

Quando se trabalha com J2EE, ou seja, quando se é compilado uma Classe.java,  a JVM (Java Virtual Machine) interpreta o código .java e gera o código .class. Isso siginifica que cada classe Java resulta em um arquivo. Se você possuir um arquivo Java com o modificador de acesso da classe como  publicuma classe estática interna e três classes anônimas; o processo de saída de compilação vai resultar em 5 arquivos .class. Sobre a plataforma Android os arquivos .java também são convertido para .class e através de uma ferramenta chamada de “dx” são convertidos para a extensão .dex que é interpretada pela VMD (Virtual Machine Dalvik). Considerando que um arquivo .class contém apenas uma classe o arquivo .dex contém várias classes, de modo a reduzir o tamanho do arquivo e operações de I / O (entrada e saída), e acelerar a velocidade de busca. O arquivo .dex foi otimizado para o uso de memória e o designer principal é impulsionado para o compartilhamento de dados. O diagrama abaixo compara o formato de arquivo .class interpretado pela JVM e o .dex interpretado pela DVM (Dalvik Virtual Machine).

Tamaho de um arquivo Dex

O arquivo do tipo .dex como já foi dito anteriormente, armazena todos os .class em um único arquivo ao ser compilado.  O motivo dessa junção é reduzir o tamanho do arquivo .dex. Isso é possível porque cada arquivo .class tem pools de constantes onde a maioria deles é redundante. Com todas os arquivos .class juntos, os pools de constantes redundantes são removidos, e apenas uma única cópia é necessário.Com essa consolidação,  a DVM é capaz de aumentar o seu desempenho, eliminando a capacidade descompactar um arquivo jar com os seus .class redundantes. Abaixo, uma tabela onde mostra a diferença de um arquivo jarcomprimido e descomprimido e também um aquivo .dex descomprimido.

Otimizando um arquivo .Dex

O Android Package Tool (AAPT) compacta os arquivos .dex e o androidManifeste.xml como binário e cria uma extensão .apk. Após a geração do arquivo .apk que já podem ser disponibilizados para os dispositivos com Android, os arquivos .dex são otimizados antes da execução. Os arquivos são otimizados e salvos para uma região de cache onde são convertidos para um tipo de extensão customizada chamada de .dey . Compilado uma vez, a DVM(Dalvik Virtual Machine) executa o arquivo .dey diretamente se a estrutura de pacotes da aplicação não mudar.

Conclusão

A Google criou a máquina virtual Dalvik com o intuito de melhorar em certos pontos onde a JVM falha quando o assunto é “Mobile” sendo assim, os pontos fortes que a Dalvik tem são, desempenho, seguraça e tem a total liberdade para evoluir o Android sem a necessidade da especificação JSR (Java Specification Request)da Oracle que é bastante burocrática.

Referências

http://en.wikipedia.org/wiki/Dalvik_(software)

http://jaxenter.com/android-dalvik-virtual-machine-35498.html

http://en.ophonesdn.com/article/show/353

http://davidehringer.com/software/android/The_Dalvik_Virtual_Machine.pdf

Anúncios
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: