Javaでは、プログラムを拡張子「.java」のファイルに書きます。そして、Javaコンパイラを利用して拡張子「.class」の中間ファイルを作成します。アプリケーションのファイルは、この中間ファイルだけではありません。アプリケーションによっては、画像や音声などのリソースを持つこともあります。
「JARファイル」は、中間ファイルやリソースを1つにまとめて、実行可能にしたファイルです。JARファイルの拡張子は「.jar」になります。
このJARファイルの正体は、zipという形式の圧縮ファイルです。パソコンに解凍ソフトが入っていれば、拡張子をzipにして解凍してください。以下のようなフォルダとファイルが出力されます。
□ cui ├□ META-INF │└○ MANIFEST.MF └□ sample └○ Cui.class
「cui\sample\Cui.class」は中間ファイルです。
「cui\META-INF\MANIFEST.MF」は、「マニフェスト ファイル」と呼ばれるものです。このファイルには、このアプリケーションの各種情報が記入されています。
マニフェスト ファイル「MANIFEST.MF」を、テキスト エディタで開いてください。以下のような内容になっています。
Manifest-Version: 1.0 Class-Path: . Main-Class: sample.Cui
マニフェスト ファイルは、「Eclipse」でアプリケーションを出力する際に自動で作成されます。そのため、わざわざ自分で作成する必要はありません。
将来、Javaを高度に利用したいと思った際に、こういった仕組みで動いているということを思い出してください。
では以下に、各項目について簡単な説明を行います。
「Main-Class」では、このアプリケーションのメインとなるファイルを指定します。
上記のアプリケーションでは「sample.Cui」になります。このアプリケーションは、起動時に「sample.Cui」(sample\Cui.class)を呼びます。
Javaでは、アプリケーション内のファイルだけでなく、別の場所にあるJARファイルやclassファイルも参照できます。クラス パスは、そういったファイルを指定する設定です。
「Class-Path」が「.」とあるのは、クラス パスがカレント ディレクトリ(アプリケーションを実行したフォルダ)だということです。
クラス パスは、「.;C:\java_lib」のように、「;(セミコロン)」で区切ることで、複数のクラスパスを指定できます。上記の例では「Class-Path」が「.」となっています。そのため、カレント ディレクトリにあるファイルだけを参照しています。
Javaでは、Java仮想マシンがJARファイルを読み取ることでアプリケーションが実行されます。今回のCUIのアプリケーションでは、以下のようにしてアプリケーションを起動しました。
java -jar cui.jar
この「java」というのは、「java.exe」という実行ファイルのことです(コマンドプロンプトでは、実行ファイルは拡張子を省いて入力できます)。この「java.exe」は、JDKをインストールしたフォルダに入っています。
「-jar」というのは「この後にJARファイルを指定しますよ」という宣言です。
この入力を、文章で表すと以下のようになります。
入力:java -jar cui.jar 説明:java.exeファイルを実行して、「cui.jar」を読み取って処理を行う
こうして起動した「java.exe」は「cui.jar」内のマニフェスト・ファイルを読みます。そして「Main-Class」の設定を確認して、どのファイルを実行すればよいのか調べて実行します。
「Eclipse」を使うと、JARファイルを簡単に出力できます。以下手順です。
「java.exe」は、javaの仮想マシンです。この実行ファイルがJARファイルを読むことで、CUIアプリは実行されます。
実はJavaの仮想マシンには「java.exe」と「javaw.exe」があります。前者がCUI向けのもので、後者がGUI向けのものです。
普通、Javaアプリケーションを実行する際は「javaw.exe」を利用します。こちらは、次回説明します。
シンプルなCUIアプリケーションのサンプルです。キーボードの入力を取得して、次の行で利用します。
変更する部分が多いので、ソースを丸ごとコピー&ペーストした方がよいでしょう。
「main(String[] args)」のあとに、「throws IOException 」を付ける必要があるので、注意をしてください。
「import~」の部分は、「public class Cui」内のコードをコピペすると、自動で作成されます。しかし、丸ごとコピー&ペーストした方が分かりやすいでしょう。
package sample; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Cui { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Please input your name"); String line = reader.readLine(); System.out.println("Hello " + line + " !"); } }
マンガ中のCUIアプリケーション作成の手順をまとめておきます。
以下の「実行構成」を作るのが面倒な場合は、実行ボタン(緑の丸に右向き三角)を直接押してもよいです。その際は、現在エディタ部分で作業をしているプロジェクトが実行されます。
以下の手順で、[起動構成]は「Cui - Cui」を選びます。選び忘れやすいので注意してください。