Является ли Java компилируемым или интерпретируемым языком программирования?

В Windows 10 версии 1511 добавлен gem 'coffee-script-source', '1.8.0' в мой gemfile, а затем ruby ​​bin \ bundle update coffee-script-source из каталога проекта. NB: предыдущая версия сценария с кофе-скриптом, которая была заменена, была 1.10.0

138
задан displayName 7 April 2016 в 19:24
поделиться

6 ответов

Реализации Java обычно используют двухэтапный процесс компиляции. Исходный код Java компилируется до байт-кода компилятором Java. Байт-код выполняется виртуальной машиной Java (JVM). Современные JVM используют метод, называемый Just-in-Time (JIT) compilation , для компиляции байт-кода в собственные инструкции, понятные аппаратному процессору, на лету во время выполнения.

Некоторые реализации JVM могут выбрать интерпретацию байт-код вместо JIT-компиляции его в машинный код и его непосредственного запуска. Хотя он по-прежнему считается «интерпретатором», он сильно отличается от интерпретаторов, которые читают и выполняют исходный код высокого уровня (то есть в этом случае исходный код Java не интерпретируется напрямую, а байт-код, выводимый компилятором Java, интерпретируется. )

Технически возможно заранее скомпилировать Java до нативного кода и запустить полученный двоичный файл. Также можно напрямую интерпретировать код Java.

Подводя итог, в зависимости от среды выполнения, байт-код может быть:

  • скомпилирован заранее и выполнен как собственный код (аналогично большинству компиляторов C ++);
  • скомпилирован точно в срок и выполнен
  • интерпретирован
  • выполняется непосредственно поддерживаемым процессором (байт-код - это собственный набор инструкций некоторых процессоров)
198
ответ дан 23 November 2019 в 22:56
поделиться

Термины «интерпретируемый язык» или «компилируемый язык» «не имеют смысла, потому что любой язык программирования может быть интерпретирован и / или скомпилирован.

Что касается существующих реализаций Java, большинство из них включают этап компиляции в байт-код, поэтому они включают компиляцию. Среда выполнения также может загружать байт-код динамически, поэтому всегда требуется некоторая форма интерпретатора байт-кода. Этот интерпретатор, в свою очередь, может использовать или не использовать компиляцию для внутреннего кода.

В наши дни частичная своевременная компиляция используется для многих языков, которые когда-то считались «интерпретируемыми», например, Javascript.

55
ответ дан 23 November 2019 в 22:56
поделиться

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

51
ответ дан 23 November 2019 в 22:56
поделиться

И то и другое. Сначала java скомпилирован (некоторые предпочли бы сказать «переведен») в байт-код, который затем либо компилируется, либо интерпретируется в зависимости от настроения JIT.

11
ответ дан 23 November 2019 в 22:56
поделиться

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

10
ответ дан 23 November 2019 в 22:56
поделиться

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

-1
ответ дан 23 November 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: