●ワープロや表計算などWindowsで普通に使用されているプログラムはC言語(C++)で書かれ、Cのコンパイラでコンピュータが直接実行できる形になおされています。Javaのコンパイラ(javac.exe)はクラスファイルを作りますがこれは実行形式でなくjava.exeが.classの内容を読み込んで実行することになります。このため実行速度はどうしても不利です。
Cプログラム →コンパイラ→ 実行ファイル(.exe) Javaプログラム →コンパイラ(javac)→ クラスファイル(.class) →インタープリタ(javaこれは実行ファイル)が読み込んで実行
●また、実行にあたりDOSプロンプトからコマンドをキーボードで打たなければならないのもGUIの流れに反しています。(コマンド方式の操作も慣れると使いやすいのですが、Windowを利用するソフトがコマンドから起動されるのはちょっと…)
●これを一般の実行ファイルと同様の使用感を持たせることができます。例としてWa2.javaについてやってみます。
(1)Wa2.javaをコンパイルすると、Wa2.class と Wa2$MyJPanel.class ができます。これは、Wa2.javaの中にクラスの定義がが2つあるからです。Wa2 と MyJPanel です。
(2)次の内容のテキストファイルを作り、適当なファイル名で保存します。この例ではWa2.txtとしました。このファイルをマニフェストファイルと呼びます。
Main-Class: Wa2
この中の Wa2は実行するmainを含むクラス名です。いままで 「 java クラス名 」 で実行していたクラス名を書きます。
最後は必ず改行します。K2Editorでは[EOF]が次の行にくるようにします。
(3)jarコマンドで次のように命令します。
U:\java> jar cvfm Wa2.jar Wa2.txt Wa2.class Wa2$MyJPanel.class
次のような意味です。
以下のように表示され Wa2.jar というファイルができます。
U:\java> jar cvfm Wa2.jar Wa2.txt Wa2.class Wa2$MyJPanel.class マニフェストが追加されました。 Wa2$MyJPanel.class を追加中です。(入 = 1665) (出 = 941)(43% 収縮されました) Wa2.class を追加中です。(入 = 654) (出 = 459)(29% 収縮されました) U:\java>
(4)Wa2.jarをダブルクリックすると実行できます。
●jarというのはもともとファイルを圧縮してまとめる「アーカイブソフト」のひとつです。
U:\java> jar cvf matome file01 file02 file03 …
これで matome というファイルに、file01 file02 file03 … が圧縮されてひとまとめにされます。
●中身を調べるには、
U:\java> jar tvf matome
●解凍して元に戻すには
U:\java> jar xvf matome
●この中にマニフェストファイルがあります。 META-INF/MANIFEST.MF ここに実行すべきクラス名を書いておくのが、マニフェストファイル名の指定です。このファイルはそのまままとめられるのではなく、その内容を読み込んで、META-INF/MANIFEST.MF というファイルの中に書き加えられるのです。
●ダブルクリックすると、.jar という拡張子が javaw.exe というプログラムに関連づけられていて、javaw.exe に読み込まれて実行されます。従って、 Java 2 SDK, Standard Edition(JavaSDK)または、JavaREと呼ばれる実行環境がインストールされていないと実行できません。
●全部を呼び出すことで、一度に実行できます。部品としての再利用のしやすさを実感できます。
public class Call{ public static void main(String[] args){ Swing01 Obj01 = new Swing01(); PanelTest Obj02 = new PanelTest(); PanelTest2 Obj03 = new PanelTest2(); PanelTest3 Obj04 = new PanelTest3(); ButtonTest Obj05 = new ButtonTest(); ButtonTest2 Obj06 = new ButtonTest2(); EventTest Obj07 = new EventTest(); TwoButtons Obj08 = new TwoButtons(); UpDown Obj09 = new UpDown(); ColorSelect Obj10 = new ColorSelect(); CatText Obj11 = new CatText(); Wa Ob12 = new Wa(); Wa2 Ob13 = new Wa2(); Tool Ob14 = new Tool(); } }