JITがあろうが無かろうが、バイトコードからネイティブコード(マシン語)に変換されて実行される。
現在のAndroidやWindowsではアプリのインストール時に行われるので、アプリの起動時に変換されるというのはもう10年くらい昔の話
さらにVMエンジンやライブラリの更新時にも再変換(最適化)が行われる。アプリの最適化を行っていますとか出て数分掛かる時がそれ。

また最適化についても、スタンドアローンのコンパイラから直接バイナリを吐き出すよりも
一度変換されたバイナリコードの実行中にも随時プロファイリングを継続し適宜最適化を行う処理系が普及しており
実際JAVAサーブレット等では長時間実行されカリカリに最適化された実行コード(バイナリ)は、スタンドアローンのコンパイラを一回通したものより極まっている

ビルド1回通しただけと随時最適化で何千何万時間回してるコードと最適化の試行時間どっちが多いか?って単純な話ではないがまあ時間掛けられるならそれに越した事ないわなって話でもある