今日もJava学習を頑張りましょう!
問題
次のJavaプログラムを、コマンドラインから正しくコンパイル・実行するにはどうすればよいでしょうか?以下の解答から選択してください。
public class Greeter {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
選択肢
- A.
javac Greeter
java Greeter.class
- B.
javac Greeter.java
java Greeter
- C.
java Greeter.java
- D.
javac Greeter.class
java Greeter
答えと解説
回答を見る
答え
B. javac Greeter.java
java Greeter
解説
基本説明:
Javaプログラムを実行するには、最初にソースコードをコンパイルする必要があります。javac
コマンドはJavaコンパイラを起動し、.java
ファイルを.class
ファイルに変換します。これによりJava仮想マシン(JVM)で実行可能なバイトコードに変換されます。そしてjava
コマンドを使用して、バイトコードをロードして実行します。このコマンドはファイル拡張子を指定せず、クラス名を入力します。
誤答理由:
- A.
javac Greeter
では拡張子が必要ですし、java Greeter.class
では拡張子を指定してはならない。 - C.
java Greeter.java
は、ソースファイルを直接実行する間違ったコマンドです。 - D.
javac
はソースファイル(.java
)を指定してコンパイルするため、.class
ファイルをコンパイル対象に指定できません。
つまずきポイント:
初心者は、しばしばjavac
とjava
の違いを混同しがちです。そして.java
ファイルが直接実行されると思ってしまう場合もあります。この違いを理解することが大切です。
発展知識:
Javaプログラムの実行にはJVMが必須であり、JVMはオペレーティングシステム上でJavaプログラムを動かす仮想的な機械として機能します。そして、.class
ファイルの中に入っているバイトコードは、このJVM上でのみ正しく実行されることになります。これはJavaが「一度書けばどこでも動く」という仕組みを支える重要な要因です。