MENU

【Java Silver】Javaテクノロジと開発環境の理解

今回も問題を解いていきましょう。

問題

次のうち、Javaのコンパイルと実行に関して適切な説明をしている選択肢を選んでください。

選択肢

  • A. Javaはインタプリタ型言語であり、実行時にコードを逐次解釈する。
  • B. Javaのコードはまずバイトコードにコンパイルされ、JVMがそれを解釈する。
  • C. Javaプログラムをコンパイルするためには、Javaソースコードを直接CPUで実行する。
  • D. Javaコンパイラは、Javaコードを直接出力としてオペレーティングシステムのコードに変換する。

答えと解説

回答を見る

答え

B. Javaのコードはまずバイトコードにコンパイルされ、JVMがそれを解釈する。

基本説明

Javaはコンパイル型のプログラミング言語です。Javaコードは、まずJavaコンパイラによって中間言語であるバイトコードにコンパイルされます。このバイトコードは、プラットフォームに依存しない形で出力されるため、一度コンパイルされたバイトコードは、どのプラットフォーム上でも実行可能です。

Javaコードを実行するためには、JVM(Java Virtual Machine)が必要です。JVMは、バイトコードを実行時にプラットフォームに合わせて適切な機械語に翻訳し、実行します。このプロセスにより、Javaは「一度書けば、どこでも実行できる(Write Once, Run Anywhere)」という特徴を持ちます。

誤答理由

選択肢Aの「インタプリタ型言語」という点は誤解です。Javaはインタプリタ型ではなく、コンパイル型の言語です。JVMがバイトコードを解釈するため、実行時解釈の性質も持っていますが、ベースはコンパイル型です。

選択肢CとDはJavaのコンパイルプロセスを誤っています。JavaコンパイラはソースコードをCPUやオペレーティングシステムのコードに直接変換するわけではなく、まずバイトコードを生成します。

つまずきポイント

Javaのコンパイルプロセスについて学ぶ際に、特にバイトコードやJVMの役目が理解しづらいと感じるかもしれません。バイトコードは「中間言語」であり、JVMはそれを解釈する「仮想マシン」です。これらを具体的な例で比喩すると、バイトコードが「中立の通貨」で、JVMがそれを各国の「現地通貨」に変換する両替所の役割を担う、と考えると分かりやすいでしょう。

発展知識

Javaの実行環境において、JITコンパイル(Just-In-Time Compilation)があります。これは、JVM内でバイトコードを実行時に即座に機械語にコンパイルする技術です。JITはプログラムの実行速度を向上させます。

また、Javaの進化と共にGraalVMなどの新しいJava仮想マシンも登場しています。GraalVMはより効率的な実行を提供し、多言語サポート(他の言語もJavaと混在して使用可能)などの機能を提供します。

目次