If you are familiar with the Java Virtual Machine(JVM) then you will know that a JVM works on class files which are comprised of byte code. A class file is a compiled version of the Java code.
When it comes to Android then the Java code is first compiled to a class file which in turn is converted to a file called classes.dex – Dalvik Executable format. This is done by a tool called dx
Like JVM in Android’s case its Dalvik which works on the dex file.
A JVM is stack based processor whereas Dalvik is register based. Both are virtual processors though.
The classes.dex file is then compressed with a bunch of other files, like resource and data files, into a ZIP file called an Application Package or APK
This is the file you will eventually upload to the Google Play Store.