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