Java-コンパイル
Javaのコンパイラ
Javaのソースコードから実行ファイル(javaではバイトコードのクラスファイル)を作成するには「javac」というコンパイラを利用します。
javacは、JDKなどに付属しているコンパイルを実行するためのツールです。
JVM(Java Virtual Machine)について
JVMは、Javaの仮想マシンであり、Javaランタイム環境によって実行されるマシンです。
Javaコンパイラは、Java仮想マシン上で実行できるコードを作成し、それをJavaインタプリタが実行します。
つまり、Javaでは実行形式ファイルを作成せず、クラスファイルを作成する仕様となっています。
コンパイルと実行
1.ソースファイルの作成
Javaソースファイルの拡張子は「.java」とします。
$ touch HelloWorld.java
publicなクラスのクラス名とファイル名が異なる場合にコンパイルエラーが発生します。
publicなクラスがある場合は、ファイル名はクラス名と一致している必要があります。
例えば、クラス名がHelloWorldであるのに対し、ファイル名がTest.javaとなっているとエラーとなります。
2.ソースコードの記述
例として、Hello worldプログラムを記述します。
public class HelloWorld{
public static void main(String [] args) {
System.out.println("Hello world!");
}
}
3.コンパイル
バイトコードのクラスファイルを作成します。
コンパイルすると、クラスファイル(.class)が作成されます。
$ javac HelloWorld.java
$ ls
HelloWorld.class HelloWorld.java
4.実行
クラスファイルを指定して、Javaインタプリタで実行します。
なお、クラスファイルのパスを指定しても実行できません。
$ java HelloWorld
Hello world!
コンパイル時の文字コードエラー
コンパイルする際、javaソースコードに記述したコメントなどの文字コードとシステムの文字コードが異なる場合、以下のようなエラーが出力されます。
警告:この文字は、エンコーディング SJIS にマップできません。
これは、javaコンパイラがOSのデフォルト文字コードに一時的に変換しようとするため発生するエラーです。
この場合、コンパイル時の文字コード指定をする必要があります。
オプション「-encoding 文字コード」で指定します。
$ javac -encoding utf-8 Hello.java