Dalvik仮想マシン
Dalvik仮想マシン(ダルビックかそうマシン)は、ダン・ボーンスタインおよびGoogle社のエンジニアがAndroidプラットフォームのために設計・開発した、レジスタベースの仮想マシンである[1]。
目次 |
概要[編集]
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]:
- Dalvik 開発のために用いられた Java仮想マシン は、より少ないメモリを使用するようスリム化された。標準Cライブラリは再実装され、C++ 実装は例外処理をサポートしなくなった。
- Java VM の定数プールは、インタプリタを簡略化するため32-bitのインデックスのみ使用するよう改変された。
Android 2.1 までの Dalvik VM は ジャストインタイムコンパイルをサポートしていなかったが、2.2からは搭載されている。
新たな .dex フォーマットがより簡潔なアーキテクチャを可能にしたため、より制限も多くなった。動的プログラミング言語を Java VM 上で実行させたり、JIT コンパイルを行うことも簡単ではない。
Dalvik は携帯電話メーカーがコアの VM の改変をソースコードの公開なしに行うことができるよう、OpenJDK(GPLリンク例外を用いている )ではなくApache Harmony (Apache License で提供されている)のサブセットを用いている。
参考文献[編集]
- ^ “What is Android?”. code.google.com. 2008年2月5日閲覧。
- ^ “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.”
- ^ Journal entry
- ^ “Google Calling: Inside Android, the gPhone SDK”. onlamp.com. 2008年2月5日閲覧。
- ^ Rose, John (2008年5月31日). “with Android and Dalvik at Google I/O”. 2008年6月8日閲覧。
外部リンク[編集]
- Dalvik: how Google routed around Sun's IP-based licensing restrictions on Java ME
- Google and Sun may butt heads over Android
- Dex File Format
- The town of Dalvik celebrates its namesake
|
||||||||||||||||||||||||||||