Подтвердить что ты не робот

Является ли виртуальная машина Java виртуальной машиной в том же смысле, что и мой файл VMWare или Parallels?

Является ли виртуальная машина Java виртуальной машиной в том же смысле, что и мой файл VMWare или Parallels?

4b9b3361

Ответ 1

Нет.

VMWare, а остальные фактически виртуализируют аппаратное обеспечение машины. Операционная система, работающая внутри контейнера VMWare (или контейнеров виртуализации Parallels или Windows или Bochs или...), имеет разную степень осведомленности о работе в виртуальном контейнере. В VMWare операционная система не знает, что она работает в виртуальном контейнере. Операционная система вообще не изменена, хотя обычно устанавливаются специализированные драйверы (самое главное видео) для предотвращения проблем с производительностью. Некоторые другие виртуальные машины не выполняют полную аппаратную виртуализацию и вместо этого требуют, чтобы ОС внутри контейнера выполняла специальные вызовы в контейнере вместо обычных аппаратных вызовов.

JVM не является виртуальной машиной в этом смысле. Никакое оборудование, кроме процессора, не виртуализировано. JVM - это, по сути, виртуализованный процессор плюс такая же среда выполнения, которая включена в С++ или любой другой объектно-ориентированный язык, а также сбор мусора и другие предметы первой необходимости. Кроме того, конечно, файлы классов Java (и JAR файлы и т.д.) Не являются машинным кодом, а промежуточным байтовым кодом. Таким образом, JVM должен компилировать или интерпретировать файлы классов (независимо от того, содержится ли он в файле JAR или нет) во время выполнения, и имеет возможность загружать и находить новый код динамически во время выполнения.

JVM называется виртуальной машиной, поскольку определение JVM определяет абстрактную машину. Сюда входят регистры, стек и т.д., А байт-код, скомпилированный исходным кодом Java, является фактически машинным кодом для этой виртуальной машины. Затем JVM интерпретирует или компилирует этот байтовый код в инструкции на рабочем месте.

Разница заключается в том, что JVM - это виртуализированный процессор, а другие виртуальные машины - виртуализированные машины (включая видеокарту, сеть и другие внешние устройства и аппаратные регистры).

Ответ 2

Нет. Существует различие между виртуальной машиной и виртуальной машиной процесса. JVM - это виртуальная машина процесса, тогда как VMWare и вид - это системные виртуальные машины. Подробнее см. запись в википедии.

Что касается параллельных виртуальных машин, то вышеупомянутые состояния записи,

PVM (параллельная виртуальная машина) не строго виртуальных машин, так как приложения, работающие сверху, все еще имеют доступ ко всем службам ОС и поэтому не ограничивается системой модель, предоставленная "VM".

Ответ 3

Там приличное резюме различий в "Running Xen: практическое руководство по виртуализации" Жанны Мэтьюз и др. (Amazon). VMWare является примером полной виртуализации и стремится к виртуализации физической аппаратной архитектуры, так что на нее могут сидеть разные немодифицированные гостевые операционные системы. Виртуальная машина Java является примером того, что они называют виртуализацией приложений, где "Приложения запускаются в виртуальной среде исполнения, которая предоставляет стандартный API для межплатформенного исполнения и управляет потреблением приложений локальными ресурсами". (стр. 13)

В обоих случаях у вас есть уровень виртуализации, над которым работает программное обеспечение. JVM запускает приложения Java, в то время как VMWare запускает полные операционные системы. VMWare виртуализирует машину, которая всегда была выражена как физическое оборудование. JVM виртуализирует машину, которая может быть выражена в физическом оборудовании, но почти всегда нет (но см. аппаратные JVM).