Разница между интерпретатором Java и JVM - PullRequest
12 голосов
/ 09 августа 2010

Я слышал, как люди говорили: «JVM - это обязательно интерпретатор Java, но интерпретатор Java - не обязательно JVM» Это правда?

Я имею в виду, есть ли разница между интерпретатором Java и JVM?

Ответы [ 6 ]

16 голосов
/ 09 августа 2010

Да, есть разница.

Виртуальная машина Java:

Программный «механизм выполнения», который безопасно и совместимо выполняет байтовые коды в файлах классов Javaна микропроцессоре (будь то компьютер или другое электронное устройство).

Интерпретатор Java:

Модуль, который поочередно декодирует и выполняет каждое выражение в некотором теле кода.,Интерпретатор Java декодирует и выполняет байт-код для виртуальной машины Java.

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

Проверка:

8 голосов
/ 09 апреля 2014

Проще говоря, JVM интерпретирует байт-код, а интерпретатор Java интерпретирует Java.Они отличаются, потому что байт-код и Java - это разные языки.

Байт-код - это язык низкого уровня, такой как машинный код.Байт-код предназначен для запуска программой, называемой интерпретатором байт-кода, также называемой виртуальная машина .Цель байт-кода состоит в том, чтобы легко интерпретировать .

Java - это язык более высокого уровня, такой как C или Python.Эти языки тоже можно интерпретировать: вы просто пишете программу, которая может выполнять их код.Это не должно включать байт-код.Просто языки более высокого уровня труднее интерпретировать напрямую.

Обычно Java «интерпретируют», сначала переводя программу Java в программу с байт-кодом.Затем Виртуальная машина Java (JVM) запускает байт-код.

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

Вы также можете интерпретировать язык программирования напрямую, без какого-либо байт-кода.Некоторые интерпретаторы BASIC просто ищут BASIC-инструкции в исходном коде и выполняют их.Сначала они не делают новую программу на другом языке.Если вы сделали то же самое для Java, это был бы интерпретатор Java, но не JVM.

0 голосов
/ 10 марта 2013

виртуальная машина Java - это виртуальный процессор, а интерпретатор Java - Java tool.thanks

0 голосов
/ 09 августа 2010

Как я понимаю ...

Интерпретатор Java выполняет строки байтового кода как команды, которые должны быть выполнены. Байт-код выполнен.

JVM берет байт-код и генерирует машинный код. Байт-код компилируется в машинный код, и машинный код выполняется.

0 голосов
/ 09 августа 2010

Вызов JVM интерпретатором Java неверен. JVM - это JIT-компилятор, который компилирует и запускает байт-код. Другие языки могут быть скомпилированы в байт-код, предназначенный для JVM. Статья в Википедии с подробным описанием таких языков.

0 голосов
/ 09 августа 2010

Например, код из (теоретически) любого языка может быть скомпилирован в байт-коды JVM, чтобы разрешить выполнение в этой среде. Интерпретатор Java может выполнять только код Java.

...