.java と.class の違い
Java は、プラットフォームに依存しないプログラミング言語です。これには、C 言語のような通常の 1 ステップのコンパイルではなく、2 ステップの実行プロセスが含まれます。
最初のステップの実行は、OS に依存しないコンパイラを使用して行われます。2 番目のステップの実行は、JVM または Java 仮想マシンとも呼ばれる仮想マシンを使用して実行されます。
2 段階の実行中に、拡張子が .java
および .class
のファイルが作成されます。この記事では、.java
ファイルと .class
ファイルの基本的な違いについて説明します。
Java でプログラムを書くための基本
.java
および .class
ファイルの概念を理解するには、Java プログラムがどのように実行されるかを知っている必要があります。例として次のコードを見てみましょう。
public class DemoProgram {
/* This is a demo Java program that will print 'Hello Java' as the output */
public static void main(String[] args) {
System.out.println("Hello Java");
}
}
このプログラムを実行するには、次の手順に従ってください。
-
上記のコードをテキストエディタで記述します。次に、ファイルを
DemoProgram.java
として保存します。ファイル名はクラスの名前と同じである必要があることに注意してください。 -
このファイルを保存したディレクトリへのパスを含むコマンドプロンプトウィンドウを開きます。
-
このコマンドを入力します-
javac DemoProgram.java
。エンターキーを押します。javac
コマンドは Java プログラムをコンパイルします。入力として.java
ファイルを受け取り、それをバイトコードファイルに変更します。このステップにより、コードのコンパイルが開始されます。コンパイルがエラーなしで成功すると、カーソルは次の行に移動します。C :\Users\PC > javac DemoProgram.java
-
次に、次のコマンドを入力します-
java DemoJava
。ここでは、ファイル名に.java
を使用していません。その理由は、java
コマンドがバイトコードを入力として受け取り、ソースコードに従って最終出力を提供するためです。簡単に言えば、今回のDemoProgram
は Java ファイルではなくバイトコードです。C :\Users\PC > java DemoProgram
-
上記のコマンドはプログラムを実行し、出力は次のように表示されます。
Hello Java
先に進む前に、次の点に注意してください。
-
ソースコードは、プログラマーが任意のプログラミング言語で作成するコードです。問題を解決するために手動で記述します。
-
Java では、各プログラムは
クラス
を構成します。コードを記述する目的によっては、1つのプログラムに複数のクラスが含まれる場合があります。上記の例のように、DemoProgram
と呼ばれるクラスは 1つだけです。
上記のセクションでテキストファイルを作成し、拡張子 .java
を付けて保存します。これは、コンパイラを通過するソースファイルです。
これにより、ソースコードがマシンに依存しないエンコーディングにエンコードされます。これは Bytecode
と呼ばれます。
すでに述べたように、1つのプログラムに 1つ以上のクラスが含まれる場合があります。したがって、エンコード中に、各クラスのコンテンツは別々の .class
ファイルに入れられます。
これらのファイルは、マシンまたは OS に依存しないため、任意のシステムで実行できます。
.java
ファイルと .class
ファイルがいつ登場するかわかりましたか?この拡張子のソースコードを保存すると、.java
ファイルが形成されます。コンパイルが行われると、.class
ファイルが形成されます。
Java の .java
ファイル
.java
ファイルは、Java のソースコードそのものに他なりません。
簡単に言えば、私たちが書いたコードを含むファイルです。単純なテキストエディタまたは任意の IDE を使用して Java プログラムを作成できます。
使用するものが何であれ、作成したプログラムまたはソースコードを保存します。Java ソースコードファイルを保存するには、.java
拡張子を使用します。
言語ごとに、ソースコードファイルを保存する規則が異なります。C 言語と同様に、ソースコードファイルの拡張子は .c
です。Python では .py
であり、C++ では .cpp
を使用します。
Java の .class
ファイル
.class
ファイルは、ソースコードにクラスのバイトコードが含まれているファイルです。このファイルは、コンパイルが行われるときに形成されます。
Java がプラットフォームに依存しない言語であると述べたとき、それはこれらのクラスファイルによるものです。これらのファイルは、任意の OS またはマシンで実行できます。
.class
ファイルは、コンパイルされた .java
ファイルと見なすことができます。これは、JVM(Java 仮想マシン)で実行されるファイルです。
.class
ファイルの数は必ずしも 1つである必要はありません。これは、コンパイル後に各クラスが異なる .class
ファイルに入るため、ソースコードが持つクラスの数と同じです。
例 1:
public class DemoProgram {
/* This is a demo Java program that will print 'Hello Java' as the output */
public static void main(String[] args) {
System.out.println("Hello Java");
}
}
出力:
C:\Users\PC>javac DemoProgram.java
C:\Users\PC>java DemoProgram
Hello Java
このコードには、DemoProgram
という 1つのクラスしかありません。したがって、コンパイルにより、.class
ファイル DemoProgram
が 1つだけ取得されます。
次に、別の例を見てみましょう。
例 2:
// A class
class TestCase {
public static void main(String[] args) {
System.out.println("An example with multiple classes.");
}
}
// Another class
class Demo {
public static void main(String[] args) {
System.out.println("This is an example.");
}
}
// One more class
class Example {
public static void main(String[] args) {
System.out.println("It contains three classes.");
}
}
ファイルをコンパイルします。
C :\Users\PC > javac Example.java
コンパイル後、出力として 1つではなく 3つの .class
ファイルを取得します。したがって、ソースコード内のクラスの数と同じ数の .class
ファイルがあることがわかります。
次のように、各 .class
ファイルを個別に実行できます。
C :\Users\PC > java TestCase An example with multiple classes.
C :\Users\PC
> java Demo This is an example.
C :\Users\PC
> java Example It contains three classes.
.java
ファイルと .class
ファイルの違い
これら 2 種類のファイルの違いは、次の表にまとめられています。
.java ファイル |
.class ファイル |
---|---|
Java ソースコードが含まれています。 | Java バイトコードが含まれています。 |
プログラマーまたは個人がそれを書きます。 | これは、.java ファイルのコンパイルの結果として形成されます。 |
人間が読める形式です。 | これは、JVM でプログラムの実行に使用されます。 |
.class ファイルの前に形成されます。これがないと、クラスファイルを作成できません。 |
常に .java ファイルの後に形成されます。 |
これは、任意のテキストエディタまたは Java IDE で記述できます。 | これは、任意の OS またはマシンで実行できます。 |
まとめ
この記事では、.java
ファイルと .class
ファイルの主な違いについて説明しました。また、Java プログラムがマシンレベルとユーザーレベルでどのように実行されるかを見ました。
この概念は Java プログラミングの基礎であり、Java プログラムとアプリケーションを効率的に実行するためにそれを理解することが重要です。
関連記事 - Java File
- Java でファイルから改行を削除する方法
- Java でファイルを閉じる
- Java JAR ファイルの作成と実行
- Java で 2つのファイルの内容を比較する
- Java でファイル サイズを取得する
- Java でファイルからバイトを読み取る