As for the incompatibility it was Oracle that chose to deny Apache a license for the Harmony VM, this was because they knew it was a threat to J2ME.
As for the incompatibility it was Oracle that chose to deny Apache a license for the Harmony VM, this was because they knew it was a threat to J2ME.
They are not using Apache VM. They are using their own Dalvik VM, which is not even compatible with Java VM. It uses their own opcodes.
What they use though, is Apache Harmony - the library, that is reimplementation of java.* packages.
Any Android app is compiled using using javac (or other compiler, producing class files) and then converted using Google's dex tool to be runnable by Dalvik. Android OS in unable to run untouched .class/.jar apps.
Im not sure if that is correct. I have implemented a VoIP application using JAIN SIP jar files compiled with Standard JDK 1.6 that ran fine on Dalvik. This was of-course pre Android 1.0 days. Im not sure if that is the case today.
Sure, you can take jar file compiled using JDK's javac (actually, most android apps are compiled using JDK's javac), but you can't run it on device. You have to run it through dx tool, which combines all class and jar files and converts them into dex file. With different instructions than JVM.