Javaのプログラム実行方法を完全解説!初心者でもわかるjavacとjavaコマンドの使い方
生徒
「Javaプログラムをコマンドで実行する方法がいまいち分かりません。javacとjavaって何が違うんですか?」
先生
「いい質問ですね!javacはJavaソースコードをコンパイルするコマンド、javaはコンパイル済みのクラスを実行するコマンドです。それぞれの役割と使い方を詳しく見ていきましょう。」
生徒
「なるほど!プログラムの実行フローが分かりそうです!」
1. Javaプログラムの基本的な実行手順
Javaプログラムを実行する際の基本的な手順は以下の通りです。
- ソースコードを作成し、
.javaファイルに保存する。 javacコマンドを使ってソースコードをコンパイルし、.classファイルを生成する。javaコマンドを使って、生成された.classファイルを実行する。
以下は具体例です。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}
上記のプログラムをHelloWorld.javaとして保存し、次のコマンドを実行します。
> javac HelloWorld.java
> java HelloWorld
出力:
Hello, Java!
この手順がJavaプログラムの基本的な実行方法です。
2. Java SE 11以降での直接実行
Java SE 11以降では、javacコマンドを使わずにjavaコマンドだけでソースコードを実行することが可能です。この機能は「ソースファイルモード」と呼ばれます。
次のように実行します。
> java HelloWorld.java
出力:
Hello, Java!
この方法では、javacで明示的にコンパイルしなくても、javaコマンドがバックグラウンドでコンパイルを行い、プログラムを実行します。
3. コマンドの注意点と他のコマンド
Javaプログラムを実行する際の注意点と、他の関連コマンドを紹介します。
javap: クラスファイルの内部構造を確認できます。jmod: モジュールを管理するためのコマンドです。- ソースファイルモードでは、ファイル名とクラス名が一致していなくても実行可能です。
以下は、クラス名とソースファイル名が一致していない場合の例です。
public class Sample {
public static void main(String[] args) {
System.out.println("クラス名とファイル名が一致していません!");
}
}
これをTest.javaとして保存し、次のように実行します。
> java Test.java
出力:
クラス名とファイル名が一致していません!
4. javacとjavaの違いを理解する
javacはソースコードをコンパイルしてバイトコードを生成するコマンドであり、javaはそのバイトコードを実行するコマンドです。この違いを理解することで、エラーの原因を特定しやすくなります。
ソースコードの構造や実行環境に応じて適切なコマンドを選び、効率的な開発を行いましょう。
5. まとめ
Javaのjavacコマンドとjavaコマンドの違いや使い方について理解を深めました。javacはソースコードをコンパイルして.classファイルを生成し、javaはそのクラスファイルを実行します。
また、Java SE 11以降でのソースファイルモードにより、javacコマンドを使用せずに直接ソースコードを実行できる便利な機能も学びました。
以下は、これまで学んだ内容を簡単におさらいするプログラム例です。
public class CommandLineExample {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("引数がありません。プログラムを実行しました!");
} else {
System.out.println("受け取った引数:");
for (String arg : args) {
System.out.println(arg);
}
}
}
}
上記のプログラムをCommandLineExample.javaとして保存し、次のように実行します。
> java CommandLineExample apple orange banana
出力:
受け取った引数:
apple
orange
banana
このように、Javaの実行環境とコマンドを正しく理解し、プログラムを効果的に実行するスキルを身につけましょう。
生徒
「javacとjavaの違いがよく分かりました!特にソースファイルモードは便利ですね。」
先生
「その通りです。簡単なコードを試したいときや学習時にはとても役立ちますね。ただし、正式なプロジェクトではjavacを使ったコンパイルが一般的です。」
生徒
「実行時に.javaファイルを直接使えることを知って、作業が効率的になりそうです!」
先生
「その意識を持ちながら、引数の扱いやエラー処理にも気を配ると良いプログラマーになれますよ。」