Как понимать работу jvm?

253
02 июня 2018, 12:20

Я начал интересоваться, как работает виртуальная машина Java.

На данный момент я знаю, что исходный код java компилятором преобразуется в байткод. Соответственно этот байткод — это и есть инструкции для виртуального процессора виртуальной машины. Сама jvm зависит от платформы, на которой она используется.

Но вот теперь вопрос, раз сама JVM — платформа, имеющая свой ненастоящий процессор который понимает инструкции (байткод), то где в этой цепочке программа преобразуется в машинный код, который уже будет исполнять реальный процессор компьютера? JVM же когда-то должна сгенерировать машинной код, который зависит от какой либо операционной системы?

Answer 1

При компиляции JVM (не работе!) под этот процессор и ОС.

Код, который обходит JVM-байткод и выполняет соответствующие системные команды без предварительной их компиляции это код самой JVM на каком-то языке, который компилируется соответствующим компилятором напрямую в машинный код (скажем, JVM проекта OpenJDK написана на C++).

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

Но это если не учитывать JIT. Который целые последовательности команд (а не отдельные команды) преобразует в соответствующий машинный код, но уже в процессе работы. Но там-то понятно, откуда машинный код берётся.

READ ALSO
ObjectMapper: параметризация

ObjectMapper: параметризация

У меня есть JSON, который нужно прочитать в объект при помощи ObjectMapperВыглядит это так:

522
MockMvc: как отправить JSON как RequestPart?

MockMvc: как отправить JSON как RequestPart?

У меня есть контроллер, который принимает два RequestPart: JSON и MultipartFile:

200
Как сделать сайт статичным?

Как сделать сайт статичным?

Хочу что бы сайт отображался на всех устройствах одинаково(отображался так как на 1905px отображается)

179
Что лучше использовать и как?

Что лучше использовать и как?

Что использовать margin или padding, и каким образом? Верстка на bootstrap

200