Java выполняет как компиляцию, так и интерпретацию,
В Java программы не компилируются в исполняемые файлы ; они компилируются в байт-код (как обсуждалось ранее), который JVM (виртуальная машина Java) затем интерпретирует / выполняет во время выполнения. Исходный код Java компилируется в байт-код, когда мы используем компилятор javac. Байт-код сохраняется на диске с расширением .class .
Когда программа должна быть запущена, байт-код преобразуется, байт-код может быть преобразован с использованием компилятора JIT. В результате получается машинный код, который затем подается в память и выполняется.
Javac - это компилятор Java который компилирует код Java в байт-код. JVM - это виртуальная машина Java, которая выполняет / интерпретирует / переводит байт-код в машинный код. В Java, хотя он считается интерпретируемым языком, он может использовать компиляцию JIT (Just-in-Time), когда байт-код находится в JVM. JIT-компилятор считывает байт-коды во многих разделах (или полностью, редко) и динамически компилирует их в машинный код, чтобы программа могла работать быстрее, а затем кэшироваться и повторно использоваться позже без необходимости перекомпиляции. Таким образом, JIT-компиляция сочетает в себе скорость скомпилированного кода с гибкостью интерпретации.
Интерпретируемый язык является типом языка программирования , для которого большинство его реализаций выполнения инструкций непосредственно и свободно, без предварительной компиляции программы в инструкцию машинного языка. Интерпретатор выполняет программу напрямую, переводя каждый оператор в последовательность из одной или нескольких подпрограмм, уже скомпилированных в машинный код.
Компилируемый язык является языком программирования , чьи реализации , как правило , составители (переводчики , которые генерируют машинный код из исходного кода), а не переводчики (шаг за шагом исполнителями исходного кода, где нет предварительного выполнения перевода не происходит)
В современных реализациях на языке программирования, таких как в Java, для платформы все более популярно предоставлять обе опции.