dex файл - это файл, который выполняется на виртуальной машине Dalvik.
Dalvik VM включает в себя несколько функций для оптимизации, проверки и мониторинга производительности, одной из которых является Dalvik Executable (DEX) .
Исходный код Java компилируется компилятором Java в .classфайлы. Затем dxинструмент (dexer), входящий в состав Android SDK, обрабатывает .classфайлы в формате, называемом, DEXкоторый содержит байт-код Dalvik. dxИнструмент устраняет все избыточную информацию, которая присутствует в классах. Во DEXвсех классах приложения упакованы в один файл. В следующей таблице приведено сравнение размеров кода для jar-файлов JVM и файлов, обрабатываемых dexинструментом.
В таблице сравниваются размеры кода для системных библиотек, приложений веб-браузера и приложения общего назначения (приложение будильника). Во всех случаях инструмент dex уменьшал размер кода более чем на 50%.

В стандартных средах Java каждый класс в коде Java приводит к одному .classфайлу. Это означает, что если файл исходного кода Java имеет один открытый класс и два анонимных класса, скажем, для обработки событий, то компилятор java создаст всего три .classфайла.
Шаг компиляции такой же на платформе Android, что приводит к нескольким .classфайлам. Но после .classгенерации файлов инструмент «dx» используется для преобразования всех .classфайлов в один .dexили исполняемый файл Dalvik. Это .dexфайл, который выполняется на виртуальной машине Dalvik. .dexФайл был оптимизирован для использования памяти и дизайна в основном за счет совместного использования данных.