AOT と JIT の違い
実行の前に変換するか、実行しながら変換するか

更新日 2026年11月6日 読む時間の目安 約5分
この記事の要点
  • AOT と JIT は、Android のアプリをネイティブコードに変換する方式です。違いは、変換するタイミングです。
  • AOT は実行の前に、よく使う部分をあらかじめ変換しておく、JIT は実行時に少しずつ変換する、と覚えます。
  • Android 5.0 以降の ART は、AOT と JIT を併用して高速化しています。5.0 より前の VM は Dalvik です。
この記事の目次
  1. 先に押さえる: Android アプリが動くまで
  2. AOT とは
  3. JIT とは
  4. 違いを表で比べる
  5. まぎらわしい言葉
  6. 試験での問われ方
  7. 覚え方
  8. 第6章の問題を解いてみる
  9. よくある質問

先に押さえる: Android アプリが動くまで

Android OS 向けのアプリは、おもに Java や Kotlin で作られます。作ったソースコードはコンパイルされて、Android バイト・コードという中間言語になります。この中間言語は、そのままでは CPU が直接実行できないので、動かすときにネイティブコード(CPU が直接理解して実行できる形式)に変換する必要があります。

この変換を受け持つのが、VM(仮想機械) などのアプリの実行環境です。VM は、プロセッサや OS の違いを吸収する仮想の実行環境で、Android では次のように変わりました。

  • Dalvik: Android 5.0 より前に採用されていた VM。
  • ART(Android Run Time): Android 5.0 以降で採用されている実行環境。パフォーマンスを改善するために置き換わりました。

ART が使う「変換のタイミング」の違いが、AOT と JIT です。

AOT とは

AOT(Ahead Of Time)は、よく使うプログラムの部分を、実行の前にあらかじめネイティブコードに変換しておくコンパイラ(方式)です。前もって変換してあるので、実行するときにその部分を変換する手間がなく、高速に動作できます。

ART は、よく使用される部分を AOT で事前に変換します。

JIT とは

JIT(Just In Time)は、プログラムの実行時に、ネイティブコードへ逐次(少しずつ)変換していく方式です。実行しながら変換するので、事前の変換は要りません。

ART では、あまり使われない部分は、従来から使われている JIT で逐次変換します。つまり、ART は AOT と JIT を併用して高速化しています。「すべてを JIT だけで変換する」「すべてを AOT だけで変換する」と述べた記述は誤りです。

AOT と JIT の変換のタイミング AOT(実行の前に変換しておく) よく使う部分 事前に変換 → ネイティブコード JIT(実行しながら変換する) 実行するとき 逐次変換 → ネイティブコード ART は AOT と JIT を併用して高速化している (よく使う部分は AOT、使用頻度の低い部分は JIT)
AOT と JIT の変換のタイミング(もちこ道場のまとめ)

違いを表で比べる

比べること AOT JIT
変換するタイミング 実行の前(事前) 実行時(逐次)
変換する対象 よく使用される部分 使用頻度の低い部分など(ART では AOT と併用)
ねらい 前もって変換して高速に動作させる 実行しながら必要な分を変換する
出てくる場面 ART(Android 5.0 以降) 従来の方式。ART でも併用

まぎらわしい言葉

AOT と JIT の問題では、次の言葉も選択肢に並びます。

  • インタプリタ: 命令を解釈しながら実行する方式。あらかじめネイティブコードに変換する方式ではありません。
  • VM: 同じアプリを異なる種類の CPU 上で動かすための仮想の実行環境。変換を行うコンパイラの名前ではありません。
  • Dalvik: Android 5.0 より前に採用されていた VM。ART で事前変換を担うコンパイラではありません。
  • Java VM: Java のプログラムが動く実行環境で、プロセッサや OS の違いを吸収します。一度作れば、ハードウェアを選ばずに動かせます。ART は Java VM とは仕様が異なり、他の Java アプリとは互換性がありません。
  • iOS のネイティブコード: iOS 向けのアプリは Objective-C や Swift で開発され、最初から OS が直接理解できるネイティブコードの形で作られるので、非常に高速に動作します。JIT による逐次変換は、VM を使う Android 側の仕組みです。

試験での問われ方

モバイル技術基礎検定では、第6章「モバイル端末のソフトウェア」で出ます。もちこ道場の第6章の問題(50問)のうち、AOT や JIT が出てくる問題は8問です。

  • 穴埋め: 「よく使う部分を事前にネイティブコードへ変換しておくコンパイラ」に AOT、「Android 5.0 より前に採用されていた VM」に Dalvik を選ぶ。選択肢には JIT・VM・ART や、Cocoa Touch・Android Studio のような別の分野の語が並びます。
  • 2つの空欄の組み合わせ: 「実行時に逐次変換する方式」に JIT、「事前に変換しておく方式」に AOT を入れる。AOT と JIT を入れ替えた選択肢や、インタプリタが並びます。
  • 記述を選ぶ: 「ART はすべてのプログラムを JIT だけで変換する」のような誤りを見抜く。

