JVM транслятор или интерпретатор?

138
03 августа 2019, 11:10

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

Answer 1

JVM содержит внутри себя и интерпретатор, и транслятор (just-in-time translator, JIT). Сначала программа исполняется интерпретатором, и для каждого метод накапливается статистика, сколько раз он вызывался. Как только обнаружатся часто исполняемые методы, они транслируются в машинный код, а редко исполняемые продолжают интерпретироваться. Этот процесс идет постоянно, самые часто исполняемые методы подвергаются перекомпиляции с многоуровневой оптимизацией, чтобы сделать код максимально эффективным.

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

Answer 2

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

Answer 3

Вопрос не совсем корректен, так как любой интерпретатор, так же как и компилятор, в общем случае является транслятором.

READ ALSO
Сборка JavaFX проекта

Сборка JavaFX проекта

Не удается никак собрать исполняемый жарникСобираю проект как и через project structure - artifact - jar так и через javafx application

107
Java фрагментация кучи OutOfMemory

Java фрагментация кучи OutOfMemory

Есть подозрение, что в приложении происходит фрагментация кучиJVM запускается с параметрами -Xms1g -Xmx2g

116
Свободная JVM для не свободного ПО

Свободная JVM для не свободного ПО

Имеется игра для андроида написанная на JavaЕсть рабочий порт для винды и линукса

127
Перенос данный в Label

Перенос данный в Label

Пишу игру "Быки и Коровы", думаю все ее знают, но вот - правилаВ коде много недоработок, но в целом все работает

112