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.