仮想マシンは、異なる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. レジスタベースの仮想マシンがスタックベースの仮想マシンよりも優れているのはなぜですか?
- 3. 最適な仮想マシン/バイトコードインタプリタループ
- 4. AndroidエミュレータがWindows仮想マシンよりも速度が遅いのはなぜですか?
- 5. Dalvikの通常のAndroid仮想マシンとGoogle API仮想マシンの違いは何ですか
- 6. Javascript仮想マシン
- 7. Android SDKにJDKが必要なのはなぜですか?
- 8. 仮想メモリへの書き込みが仮想デバイスドライバに表示されないのはなぜですか?
- 9. Globus Toolkit仮想マシン
- 10. 仮想マシン接続
- 11. ファジィ/リバースエンジニアリング仮想マシン
- 12. MACアドレスなどの仮想マシンの仮想マシンから物理ホスト情報を取得します。
- 13. Android:仮想マシンはウェブサイトからファイルをダウンロードできません
- 14. なぜ仮想キーボードは消えないのですか?
- 15. 仮想マシンのapacheが利用できない
- 16. ローカル仮想マシンから仮想ホストにアクセス
- 17. Maven 2.1.0がJava仮想マシンにシステムプロパティを渡さない
- 18. 仮想マシン上のhadoopクラスタ
- 19. 仮想マシン上のSendmailR
- 20. 仮想マシンのベンチマーク、プロファイリング
- 21. Azure仮想マシンのElasticsearch
- 22. 仮想マシンの理解
- 23. vmware仮想マシンへのアクセス
- 24. Python3の仮想マシンにmysqlclientをインストールできない
- 25. は、仮想マシンに使用可能な重複を
- 26. Ubuntu 14.04仮想マシンにリモートで接続
- 27. 名前付き仮想ホストが動作しないのはなぜですか?
- 28. ListViewがユーザーコントロールを仮想化しないのはなぜですか?
- 29. 仮想マシンを自動化
- 30. バックアップMicrosoft Azure仮想マシン