There has been a lot of talk about Android maybe making its way to various netbooks. However, thanks to the boys and girls at Canonical, Android might be taking a completely different direction when it comes to these little laptops: they’re building an execution environment which will allow Android applications to run on normal Linux distributions.
Even though Android uses a Linux kernel, the operating system itself cannot actually run standard Linux applications, and Android applications can’t run on a standard Linux distribution. The cause of this is that Android uses a custom Google Java runtime for its applications, with no tools or support for regular Linux applications. In addition, since this Java runtime is very customised, Anroid applications cannot run in normal Java environments.
The Canonical team is working on allowing Android applications to run on regular Ubuntu. To achieve this, they’ve built a prototype execution environment which already compiles against Ubuntu’s libc instead of Android’s custom variant, and runs on top of a standard Linux kernel. In addition, they’re working on a special kernel driver which will allow Binder, Android’s IPC system, to run properly. This driver is in the kernel staging area and not enabled; they’re using workarounds for now, but they hope the driver will be part of the kernel before the next Ubuntu release. In addition, they are working on a “compatibility shim”, which will allow the Android applications to see the filesystem and to take advantage of other system services. Part of this shim is already implemented in a library called Libwrap.
For now, it’s all highly experimental, and the code isn’t even out there yet; they plan on releasing the code soon.
Calling the Dalvik VM a custom Java runtime is technically wrong.
Android uses Java tools for development. But the Java classes are then converted to .dex files for Dalvik before deployment.
DVM and JVM are _VERY_ different.