Я слышал, как люди говорили: "JVM обязательно является интерпретатором Java, но переводчик Java не обязательно является JVM". Это правда?
Я имею в виду разницу между Java-интерпретатором и JVM?
Я слышал, как люди говорили: "JVM обязательно является интерпретатором Java, но переводчик Java не обязательно является JVM". Это правда?
Я имею в виду разницу между Java-интерпретатором и JVM?
Да, есть разница.
Виртуальная машина Java:
Программный "механизм выполнения", который безопасно и совместимо выполняет байтовые коды в файлах классов Java на микропроцессоре (будь то на компьютере или в другом электронном устройстве).
Java-интерпретатор:
Модуль, который поочередно декодирует и выполняет каждый оператор в некотором теле кода. Java-интерпретатор декодирует и исполняет байт-код для виртуальной машины Java.
Переводчик Java на самом деле является частью JVM. Виртуальная машина не просто выполняет байт-коды, но и имеет множество задач. Эта полноценная среда называется JVM.
Проверьте:
Проще говоря, JVM интерпретирует байт-код и интерпретатор Java интерпретирует Java. Они разные, потому что байт-код и Java - это разные языки.
Байт-код - это низкоуровневый язык, такой как машинный код. Байт-код предназначен для запуска программой, называемой интерпретатором байт-кода, также называемой виртуальной машиной. Цель байт-кода - это легко интерпретировать.
Java - это язык более высокого уровня, такой как C или Python. Эти языки также могут быть интерпретированы: вы просто пишете программу, которая может запускать свой код. Он не должен включать байт-код. Это просто, что языки более высокого уровня сложнее интерпретировать напрямую.
Java обычно "интерпретируется", сначала переводя программу Java в программу байт-кода. Затем Java Virtual Machine (JVM) запускает байт-код.
Но вы могли бы интерпретировать любой язык таким образом. JVM может интерпретировать другие языки, если вы переводили их в правый байт-код.
Вы также можете интерпретировать язык программирования без какого-либо байт-кода. Некоторые интерпретаторы BASIC просто ищут инструкции BASIC в исходном коде и выполняют их. Сначала они не делают новую программу на другом языке. Если бы вы сделали то же самое для Java, это был бы интерпретатор Java, но не JVM.
Во-первых, код (теоретически) любого языка может быть скомпилирован с помощью байт-кодов JVM, чтобы разрешить выполнение в этой среде. Java-интерпретатор может запускать Java-код.
Вызов JVM неверно. JVM - это JIT-компилятор, который компилирует и запускает байт-код. Другие языки могут быть скомпилированы в байт-код, предназначенный для JVM. Статья в Википедии, описывающая такие языки.
Как я понимаю...
Java-интерпретатор выполняет строки байтового кода в качестве команд, которые должны выполняться. Выполняется байт-код.
JVM берет байтовый код и генерирует машинный код. Байт-код скомпилирован в машинный код, и выполняется машинный код.
Java-виртуальная машина - это виртуальный процессор, а java-интерпретатор java tool.thanks