AndroidはアプリをJava、それもJava MEではなくJava SEで開発できるのが開発者にとっての最大の特徴です。その一方、AndroidにはJava VMは搭載されていません。いったいどういうことでしょうか?
AndroidにはJava VMの代わりに「Dalvik」というケータイなどの制限された環境で効率的に動作するVMが用意されています。
開発者はJavaでアプリを作成し、いったんJavaコンパイラでクラスファイルにコンパイルします。この段階までは完全にJavaでの開発です。コンパイルしたクラスファイルをDalvik実行形式にリコンパイルすることでDalvik VMで動作するようになります。
なお、AndroidでDalvik実行形式を動作させるためにはパッケージングする必要があります。
Javaソースコード(.java)
↓ コンパイル
Javaクラスファイル(.class)
↓ リコンパイル
Dalvik Executable(.dex)
↓ パッケージング
Android PacKage(.apk)