Dalvik仮想マシン

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

概要

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

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

アーキテクチャ

低メモリシステムに最適化されているため、Dalvik VMには通常のJava VMとは異なる特徴がある[5]:

Android 2.1までのDalvik VMはジャストインタイムコンパイルをサポートしていなかったが、2.2からは搭載されている。

新たな .dex フォーマットがより簡潔なアーキテクチャを可能にしたため、より制限も多くなった。動的プログラミング言語をDalvik VM上で実行させたり、JITコンパイルを行うことも簡単ではない。

Dalvikは携帯電話メーカーがコアのVMの改変をソースコードの公開なしに行うことができるよう、OpenJDK (GPLリンク例外を用いている) ではなくApache Harmony (Apache Licenseで提供されている) のサブセットを用いている。

参考文献

  1. ^ What is Android?”. code.google.com. 2008年2月5日閲覧。
  2. ^ What is Android?: Android Runtime”. Google (2007年11月12日). 2007年11月13日閲覧。 “The Dalvik VM 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.
  3. ^ Journal entry
  4. ^ Google Calling: Inside Android, the gPhone SDK”. onlamp.com. 2008年2月5日閲覧。
  5. ^ Rose, John (2008年5月31日). “with Android and Dalvik at Google I/O”. 2017年3月25日閲覧。

外部リンク

関連項目