Dalvik仮想マシン
低メモリシステムに最適化されているため、Dalvik VMには通常のJava VMとは異なる特徴がある:
Dalvik開発のために用いられたJava仮想マシンは、より少ないメモリを使用するようスリム化された。標準Cライブラリは再実装され、C++実装は例外処理をサポートしなくなった。
Dalvik VMの定数プールは、インタプリタを簡略化するため32bitのインデックスのみ使用するよう改変された。
Android 2.1までのDalvik VMはジャストインタイムコンパイルをサポートしていなかったが、2.2からは搭載されている。
新たな .dex フォーマットがより簡潔なアーキテクチャを可能にしたため、より制限も多くなった。動的プログラミング言語をDalvik VM上で実行させたり、JITコンパイルを行うことも簡単ではない。
Dalvikは携帯電話メーカーがコアのVMの改変をソースコードの公開なしに行うことができるよう、OpenJDK (GPLリンク例外を用いている) ではなくApache Harmony (Apache Licenseで提供されている) のサブセットを用いている。