O que é Dalvik? Ouvimos essa palavra ser divulgada na Internet ao falar sobre o Android e seu funcionamento interno. Embora não haja uma explicação fácil que possamos fornecer em apenas alguns parágrafos, podemos cobrir o básico e direcioná-lo na direção certa, se você precisar alimentar seu lado nerd. Em seus termos mais simples, o Dalvik é uma máquina virtual que executa aplicativos e códigos escritos em Java. Um compilador Java padrão transforma o código-fonte (escrito como arquivos de texto) em Bytecode e, em seguida, compilado em um arquivo.dex que a Dalvik VM pode ler e usar. Em essência, os arquivos de classe são convertidos em arquivos.dex (como um arquivo jar, se alguém estivesse usando a Java VM padrão) e, em seguida, lidos e executados pela Dalvik Virtual Machine. Os dados duplicados usados nos arquivos de classe são incluídos apenas uma vez na saída.dex, que economiza espaço e usa menos sobrecarga. Os arquivos executáveis podem ser modificados novamente quando você instala um aplicativo para tornar as coisas ainda mais otimizadas para dispositivos móveis. Coisas como troca de ordem de bytes e vinculação de estrutura de dados e bibliotecas de funções em linha tornam os arquivos menores e funcionam melhor em nossos dispositivos. A VM Dalvik foi escrita desde o início, com o Android em mente.
Confuso ainda? Não se sinta mal, a conversa de programação nerd geralmente tem esse efeito. Pense dessa maneira - quando você cria um aplicativo Java para o seu computador, uma Java Virtual Machine executa a saída compilada do código-fonte. É por isso que o Java é executado em praticamente qualquer sistema operacional. O Dalvik é uma versão otimizada para dispositivos móveis de uma Java Virtual Machine, construída com o código do projeto Apache Harmony, de código aberto e executado melhor do que uma Java VM padrão faria em nosso hardware limitado, projetado para que você possa executar mais de um instância da VM de cada vez - ou seja, multitarefa. Como o Dalvik é de código aberto, também foi portado para outros sistemas operacionais, como o do BlackBerry PlayBook. É muito complicado, muito legal e a Oracle (a empresa que comprou o Java da Sun) o odeia.
O Android usa o Dalvik porque, embora a licença para a Java Virtual Machine padrão seja GPL2 (livre e de código aberto), quando colocada em um dispositivo móvel e usando o Java Micro Edition, não é. A grande disputa entre Google e Oracle se baseia em Dalvik. O Google alega que foi gravado em um ambiente de "sala limpa" sem usar nenhum código da Oracle, e a Oracle discorda. Afirmamos não ter ideia, estamos contentes que funcione tão bem quanto funciona.