Java の圧縮形式です。JAR ファイルの作り方だけ知りたい場合は、はじめの部分をとばして読んでください。
前回紹介した Beans の作り方に沿って実際に Bean を作ってみましょう。ここでは、丸を表示する Bean を作ってみます。プロパティとしては大きさと色を持たせてみましょう。このコンポーネントは java.awt.Canvas クラスの派生クラスとして作ってみます。
RectangleBean.java
import java.awt.*;
import java.io.Serializable;
public class RectangleBean extends Canvas implements Serializable {
private int rectSize;
private Color rectColor;
public RectangleBean() {
setSize(50,50);
rectSize = getWidth(); // コンポーネントの大きさをそのまま使います
rectColor = Color.blue;
}
public int getRectSize() {
return rectSize;
}
public void setRectSize(int s) {
rectSize = s;
}
public Color getRectColor() {
return rectColor;
}
public void setRectColor(Color c) {
rectColor = c;
}
public void paint(Graphics g) {
g.setColor(rectColor);
g.fillRect(0,0,rectSize,rectSize);
}
}
|
前回紹介した命名規則に沿って作りました。クラス変数として、大きさを表す size と色を表す rectColor を用意しました。このプロパティの値を取得、設定するメソッドも命名規則に沿って作りました。setSize( ) や setRectColor( ) のような値を設定するメソッドを setter メソッド、getSize( )
や getRectColor( ) のような値を取得メソッドを getter メソッドといいます。
コンパイルは通常の Java プログラムと同じような行ってください。
C:\java_test>javac RectangleBean.java
C:\java_test>
|
setter メソッドや getter メソッドをアクセサメソッドというよ。また、1つのプロパティに対する setter メソッド と getter メソッド は必ずしも両方書く必要はありません。
ここまでで、RectangleBeanという名前のBeanを作りました。これだけでも Bean として利用する事が可能ですが、BDK で Bean の1つとして追加するにはこれを JAR ファイルと呼ばれる形式にしなければいけません。
JAR とは JavaArchive のことで、これは ZIP 形式と互換性があります。ですから ZIP ファイルを解凍するツールなどを使えば JAR ファイルを展開することも出来ますし、コマンドラインからも ZIP で使うのと同じオプションで解凍や圧縮ができます。
jar [オプション] JAR ファイル名 [Manifestファイル名] [入力するファイル名 ... ]
オプションとして指定するものをいくつかあげておきます。
オプション |
意味 |
c | 新規の JAR ファイルを作る |
t | JAR ファイルの内容を画面に出力する |
x | JAR ファイルを展開する |
f | JAR ファイルのファイル名を指定する |
v | 詳細情報を表示しながら実行する |
m | Manifest ファイルのファイル名を指定する |
使い方の例としては、
新規にJARファイルを作るとき(RectangleBean.class と sample.gif を圧縮する)
C:\java_test>jar cvf NewFile.jar RectangleBean.class sample.gif
|
NewJarFile.jar の内容を見たいとき
C:\java_test>jar tvf NewJarFile.jar
|
NewJarFile.jar を展開したいとき
C:\java_test>jar xvf NewJarFile.jar
|
SDK をインストールしたときにソースファイルもインストールした人は、SDK をインストールしたフォルダの直下にある src.jar というファイルを展開すると、Java のクラスライブラリのソースを見ることができるます。
JAR ファイルのオプションのなかに Manifest(マニフェスト)ファイルというものがでてきました。これは、JAR ファイルのなかに含まれるファイルのリストが書いてあるファイルです。Java プログラムの様々な場面で利用されますが、ここでは Bean として利用する場合の書き方を紹介します。
Manifest ファイルに Bean の情報を記述するには、以下のような2行を含めておきます。
コロン(:)の後ろには半角スペースが1つ必要です。
Name: RectangleBean.class
Java-Bean: True
|
もし、パッケージ化したクラスを Bean にする場合は以下のように書きます。
Name: packgeName/RectangleBean.class
Java-Bean: True
|
複数の Bean を1つの JAR ファイルに含める場合は、空行を挟んで同じようにかいてください。
さて、自分で Manifest ファイルを使って JAR ファイルを作る場合は m オプションを使います。
実行例
MyManifest.mf
Name: RectangleBean.class
Java-Bean: True
|
C:\java_test>jar cvfm RectangleBean.jar MyManifest.mf RectangleBean.class
added manifest
adding: RectangleBean.class (in=844) (out=467) (deflated 44%)
|
きちんと JAR ファイルができたか確認してみます。
C:\java_test>jar tvf RectangleBean.jar
0 Wed Sep 06 18:24:28 JST 2000 META-INF/
112 Wed Sep 06 18:24:28 JST 2000 META-INF/MANIFEST.MF
844 Wed Sep 06 18:22:30 JST 2000 RectangleBean.class
|
自分で指定した Manifest ファイルを使って META-INF というディレクトリの中に MENIFEST.MF というファイルができあがっています。
この他にデジタル署名やアプリケーションの起動の指定などで Manifest ファイルが利用されjます。
jar ファイルのままでアプリケーションを起動したい場合は、マニフェストファイルに Main-class: class-name と書いておきます。実行は java -jar class-name または jar ファイルのダブルクリックです。
(4) 自作のBeanをBeanBoxに追加してみよう |
では、いま作った RectangleBean.jar を <BDK_HOME>\jars というディレクトリにコピーして、BeanBox を起動してみてください。すると ToolBox にいま作った RectangleBean を追加されているのがわかります。また、プロパティのウィンドウには自分で作ったプロパティが表示されています。
ここまでは Bean のための JAR ファイルの使い方を紹介しましたが、Applet プログラムの場合でも JAR ファイルを利用できます。
Applet プログラムの場合、必要なクラスはすべてダウンロードしなければいけませんが( JavaのCoreAPI は除きます)、これらを1つの JAR ファイルにしてしまえば、ダウンロードは1回で済みます。
JarApplet.jar
import java.applet.*;
import java.awt.*;
public class JarApplet extends Applet {
public void init() {
setSize(300,50);
}
public void paint(Graphics g) {
g.drawString("JARファイルのテスト : "+ExClass.msg,10,30);
}
}
class ExClass {
static String msg = "他のクラスも一緒にダウンロード";
}
|
JAR ファイルの作成法
C:\java_test>jar cvf SampleApplet.jar JarApplet.class ExClass.class
|
JarApplet.html
<APPLET ARCHIVE="SampleApplet.jar"
CODE="JarApplet.class"
width="300"
height="50">
</APPLET>
|
JAR ファイル中のクラスを実行するには、HTML ファイルに ARCHIVE 属性を追加してやります。すると、この JAR ファイルに存在するファイルで CODE 属性で指定されたクラスが実行されます。
古いブラウザ(JDK1.1.Xをサポートしないようなブラウザ)では JAR ファイルが利用できません。