JVM は、作成したコードを直接実行できません。バイトコードで書かれたプログラムを実行する方法だけを知っています。バイトコードは、マシンコードに近い低水準言語です。
Java の場合、コンパイルとは、Java で書かれた (高レベルの) プログラムをバイトコードで書かれた同じプログラムに変換することです。
コードは .java ファイルとしてコンパイラに渡されます。コンパイラがコード内にエラーを検出しなかった場合は、新しいバイトコード ファイルが返されます。このファイルの名前は同じですが、拡張子が異なります: .class。コードにエラーがある場合、コンパイラは「プログラムはコンパイルされませんでした」と通知します。次に、各エラー メッセージを読んでエラーを修正する必要があります。
javac コマンドを使用して、JDK (Java Development Kit) の一部であるコンパイラを呼び出します。つまり、JRE (Java ランタイム環境) のみをインストールした場合、コンパイラはインストールされないということです。バイトコードのみを実行できる JVM のみが存在します。そこで、JDK をインストールし、.javaファイルをコンパイラに渡します。
たとえば、コンソール出力を含む単純なプログラムを考えてみましょう。
class MySolution {
public static void main(String[] args) {
System.out.println("Hi, command line!");
}
}
このコードをファイルD:/temp/MySolution.javaに保存しましょう。
コマンドを使用してコードをコンパイルしましょう
D:\temp>javac MySolution.java
コードにコンパイル エラーがない場合、MySolution.classファイルが一時フォルダーに表示されます。さらに、コードを含むMySolution.javaファイルはどこにも行きません。それはまさに元の場所に残っています。ただし、MySolution.class にはバイトコードが含まれており、JVM によって直接実行できるようになりました。
この例は可能な限り単純ですが、大規模で最も複雑なプロジェクトでもjavacコマンドを使用します。したがって、それがどのように機能するかを知ることは非常に役立ちます。
一度に複数のクラスをコンパイルできます。たとえば、tempフォルダーに別のファイルCat.javaがあるとします。
D:\temp>javac MySolution.java Cat.java
またはこれ:
D:\temp>javac *.java
コンパイルが完了すると、.classファイルはjarファイルにパッケージ化され、別のコンピュータに簡単に移動して実行できます。jarファイルの作成方法の例を次に示します。
D:\temp>jar cvfe myjar.jar MySolution MySolution.class Cat.class
どこ:
-
jar は、JDK に含まれる.jarファイルを作成するためのコマンドです。
-
cvfe は、次の意味を持つコマンド ライン オプションです。
-
c – 新しいjarファイルを作成します
-
v – 詳細情報を表示する
-
f – ツールの出力をファイル ( myjar.jar )に入れることを示します。
-
e – エントリ ポイント ( MySolution )、つまりメインメソッドを含むクラスを示します。
-
-
MySolution.java Cat.class – jarファイルにパックされるファイルのスペース区切りの名前。
結果のjarファイルを実行する方法は次のとおりです。
D:\temp>java -jar myjar.jar
さらに詳しい情報については: |
---|
javacツールとjarツールにはヘルプが組み込まれています。これを表示するには、コマンド ラインで次のコマンドを実行します。
|
GO TO FULL VERSION