Dalvik VM対ART(Androidランタイム):エンドユーザーへの影響?


22

Nexus 5(Android 4.4 KitKat)では、Googleがアプリを実行するための2つのランタイムを出荷しました。

Android 4.4 KitKatでランタイムオプションを選択します Android 4.4 KitKatのDalvikおよびARTランタイム

エンドユーザー向けのDalvikとARTの違いは何ですか?これによりエンドユーザーはどのように影響を受けますか?新しいARTランタイムを選択する必要がある特定の理由はありますか?


3
この設定を見つけるには、開発者オプションを有効にして検索する必要があるという事実は、エンドユーザー向けではないことを示唆しているはずです。
ダンヒューム

1
@DanHulme良い点ですが、それでも開発者以外の愛好家は開発者のオプションで遊んでいます。彼らはそれを積極的な非開発目的で何度も使用しています。
Android Quesito

ユーザーエクスペリエンスがあなたのポイントである限り、バッテリーの電力が大幅に節約されていることに気付くでしょう...
ラーフルライナ

回答:


26

Dalvik VM(仮想マシン)は、GoogleのバージョンのJava VM(アプリが実行される)です。VMはアプリを隔離し、実際のハードウェアや他のアプリから独立させます。しかし、これが機能するためには、Dalvikはいわゆるバイトコード(仮想マシン用に設計された)をネイティブマシンコードに変換する必要があります。バイトコードからネイティブコードへの変換によるパフォーマンスの低下を最小限に抑えるために、ジャストインタイム(JIT)コンパイルと呼ばれるプロセスが実行されます。1

ART(Androidランタイム)は、Ahead-Of-Time(AOT)コンパイルを使用するDalvikの代替です。つまり、アプリを起動する前に、すぐに実行できる状態にコンパイルされます。これは通常、アプリのインストール時に行われ、起動と使用のプロセスをはるかに高速かつスムーズにします。また、これはコンパイルが一度だけ行われることを意味するため、バッテリー寿命も向上する可能性があります。

ARTのパフォーマンスとバッテリー寿命の観点で優れている場合、ARTを使用する必要がありますか?

いいえ。そうすると、サードパーティのアプリが破損する可能性があります。Googleは、開発者がアプリをテストできるように、Android 4.4でこのARTプレビューを出荷しました。

サイドノート: GoogleのARTでのアプローチはiOSに勝つことです(iOSアプリはネイティブなので、ローエンドのハードウェア仕様でもパフォーマンスが向上します)が、どこに向かっているのかわかりません... 参照してください。OEMはどちらか一方または両方を使用してデバイスを構築するのは自由です。最終バージョンはほとんどのアプリには影響しませんが、100%クロスプラットフォームではありません。

1 JITはAndroid 2.2でDalvikに追加されたことに注意してください


3
注目すべき2つの事実があります。ARTのAOTは、DEXに比べて20..25%多いストレージを使用するアプリになります。さらに、私が読んだNexus-5のテストでは、主観的な速度やバッテリーの耐久性に違いは見られませんでした。KitKatのARTが単なる開発者のプレビューおよび互換性チェック(たとえば、WhatsAppが失敗した)であることを考慮すると、どちらも確かに改善されます。それで、サチンの結論を再確認します。それは、エンドユーザーにはまだ良くありません。
イジー

2
素晴らしい答え。私はそれを少し改善する自由を取りました。しかし、私は最後の段落に同意しません:ARTは断片化を増加させません:ARTが生産準備完了と見なされる場合、アプリがDalvikとARTのどちらで実行されるかは問題ではありません。どちらも開始点として同じ.dex形式を使用します。ARTのみが.dexをネイティブコードにコンパイルします。
フロー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.