どちらも「仮想マシン」と呼ばれていることは知っていますが、正確な違いは何ですか?
仮想マシンという用語は、単に口語を指すという意味で口語表現です。 考え 機械の(実際のものではありません)。このため、マシンのように「動作」するほとんどすべてのソフトウェア(したがって仮想)を参照できます。ビデオゲームエミュレータは仮想マシンです(実際には、JavaVMの動作と非常によく似ています)。
仮想マシンのタイプ間の最大の違いは 何 彼らは仮想化し、 どうやって 彼らはそれを行います(つまり、マシンのアイデアをどのように抽象化するか)。
VMWare(VirtualBox /etc。)は、ホストマシン上のハードウェアをゲストマシンに提示しようとします。これにより、ゲストマシンはハードウェアを直接使用できます(ゲストでUSBデバイスを使用できるようになります)。このコンテキストでは、実際にはそれほど多くはありません。ゲストがハードウェア自体を使用するため、(Wordの古典的な意味で)仮想化されます。これに、VMWare/etc。 「仮想マシン」というよりは、ハードウェアプロキシに似ています。 1つのプラットフォーム/アーキテクチャ用に構築されたソフトウェアは、仮想マシンのゲスト/ホストに関係なく、そのプラットフォーム/アーキテクチャに対してのみ実行されます。
Javaに関しては、「the」と言う方が適切ですJava Virtual Machine、more than "a" Java virtual machine; JVMはハードウェアを抽象化しようとします開発者がアーキテクチャの種類やプラットフォームなどを気にする必要がないように、マシン自体を使用します。Javaで構築されたソフトウェアは、物理に関係なく、適切なJVMバージョンがインストールされているすべてのプラットフォームで実行する必要があります。マシンタイプ。
仮想マシンのこれら2つの概念の違いは、コードを抽象化してネイティブに実行することです(つまり、ハードウェア上で直接実行します)。 JVMは、プラットフォーム/アーキテクチャ/マシンを可能な限り抽象化して、コードを可能な限り非依存にして、(Javaをサポートする)可能な限り多くのデバイスで実行できるようにします。VMWare/ VirtualBoxコンテナはプラットフォームの実行に必要な物理ハードウェアを削減できるように、マシンの物理性を可能な限り削減しますが、同じソフト制限があります(たとえば、ARMアセンブリを記述できず、期待できません) VMWare/VirtualBoxのx86プロセッサで「実行するだけ」に)。
これら2つのタイプの仮想マシンの「正確な」違い(JVMを.NETまたはWINEエミュレーターと比較するなど)で説明できる詳細はかなりありますが、それは低レベルのシステム設計に入ります。ただし、大まかに言えば、これはJVMとVMWareVMの主な違いを説明するのに役立つはずです。
それが明確さを加えるのに役立つことを願っています。
主な違いは、基盤となるマシンです。 Javaの場合、それは独自の機械語(バイトコード)を備えた明確に指定されたアドホックな純粋なソフトウェアマシンですが、VMWare(またはVirtualBoxなど)の場合、提示される基盤となるマシンは、実際の機械語と同じ機械語を使用する物理PCに近いです。ハードウェア(x86)。
JVMは、JavaがJavaプログラムを実行するために使用する仮想マシンであるため、開発者はコードを1回コンパイルするだけで、プログラムを他のOSで実行できます。 Javaプログラムは、再コンパイルせずに、マシンのアーキテクチャおよびOSと互換性のあるJVMで実行する必要があります。
VMware VMは、仮想マシンを作成して実行するハイパーバイザーソフトウェアです。ここでの「仮想マシン」は、ウィキペディアから引用されているようなものです。
コンピューティングでは、仮想マシン(VM)はコンピューターシステムのエミュレーションです。仮想マシンはコンピュータアーキテクチャに基づいており、物理コンピュータの機能を提供します。それらの実装には、特殊なハードウェア、ソフトウェア、またはそれらの組み合わせが含まれる場合があります。
https://en.wikipedia.org/wiki/Java_virtual_machine
https://en.wikipedia.org/wiki/Hypervisor
Virtual_machine