The same applies to other JVMs in the embedded space.
For example, J9, http://www-01.ibm.com/software/wireless/wece/features.html
==> jar2jxe: A utility for converting Java class and archive files to the native J9 JXE file format.
Or JamaicaVM Builder
https://www.aicas.com/cms/sites/default/files/jamaicavm_6.3_...
The big difference between these JVM and Dalvik, is that they are certified JVMs, whereas Google tried to workaround the licensing issue for embedded Java deployments.
I think the only difference might be the portability. Android takes 'Java' code and outputs 'android machine code' that can/does only runs on an 'android machine' (I think).
Compiled Java in theory should run the same on any JVM, as it's virtual machine code, and the 'machines' use the same set of defined instructions.