{ by david linsin }

November 14, 2007

Google's Dalvik VM

According to Stefano Mazzocchi Google came up with the own non-standard VM called Dalvik:
Dalvik has been written so that a device can run multiple VMs efficiently and relies on the Linux kernel for underlying functionality such as threading and low-level memory management. It executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool .... It is a departure from a traditional JVM in that it runs it's own variant of byte-code. It supports a language similar to Java with a lot of the common Java API's based on Apache Harmony and runs in a traditional IDE. It just compiles to a different byte-code.
This caused a lot of buzz, like everything Google does, but I think it can have quite an impact on the Java world. I have not looked into Android, nor have I read anything else but speculations so I'll just continue and add more thoughts based on assumptions.

The fact that this VM is not a Java Platform, but is using something similar to Java is the first step towards a messy future for Java developers. If you can't rely on the platform to behave the same way Java does, you'll never know what's gonna happen if you run your code on a non-standard VM. Imagine if you use a standard Java class like java.lang.String and it behaves differently on other VMs. It'd would be a nightmare to debug code, since everything you implement is an assumption! An assumption that it behaves the same way the Java Platform does. That's not really what developers want.

That was me speaking as a Java developer. As a consumer and technology fan, I think it's brilliant that Google fosters competition! Finally something is happening in the mobile phone application section. There are great Java ME applications like Google's Maps and GMail, but you never know if they work on your phone. Basically every phone behaves differently. If Google manages to unify handset manufactures to commit to a standard platform, even if it's not the Java platform, it's the right move.



  • mail(dlinsin@gmail.com)
  • jabber(dlinsin@gmail.com)
  • skype(dlinsin)