Что такое JVM, если JIT выполняет преобразование байт-кода в машинные инструкции
Я действительно пытаюсь понять следующее:
Раньше я знаю:
Когда скомпилирована Java-программа, будет создан файл .class
. В этом коде находится в виде байтов. Затем JVM
преобразует этот байтовый код в понятный для машины формат.
Теперь я вижу в один из вопросов в SO
Компилятор Just-In-Time (JIT) - это функция времени выполнения интерпретатор, который вместо интерпретации байт-кода каждый раз, когда метод вызывается, будет компилировать байт-код в машинный код инструкции работающей машины
Итак, здесь JIT преобразует байт-код в машинные инструкции. Тогда что такое использование JVM. Мы можем сделать это с JIT. Насколько мне известно, JIT предназначен только для повышения производительности JVM.
Спасибо заранее.
Ответы
Ответ 1
JIT - это просто часть JVM. Другие части включают в себя интерпретатор байт-кода, методы проверки загрузки классов и связывания, а также поддержку встроенного кода для таких вещей, как отражение, ввод-вывод и т.д.
В этом смысле JIT не позволяет JVM работать быстрее. Вместо этого он заставляет Java-код работать быстрее... чем если бы JVM просто интерпретировал его.
В действительности, JVM действительно начинает интерпретировать байт-коды. Спустя некоторое время JVM использует свой JIT-компилятор для компиляции сильно используемых методов в собственный код, используя статистику, собранную при интерпретации для настройки кода для данной проблемы.
Кстати, эта часть текста, которую вы цитировали, неуклюжна и технически неточна:
Компилятор Just-In-Time (JIT) - это функция интерпретатора времени выполнения... (контекст)
Фактически, JIT не является признаком интерпретатора. Скорее, JIT - это функциональность JVM, которая работает вместе с интерпретатором.
Ответ 2
Чтобы быть ясным:
JVM выполняет все как:
Он остается на вершине операционной системы и обеспечивает абстракцию между скомпилированной java-программой и операционной системой. Таким образом, java скомпилированная программа не должна беспокоиться о том, на какой платформе она должна Работа. Java-программа компилирует код в байт-коды, которые JVM может понимать и выполнять.
ЛТ
Когда JVM компилирует файл класса, он не заполняет полный класс файл; он компилирует только часть его по необходимости. Это позволяет избежать тяжелых синтаксический анализ полного исходного кода. Этот тип компиляции называется JIT или Just-In-Time. JVM - зависимая генерация кода (OS) JIT - платформа Oriented, генерирует собственный байтовый код, поэтому он быстрее, чем JVM:)
Ответ 3
Он компилирует его как раз для JVM с оптимизацией.
Ответ 4
Виртуальная машина Java (JVM) предоставляет всю среду для запуска программы Java. Он интегрируется с операционной системой, загружает классы и запускает программы. Компилятор Just-In-Time (JIT) - это всего лишь небольшая часть, которая может быть отключена (-Xint), но когда она включена, обеспечивает полезное улучшение производительности. Были реализации JVM, которые не включали JIT, и реализации, которые работали с предварительной компиляцией Java на машинный код так же, как традиционные языки, такие как C или С++.