Qual é a diferença entre uma máquina virtual Java e uma VM VMWare?

2

Eu sei que ambos são chamados de 'máquinas virtuais', mas qual é a diferença exata?

    
por WinMacLinUser 25.11.2015 / 07:48

3 respostas

3

O termo máquina virtual é um coloquialismo no que se refere simplesmente à idéia de uma máquina (não a própria coisa em si). Devido a isso, pode se referir a quase qualquer peça de software (daí o virtual) que "atua" como uma máquina. Um emulador de videogame é uma máquina virtual (e na verdade é bem parecido com o funcionamento do JavaVM).

A maior diferença entre os tipos de máquinas virtuais é em o que eles virtualizam e como eles fazem (ou seja, como eles abstraem a ideia de uma máquina).

VMWare (VirtualBox / etc.) tenta apresentar o hardware na máquina host para a máquina convidada para que a máquina convidada possa usar o hardware diretamente (como poder usar um dispositivo USB no convidado) e, nesse contexto, não muita coisa é realmente virtualizada (no sentido clássico da palavra), já que o convidado usa o próprio hardware. Para isso, VMWare / etc. são mais parecidos com proxies de hardware do que uma "máquina virtual". O software criado para uma plataforma / arquitetura ainda será executado apenas para essa plataforma / arquitetura, independentemente do convidado / host da máquina virtual.

Quanto ao Java, é mais apropriado dizer "o" Java Virtual Machine, mais do que "uma" máquina virtual Java; A JVM tenta abstrair o hardware e a própria máquina, de modo que o desenvolvedor não precisa se preocupar com coisas como tipo de arquitetura ou plataforma. O software construído com Java deve ser executado em qualquer plataforma que tenha a versão adequada da JVM instalada, independentemente do tipo de máquina física.

A diferença entre esses dois conceitos de uma máquina virtual está na abstração e na execução do código nativamente (ou seja, direto no hardware). A JVM tenta abstrair o máximo possível da plataforma / arquitetura / máquina para tornar o código o mais agnóstico possível para poder rodar em tantos dispositivos quanto possível (que suportam Java), enquanto que um contêiner VMWare / VirtualBox abstrai o a fisicalidade da máquina, tanto quanto possível, para que você possa reduzir o hardware físico necessário para executar uma plataforma, embora você ainda tenha as mesmas limitações (por exemplo, não consigo gravar o assembly ARM e esperar que ele seja executado em um processador x86) em VMWare / VirtualBox).

Há muito mais detalhes que poderiam ser explicados nas diferenças "exatas" entre esses dois tipos de máquinas virtuais (mais do que comparar a JVM com o .NET ou o emulador WINE), mas que entra em sistemas de nível inferior. desenhar; em um nível alto, isso deve ajudar a explicar as principais diferenças entre a JVM e uma VM VMWare.

Espero que ajude a adicionar alguma clareza.

    
por 25.11.2015 / 14:33
1

A principal diferença é a máquina subjacente. Com Java, é uma máquina de software pura ad hoc bem especificada com sua própria linguagem de máquina (bytecode) enquanto com VMWare (ou VirtualBox, etc.), a máquina subjacente apresentada é próxima a um PC físico usando a mesma linguagem de máquina hardware (x86).

    
por 25.11.2015 / 08:08
0

A JVM é uma máquina virtual que o Java usa para executar programas Java, portanto o desenvolvedor compila o código apenas uma vez, então o programa pode ser executado em outros SOs e arquiteturas sem recompilá-lo, com uma condição, o programa Java deve ser executado pela JVM que é compatível com a arquitetura e os sistemas operacionais da máquina.

VMware VM é um software hipervisor, que cria e executa a máquina virtual. A "máquina virtual" aqui é como citada na Wikipedia:

In computing, a virtual machine (VM) is an emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination.

link

link

Virtual_machine

    
por 28.05.2017 / 01:07