AOT と JIT の違い
実行の前に変換するか、実行しながら変換するか
- AOT と JIT は、Android のアプリをネイティブコードに変換する方式です。違いは、変換するタイミングです。
- AOT は実行の前に、よく使う部分をあらかじめ変換しておく、JIT は実行時に少しずつ変換する、と覚えます。
- Android 5.0 以降の ART は、AOT と JIT を併用して高速化しています。5.0 より前の VM は Dalvik です。
先に押さえる: 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 |
|---|---|---|
| 変換するタイミング | 実行の前(事前) | 実行時(逐次) |
| 変換する対象 | よく使用される部分 | 使用頻度の低い部分など(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で逐次変換することで速度を高めている。
【図解】実験的機能
図解は実験的機能です。内容を簡略化しているため、公式テキストの記載と異なることがあります。
【各選択肢の解説】
- 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に置き換わった。
【図解】実験的機能
図解は実験的機能です。内容を簡略化しているため、公式テキストの記載と異なることがあります。
【各選択肢の解説】
- 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章は約50問。いま解いた問題と同じ形で、選択肢ごとの解説と図解が付いています。まずは登録なしで、第1章の50問から解き方を試せます(第2章からはプランで解けます)。
よくある質問
ネイティブコードとは何ですか?
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分)○
無料体験は登録不要です。
次に読む
記事の確認問題と同じく、選択肢ごとの解説と図解が付いた問題を、スマホ・PC で続けて解けます。
モバイル技術基礎検定の第6章「モバイル端末のソフトウェア」で問われる用語を、6つのまとまりと取り違えやすい組み合わせで整理しました。第6章の問題を2問、その場で解いて確かめられます。
モバイル技術基礎検定の勉強時間の目安を、公式テキストのページ数と問題を解く時間から計算しました。公式の目安は発表されていません。1日1〜2時間で進める4週間の計画もまとめています。
出題範囲は、2026年11月6日にMCPC の公式ページで確認しました。用語の説明は、もちこ道場の問題と解説をもとにまとめたものです。