ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
Androidランタイムに搭載されている独自の仮想計算機(仮想マシン)。
Java言語で書かれたAndroid用アプリケーションはコンパイルしてバイトコードになり、これをDalvikで実行する。
Javaの技術が元になった環境だが、使用する中間言語は専用で、Dalvik Executable(DEX)と呼ばれる。従って、一般的なJavaバイトコードは利用しない。
DalvikのバイトコードはJavaバイトコードから作成可能なため、通常はJava言語による開発が行なわれているが、理論上はそれ以外の言語での開発も可能である。
JVMとDalvikは、明確な設計方針の差が存在する。DalvikはJVMのパクリだが、単なるパクリではない。
JVMは「スタック・ベース」と呼ばれ、命令処理に使用するレジスターがスタック状になっていることを特徴としていたが、Dalvikは一般的なCPUのように任意のレジスターを選択する「レジスター・ベース」となっている。
仮想マシンの設計コンセプトは全く違ってはいるが、Javaプログラムからその違いを認識することはほぼない。アプリケーションプログラマーから見ると、Javaのノウハウをそのまま開発に活かせる利点があり、これがAndroidが人気を集める理由の一つとされている。
Dalvikは特殊なレジスターマシンである。
レジスターは32ビット長だが、メソッドごとにスタックに積まれるようにして用意され、そのレジスター数は可変(0〜最大65535個)である。C言語のローカル変数に近い。
命令はオペコードとオペランドからなり、命令長は可変長である。
オペコードは8ビットで、これに必要な分だけオペランドが付加される。また命令は16ビット単位にアラインメントされる。
通常、65535個(表現に16ビット必要)ものレジスターを使わないが、単純に考えれば、3オペランド命令なら16ビット×3+8ビットで計56ビット(7バイト)にもなってしまう。このため、多くの命令は256個(表現に8ビット必要)や16個(表現に4ビット必要)に制限し、オペランドを短くしている。
Dalvikは地名から採られた。
開発者ダン・ボーンスタイン(Dan Bornstein)の先祖が住んでいたとされる、アイスランドのエイヤフィヨルズル(Eyjafjörður)にある漁村の名Dalvíkにちなんで命名されたとする。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます