JVM, байт код, компилятор

109
17 февраля 2021, 16:50

Никак не могу разобраться и путаюсь просто.

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

— А кто же компилирует программу в машинный код при ее запуске?

Есть специальная программа под названием JVM (Java Virtual Machine) – Виртуальная Машина Java. Именно ее запускают первой, когда нужно запустить программу, состоящую из байт-кода. А уже JVM перед выполнением нужной программы компилирует ту в машинный код.

Правильно ли я понял, мы написали код потом этот из этого кода компилятор делает байт-код, а потом JVM из этого байт-кода делает машинный код и потом что? Программа запускается или что? И вообще правильно ли я описал поэтапность всего этого? Помогите пожалуйста

Answer 1

А кто же компилирует программу в машинный код при ее запуске?

В общем случае никто, JVM интерпретирует байткод. Но в частности виртуальная машина HotSpot использует JIT-компилятор для компиляции байткода в машинный код.

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

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

READ ALSO
Java - Enterprise и Web в чем отличие?

Java - Enterprise и Web в чем отличие?

Прочитал прилично статей, но так и не понял главную суть:

96
Java / Selenium Документ в документе

Java / Selenium Документ в документе

Есть сайт в котором содержится еще один документ в виде

116
Шахматы на android [закрыт]

Шахматы на android [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме

110
CompletableFuture not completed

CompletableFuture not completed

Request прекрасно работает - уходит на сервер, сервер его принимаетЗатем должен прийти ответ от сервера

93