Является ли JVM компилятором или интерпретатором?
У меня есть очень простой вопрос о JVM: это компилятор или интерпретатор?
Если это интерпретатор, то как насчет JIT-компилятора, который существует внутри JVM?
Если ни то, ни другое, то что же такое JVM? (Я не хочу, чтобы основное определение jVM преобразования байтового кода в машинный код и т. д.)
7 ответов:
во-первых, давайте иметь четкое представление о следующих терминах
Javac
компилятор Java -- компилирует ваш код Java в код
JVM
Это виртуальная машина Java -- запускает / интерпретирует / переводит байт-код в Машинный Код
JIT
как раз вовремя компилятор -- компилирует заданную последовательность команд байт-кода в машинный код при runtime перед выполнением его изначально. Это главная цель это сделать тяжелые оптимизации в производительности.Итак, давайте найдем ответы на ваши вопросы..
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
файл в оперативную память- The верификатор байтового кода компонент в JVM проверяет, есть ли какие-либо нарушения ограничений доступа в вашем коде. (Это одна из основных причин, почему java является безопасным)
- далее Исполнение Двигателя компонент преобразует байт-код в исполняемый машинный код
надеюсь, что это помогло вам..
Это немного обоих, но ни в традиционном смысле.
современные JVMs берут байт-код и компилируют его в машинный код, когда это необходимо. "JIT "в этом контексте означает" как раз вовремя."Он действует как интерпретатор извне, но на самом деле за кулисами он компилируется в машинный код.
JVM не следует путать с Java-компилятор, который компилирует исходный код в байт-код. Поэтому не полезно считать его "компилятором", а скорее чтобы знать, что в фоновом режиме он делает некоторые компиляции.
Это одновременно. Она начинается с интерпретации байт-кода и может (если она стоит), то компилировать что байт-код в машинный код.
Как @delnan уже указано в разделе комментариев, это ни.
JVM - это абстрактная машина под управлением байт-код Java.
JVM имеет несколько реализаций:
- точка доступа (переводчик + JIT компилятором)
- Далвик (интерпретатор + JIT компилятор)
- искусство (АОТ компилятор + JIT компилятор)
- документация (компилятор AOT)
- JamVM (переводчик)
...и и многие другие.
большинство других ответов, когда речь идет о JVM, относятся либо к HotSpot, либо некоторая смесь вышеперечисленных подходов к реализации СПМ.
как говорили другие, это и то и другое! Если вы хотите сослаться на него в хороших деталях, чем вы можете видеть:Это описание IBM
JVM имеют как компилятор, так и интерпретатор. Потому что компилятор компилирует код и генерирует байт-код. После этого интерпретатор преобразует байт-код в машинный понятный код.
пример: написать и скомпилировать программу и она работает на Windows. Взять.файл класса в другую ОС (Unix), и он будет работать из-за интерпретатора, который преобразует байт-код в машинный понятный код.