仮想マシンは、異なるOS上でアプリケーションを実行するために使用されます(Javaは、バイトコードとして解釈されるOS独立の.classファイルにコードをコンパイルします)。アンドロイドアプリは同じOS(Androidなど)で動作するため、VMは必要ありません(私はここで間違っている可能性があります)。それからDalvik VMが必要なのはなぜですか?Androidに仮想マシン(DVM)が必要なのはなぜですか?
答えて
Androidプラットフォームは、ARM、MIP、およびx86の異なるアーキテクチャで実行できます。各アーキテクチャのバイナリをコンパイルする必要性を抽象化するために、VMが機能します。また、開発者のメモリ管理も行います。
Javaクラスをコンパイルし、インタープリターが実行できるバイトコードに変換する必要があります。
これはJVMに似ていますが、Javaコンパイラによって.classファイルにコンパイルされる.javaファイルがあります。 .classファイルは、JVMによって実行されるバイトコード以外のものです。 JVMは、どのプラットフォーム(Windows、Linux、Unix)にも置くことができます。
アンドロイドでも、ファイルは.dexファイルにコンパイルされ、DVMによって実行されます。アプリケーションがインストールされると、Android OSは一意のLinuxユーザIDを割り当て、各アプリケーションにはDVMが割り当てられます。つまり、各アプリケーションには独自のLinuxプロセス、DVM、LinuxユーザーIDがあります。
Javaファイルは、.classファイルと比較して少ないメモリを消費する.dexファイルにコンパイルされます。
ここで、10個のアプリケーションに10個の個別DVMがあり、OSに処理するプロセスが10個あるとします。
アンドロイドOSのディスパッチャーまたはスケジューラーは、これらの10個のプロセスを処理する責任があります。これがアンドロイドの活動ライフサイクルを持つ理由です。
各プロセス(各アプリケーション)の実行状態を維持するには、DVMが必要です。
Androidが仮想マシンを必要とするのは、GoogleがAndroid APIを使いこなし、Javaインターフェイスを大幅に使用することに基づいているからです。 Java自体は通常、仮想マシン上で実行されます。
JVM自体はスタックマシンベースのVMですが、AndroidのVM(Dalvikと呼ばれます)はレジスタベースのVMです(これは、コード生成が少なく、Androidを使用しているどのデバイスでもパフォーマンスを向上させるためです)
仮想マシンの目的は、シミュレーションによってハードウェアを抽象化できるようにすることです。仮想マシンを作成してそれをコンパイルして、可能なすべてのハードウェアで動作させると、元々はJavaを普及させたものが得られます。
仮想マシンを実行できるハードウェアでコードを変更して実行することなく、コードを記述することができます。
Androidは主にC(およびC++?)でビルドされていますが、OSを操作するAPIはJavaを介してインターフェイスされるため、仮想マシンが必要です。
- 1. 仮想マシンにウイルス対策などが必要ですか?
- 2. 仮想プライベートサーバ(VPS)が必要なのはなぜですか?
- 3. 仮想テーブルの作成にOPEN_READWRITEモードが必要なのはなぜですか?
- 4. レジスタベースの仮想マシンがスタックベースの仮想マシンよりも優れているのはなぜですか?
- 5. 完全仮想化でバイナリ変換が必要なのはなぜですか?
- 6. 最適な仮想マシン/バイトコードインタプリタループ
- 7. 仮想マシンと仮想デスクトップの違いは何ですか?
- 8. AndroidエミュレータがWindows仮想マシンよりも速度が遅いのはなぜですか?
- 9. 1つの仮想ディスクを2つの異なる仮想マシンで使用仮想マシン
- 10. 論理メモリがあるときに仮想メモリが必要なのはなぜですか?
- 11. Dalvikの通常のAndroid仮想マシンとGoogle API仮想マシンの違いは何ですか
- 12. エミュレータは、仮想マシンが
- 13. 仮想マシンが必要な理由Javaプログラムを実行する必要があります。
- 14. Androidで仮想マシンを開発
- 15. クラウドコンピューティング、仮想デスクトップが必要
- 16. 仮想デストラクタ - 必要な場合
- 17. Javascript仮想マシン
- 18. Android SDKにJDKが必要なのはなぜですか?
- 19. Android/Tensorflow:テストにRandomShuffleQueueが必要なのはなぜですか?
- 20. 仮想マシン上のPHPでDOMDocumentが見つからない
- 21. 仮想メモリへの書き込みが仮想デバイスドライバに表示されないのはなぜですか?
- 22. 仮想マシンでのコンパイル
- 23. MACアドレスなどの仮想マシンの仮想マシンから物理ホスト情報を取得します。
- 24. Android:仮想マシンはウェブサイトからファイルをダウンロードできません
- 25. ファジィ/リバースエンジニアリング仮想マシン
- 26. 仮想マシン接続
- 27. Linuxと仮想マシン
- 28. Globus Toolkit仮想マシン
- 29. スーパークラスで仮想関数を実装する必要があるのはなぜですか?
- 30. ターゲットプラットフォームを事前に知っている場合、Androidはなぜ仮想マシンを使用しますか?