Является ли JVM формой ВМ? - PullRequest
3 голосов
/ 26 ноября 2010

Я в основном разработчик .NET, и я много работаю в области инфраструктуры с такими технологиями, как ESX и Hyper-V.Я нахожу очень странным, что в JVM есть виртуальная машина (я все время думаю о виртуальных машинах в форме, расположенной на сервере ESX).

Правильно ли я сказал, что JVM - это настоящая виртуальная машина, сидящаяопределенное кольцо между ОС и приложениями (не между оборудованием и ОС)?

Спасибо

Ответы [ 5 ]

4 голосов
/ 26 ноября 2010

Это виртуальная машина так же, как CLR (часть .NET) является виртуальной машиной.Это не совсем то же самое, что и виртуальная машина типа Hyper-V ... Hyper-V виртуализирует обычное оборудование для запуска всей операционной системы, так что большая часть кода "думает", что он действительно работает непосредственно на обычном компьютере.

JVM или CLR немного отличаются тем, что:

  • Виртуализированный набор команд был специально разработан для виртуализации от до .Хотя есть некоторое «нативное Java-байт-код», это далеко от обычного способа запуска Java.Обычно байт-код и IL скомпилированы JIT - и сборщик мусора является частью виртуальной машины, чего, конечно, нет в Hyper-V и т. Д.
  • ВМ не запускает операционную систему сама по себе -он запускает в операционной системе, о которой он знает напрямую, и использует для доступа к файловой системе и т. д.

Оба типа «виртуальной машины» выполняют код в виртуальной среде, ноосновные проблемы этих двух очень разные.

3 голосов
/ 26 ноября 2010

Виртуальная машина Java (и .NET, и Python, и Parrot ...) - это «симулируемый компьютер». Он имеет инструкции и поведение, которые идентичны для всех операционных систем, в которых работает виртуальная машина, что делает работу «кросс-платформенной». Сама виртуальная машина, разумеется, зависит от платформы, чтобы сгладить детали кода клиента.

Так что да, все, что касается Infocom Z-Machine и виртуальной машины Knuth MIX, фактически является "виртуальными машинами".

1 голос
/ 26 ноября 2010

Хотя ESX и Hyper-V эмулируют компьютерную систему, JVM обеспечивает выполнение (и оптимизацию) байтового кода Java только на поддерживаемой платформе.

1 голос
/ 26 ноября 2010

Неправильно виртуальная машина .

0 голосов
/ 26 ноября 2010

Да, JVM берет байт-код и выполняет его, и он может применять ограничения безопасности для приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...