Это очень многое зависит.
Вы должны понимать, что реализации jvm на сегодняшний день - это большие, мощные инструменты.
Как правило, они имеют часть переводчика.Тот, кто пинает первым: он читает байт-код и напрямую его интерпретирует.В прямом смысле этого названия виртуальная машина Java !
Но как только определенный код выполняется многократно (много тысяч повторений), запускаются так называемые своевременные компиляторы. Они переводят байт-код в машинный код и выполняют все виды оптимизации производительности., например, метод inline.
Таким образом, такие jvms выполняют обе вещи, которые вы упомянули в своем вопросе.