Ответ 1
Dalvik - это виртуальная машина, используемая Android. Обычно это считается виртуальной машиной Java, хотя это не совсем правильно. Он использует объектную модель, которая идентична Java, и ее модель памяти также почти эквивалентна. Но dalvik VM - это виртуальная машина на основе регистров, в отличие от виртуальных машин Java, которые основаны на стеках.
Соответственно, он использует совершенно другой байт-код, чем Java. Тем не менее, Android SDK включает в себя инструмент dx для перевода байт-кода Java в байт-код dalvik, поэтому вы можете писать приложения Android на Java.
Когда вы говорите "dalvik-cache", я предполагаю, что вы имеете в виду каталог /data/dalvik-cache, который можно найти на обычных устройствах Android. Когда вы устанавливаете приложение на Android, оно выполняет некоторые изменения и оптимизации в этом файле dex приложения (файл, который содержит все байт-коды dalvik для приложения). Затем он кэширует полученный файл odex (оптимизированный dex) в каталоге /data/dalvik-cache, поэтому ему не нужно выполнять процесс оптимизации каждый раз при загрузке приложения.