Dalvik JVM differs from other JVMs in following aspects

  • It uses special DEX format for storing applications binaries vs. JAR and Pack200 formats used by standard Java virtual machines. Google claims that DEX results in smaller binaries than JAR. I think they could use Pack200 with the same success, but they decided to go their own way in this aspect
  • Dalvik JVM was optimized for running multiple JVM processes simultaneously
  • Dalvik JVM uses refister-based architecture vs. stack based architecture of other JVMs with intent to speed up the execution and to reduce binaries size
  • It uses its own instructions set (not a standard JVM bytecode)
  • One can run (if needed) several independent Android applications within a single JVM process
  • Application execution can span across several Dalvik JVM processes “naturally”. To support this it adds:
    • Special object serialization mechanism based on Parcel and Parcelable classes. Functionally it serves the same purpose as standard Java Serializable, but results in smaller data footprint and potentially it is more lenient towards differences in versions of classes
    • Special Android way to execute inter process calls (IPC) based on Android Interface Definition Language (AIDL)
  • Until Android 2.2 Dalvik JVM did not support JIT compilation which adversely impacted Android application performance. Adding it in 2.2 improves markedly execution speed for often used applications


Popular posts from this blog

Android Objective type Question and Answers

Android Questions and Answers for written exams