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

Является ли JVM компилятором или интерпретатором?

У меня есть очень простой вопрос о JVM: это компилятор или интерпретатор?

Если это интерпретатор, то что относительно JIT-компилятора, который существует внутри JVM?
Если нет, то что же такое JVM? (Я не хочу, чтобы базовое определение jVM преобразования байтового кода в машинный код и т.д.)

4b9b3361

Ответ 1

Во-первых, давайте иметь четкое представление о следующих членах

Javac - компилятор Java. Составляет код Java в Bytecode

JVM - виртуальная машина Java - запускает/интерпретирует/переводит Bytecode в собственный машинный код

JIT является компилятором Just In Time. Компилирует заданную последовательность команд байтового кода для машинного кода в время выполнения, прежде чем выполнять его изначально. Основная цель - сделать большую оптимизацию производительности.

Итак, давайте найдем ответы на ваши вопросы.

1) JVM: is it a compiler or an interpreter? - Ans: Интерпретатор

2) what about JIT compiler that exist inside the JVM? - Ans: Если вы прочтете этот ответ полностью, вы, вероятно, знаете его сейчас

3) what exactly is the JVM? - Ans:

  • JVM - это виртуальная платформа, которая находится в вашей оперативной памяти.
  • Его компонент загрузчик классов загружает файл .class в оперативную память
  • Компонент Байт-код Verifier в JVM проверяет наличие каких-либо нарушений ограничения доступа в вашем коде. (Это одна из основных причин безопасности Java)
  • Затем компонент Execution Engine преобразует Bytecode в исполняемый машинный код

Надеюсь, это помогло вам.

Ответ 2

Это немного, но не в традиционном смысле.

Современные JVM берут байт-код и компилируют его в собственный код, когда это необходимо. "JIT" в этом контексте означает "как раз вовремя". Он действует как интерпретатор извне, но на самом деле за кулисами он компилируется в машинный код.

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

Ответ 3

Как @delnan уже не указано в разделе комментариев, это ни.

JVM - это абстрактная машина с байт-кодом Java.

JVM имеет несколько реализаций:

  • HotSpot (интерпретатор + JIT- компилятор)
  • Dalvik (интерпретатор + JIT-компилятор)
  • ART (AOT- компилятор + JIT-компилятор)
  • GCJ (компилятор AOT)
  • JamVM (переводчик)

... и многие другие.

Большинство других ответов, когда речь идет о JVM, относятся либо к HotSpot, либо к некоторому сочетанию вышеуказанных подходов к реализации JVM.

Ответ 4

Это и то, и другое. Он начинается с интерпретации байт-кода и может (если он решит, что это того стоит), тогда скомпилируйте этот байт-код на собственный машинный код.

Ответ 5

Это и то, и другое. Он может интерпретировать байт-код и компилировать его в собственный код.

Ответ 6

Как говорили другие, это и то, и другое! Если вы хотите передать его в хороших деталях, чем вы можете видеть: Это описание IBM

Ответ 7

Виртуальная машина Java - это программное обеспечение, которое работает на компьютере и устанавливается на любой компьютер, который интерпретирует файлы классов .JVM создает среду на компьютере. JVM создает среду для интерпретатора для байт-кода .JVA Интерпретирует байт-код и в соответствии с машинным кодом генерирует машину. JVM - это абстрактная машина, которая обеспечивает среду времени выполнения, в которой байт-код может быть JVM, играет важную роль в создании java portable.it обеспечивает уровень абстракции между скомпилированной Java-программой и аппаратной платформой и операционной системой. КАК РАБОТАТЬ ПРОГРАММА JAVA. PROGRAM↔COMPILED --- BYTECODE --- JVM — INTERPRETER ---- КОД МАШИНЫ Когда компилируется программа JVM. он генерирует байт-код, а байт-код - это файлы классов, которые он независим, и после создания байт-кода JVM интерпретирует байт-код и генерирует машинный код. teeztaree

Ответ 8

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

Пример. Запишите и скомпилируйте программу, и она работает в Windows. Возьмите файл .class в другую ОС (Unix), и он будет запущен из-за интерпретатора, который преобразует байт-код в понятный для машины код.