覚え方

  • AOT は「前もって」、JIT は「実行時に」。Ahead(先に)と Just In Time(ちょうどそのときに)の言葉の意味と結びつけます。
  • ART は「AOT と JIT の併用」。どちらか一方だけの記述は誤りです。
  • Dalvik は 5.0 より前、ART は 5.0 以降と、バージョンの切り替わりで覚えます。

第6章のほかの用語は「第6章 モバイル端末のソフトウェアの要点」にまとめています。

第6章の問題を2問、解いてみる

もちこ道場の第6章の問題です。演習画面と同じ解説(図解・選択肢ごとの解説)を付けています。

問1

Android OSで導入されているART(Android Run Time)環境において、よく使用されるプログラム部分を事前にネイティブコードに変換しておくことで高速動作を可能にするコンパイラを1と呼びます。

答えと解説を見る

正解は 1(AOT)です。

【概要】

ARTでは、頻繁に使う部分をAOTコンパイラで前もってネイティブコードにしておき、使用頻度の低い部分はJITで逐次変換することで速度を高めている。

【図解】実験的機能

アプリの実行環境:Java VM・Android・iOS アプリの実行環境:Java VM・Android・iOS

図解は実験的機能です。内容を簡略化しているため、公式テキストの記載と異なることがあります。

【各選択肢の解説】

  • 1. AOT正解あなたの解答 AOTは、ARTでよく使う部分を実行前にネイティブコードへ変換しておき、高速な動作を可能にするコンパイラである。
  • 2. JITあなたの解答 JITは、プログラム実行時にネイティブコードへ逐次変換する方式であり、事前に変換しておくコンパイラではない。
  • 3. VMあなたの解答 VMは、一つのアプリを異なる種類のCPU上で動かすための仮想実行環境であり、事前変換を行うコンパイラの名称ではない。
  • 4. Dalvikあなたの解答 Dalvikは、Android5.0より前に採用されていたVMであり、ARTで事前変換を担うコンパイラではない。

問2

Android OSでは、アプリケーションを動かす仮想機械として、5.0より前のバージョンでは1VMが採用されていた。5.0以降は、パフォーマンスを改善するためにARTのVMが採用されている。

答えと解説を見る

正解は 4(Dalvik)です。

【概要】

Dalvikは、Android 5.0より前のAndroid OSで採用されていたVMである。5.0以降はパフォーマンス改善のため、ARTのVMに置き換わった。

【図解】実験的機能

アプリの実行環境:Java VM・Android・iOS アプリの実行環境:Java VM・Android・iOS

図解は実験的機能です。内容を簡略化しているため、公式テキストの記載と異なることがあります。

【各選択肢の解説】

  • 1. ARTあなたの解答 ARTは、5.0以降に採用されているVMであり、本問の5.0より前に使われていたものではない。
  • 2. Cocoa Touchあなたの解答 Cocoa Touchは、iOSの機能群の名称であり、AndroidのVMではない。
  • 3. Android Studioあなたの解答 Android Studioは、Android OS向けの統合開発環境であり、アプリケーションを動かすVMではない。
  • 4. Dalvik正解あなたの解答 問題文の、5.0より前のバージョンで使われ、後にARTに置き換わったVMに合う。
第6章の問題を解く

第6章は約50問。いま解いた問題と同じ形で、選択肢ごとの解説と図解が付いています。まずは登録なしで、第1章の50問から解き方を試せます(第2章からはプランで解けます)。

第1章を無料で解く

よくある質問

ネイティブコードとは何ですか?

CPU が直接理解して実行できる形式のコードです。iOS のアプリは、最初からこの形で作られるので高速に動作します。Android のアプリは、いったん中間言語(Android バイト・コード)になり、実行環境でネイティブコードに変換されます。

ART は AOT だけで動いていますか?

いいえ。ART は、よく使用される部分を AOT で事前に変換し、使用頻度の低い部分は従来の JIT で逐次変換します。「JIT だけ」「AOT だけ」のような記述は誤りです。

Dalvik と ART はどちらが新しいですか?

ART のほうが新しい実行環境です。Android 5.0 より前では Dalvik の VM が採用されていて、5.0 以降は、パフォーマンスを改善するために ART に置き換わりました。

もちこ道場

章ごとの問題と本番形式の模擬試験で、合格の力を確かめる

公式テキストの全10章から作ったオリジナルの予想問題を、スマホ・PC で解ける Web 演習サービスです(運営者が作っています)。

ベーシックプラン

500円

31日間・買い切り・自動更新なし

  • 全10章 500問○
  • 選択肢ごとの解説○
  • 全問の解説に図解○
  • 模擬試験(60問・60分)なし
おすすめ合格フルサポートプラン

1,000円

31日間・買い切り・自動更新なし

  • 全10章 500問○
  • 選択肢ごとの解説○
  • 全問の解説に図解○
  • 模擬試験(60問・60分)○

無料体験は登録不要です。

次に読む

出典・注記

出題範囲は、2026年11月6日にMCPC の公式ページで確認しました。用語の説明は、もちこ道場の問題と解説をもとにまとめたものです。

  1. モバイル技術基礎検定(MCPC 公式)