Является ли JVM компилятором или интерпретатором?
У меня есть очень простой вопрос о JVM: это компилятор или интерпретатор?
Если это интерпретатор, то что относительно JIT-компилятора, который существует внутри JVM?
Если нет, то что же такое JVM? (Я не хочу, чтобы базовое определение jVM преобразования байтового кода в машинный код и т.д.)
Ответы
Ответ 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), и он будет запущен из-за интерпретатора, который преобразует байт-код в понятный для машины код.