Dalvik仮想マシン

Dalvik仮想マシン（ダルビックかそうマシン）は、Androidプラットフォームで採用されていたレジスタベースの仮想マシン。およびGoogle社のエンジニアによって設計・開発されていた。Android 5.0よりAndroid Runtime（ART）に置き換えられた。

概要
Dalvikは低メモリ環境に対して最適化されており、オペレーティングシステムによるプロセス間の分離、メモリ管理、スレッドのサポートを用いて複数のVMインスタンスが同時に動作できるよう設計されている。DalvikはJava仮想マシンとされることもあるが、動作するバイトコードがJavaバイトコードではないため、これは明らかに正確ではない。また、Java互換性テストを通過していないので、法的にもJavaを名乗れない。Android SDKに含まれる dx と呼ばれるツールが正規のJavaコンパイラでコンパイルされたJavaクラスファイルを別のファイル形式（'.dex'形式）に変換する。

Dalvik仮想マシンは、開発者のボーンスタインの先祖が居住していた、アイスランドのエイヤフィヨルズル (Eyjafjörður) にあるダルビック (Dalvík) という漁村にちなんで命名された。

アーキテクチャ 
低メモリシステムに最適化されているため、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で提供されている) のサブセットを用いている。

参考文献

外部リンク 
 Dalvik: how Google routed around Sun's IP-based licensing restrictions on Java ME
 Google and Sun may butt heads over Android
 Dalvik Executable format
 The town of Dalvik celebrates its namesake

関連項目 
 Android Runtime

仮想機械
Java仮想マシン
Android