Java
コンパイラ

コードが実行されるまで

More than 1 year has passed since last update.

実行時コンパイラ(JIT)

コード→中間コード(バイトコードなど)→コンパイルしながら実行

  • メリット
    • 環境に依存せずに実行できる
    • 中間コードから機械語への変換は、ソースコードからの変換よりも遥かに効率がいいため速い
    • 実行時の統計を使って最適化できる
  • デメリット
    • 実行時にコンパイルをするのでオーバーヘッドとなる

wiki

事前コンパイラ(AOV)

コード→機械語→実行

  • メリット
    • 時間のかかる最適化を行うことができる
  • デメリット
    • 実行環境が限られる

wiki

インタプリタ

コード→行毎とかで解釈して実行

  • メリット
    • 小さな単位で実行するので省メモリ
    • 起動が速い
  • デメリット
    • 平均的に遅い

wiki

適応的コンパイル

起動当初はインタプリタとして実行し、よく呼び出されるメソッドや繰り返し実行されるコードはコンパイルして実行する。
JITとインタプリタの良いとこどり。
wiki

併せて読みたい

Javaの性能