・   「Java言語」実習 第23回

パッケージと Jarファイル

大規模なアプリケーションを開発する場合に必要となる、 パッケージ及び Jar形式のアーカイブファイルの取り扱いを練習します。


・ 準備1:
今日の実習には、複数のディレクトリでの作業が必要となります。 通常の作業ディレクトリ(~/www/java)の下に、 下記のような構造を用意しておきなさい。


-- ~ -+- www -+- java -+- accesstest
                       +- accesstest2
                       +- accesstest3
                       +- ziptool
                       +- test

・ 準備2:
今日の実習には、環境変数 CLASSPATHの明示的な設定が必要となります。 作業ディレクトリ(~/www/java)とカレントディレクトリを 次のようにしてクラスパスに設定しておきなさい。 (この設定は、作業する端末エミュレータのウィンドウごとに必要です。)


set CLASSPATH=Z:\www\java;.                      #Windowsの場合

CLASSPATH=~/www/java:. ;  export CLASSPATH       #UNIXのKシェルの場合


・ 基本課題1:「クラスによるアクセス制御」
privateによるアクセス制御の確認を行います。

  1. javaの作業ディレクトリの下に直接ソースファイル AccessTest.javaAccessedData.java を作成しなさい。
  2. AccessTest.javaのコンパイルを試みなさい(エラーが出て失敗します)。
  3. エラーが何個出たか後で報告してもらいます。 メールで送れるように記録しておくこと。

・ 基本課題2:「パッケージによるアクセス制御」
同じパッケージ内でのアクセス制御の確認を行います。

  1. ディレクトリ accesstestの下に移動しなさい。その中に AccessTest.javaAccessedData.java を作成しなさい。
  2. AccessTest.javaのコンパイルを試みなさい(エラーが出て失敗します)。
  3. エラーが何個出たか後で報告してもらいます。 メールで送れるように記録しておくこと。

・ 基本課題3:「パッケージによるアクセス制御(2)」
異なるパッケージからのアクセス制御の確認を行います。

  1. ディレクトリ accesstest2の下に移動しなさい。その中に AccessTest.java を作成しなさい。
  2. AccessTest.javaのコンパイルを試みなさい(エラーが出て失敗します)。
  3. エラーが何個出たか後で報告してもらいます。 メールで送れるように記録しておくこと。

・ 基本課題4:「継承によるアクセス制御」
protectedによるアクセス制御の確認を行います。

  1. ディレクトリ accesstest3の下に移動しなさい。その中に AccessTest.java を作成しなさい。
  2. AccessTest.javaのコンパイルを試みなさい(エラーが出て失敗します)。
  3. エラーが何個出たか後で報告してもらいます。 メールで送れるように記録しておくこと。

・ 基本課題5:「java.util.zipの利用」

  1. ディレクトリ ziptoolの下に移動しなさい。その中にソースファイル GZip.javaGunZip.javaZip.javaUnZip.java を作成しなさい。
  2. それぞれのソースファイルをコンパイルしなさい。

・ 基本課題6:「GZipと GunZipによるファイルの圧縮と復元」

  1. ディレクトリ testの下に移動しなさい。
  2. データ圧縮の実験用のデータファイル st98.master を ~tatsuo/ から コピーしなさい。
  3. moreコマンドで内容を調べ、 ls -l コマンドで st98.masterのサイズを調べておきなさい。
  4. ziptool.GZipを用いて st98.master を圧縮しなさい。
  5. ls -l コマンドで st98.master.gzのサイズを調べておきなさい。
  6. ziptool.GunZipを用いて st98.master を復元しなさい。
  7. moreコマンドで内容が回復していることを確認しなさい。

cd  test
cp  ~tatsuo/st98.master  .
more  st98.master
ls  -l  st98.master
java  ziptool.GZip  st98.master
ls  -l  st98.master.gz
java  ziptool.GunZip  st98.master
more  st98.master

・ 基本課題7:「Zipと UnZipによるディレクトリの圧縮と復元」

  1. ディレクトリを上がって www/javaに移動しなさい。
  2. ziptool.Zipを利用してディレクトリ accesstestを 単独のアーカイブファイルにまとめなさい。
  3. そのファイルを testディレクトリに移動しなさい。
  4. testディレクトリに移動しなさい。
  5. ziptool.UnZipを利用してディレクトリ accesstestを testの下に 復元しなさい。 復元したディレクトリに移動し、中のファイルも復元されていることを 確認しなさい。

cd  ..
java  ziptool.Zip  accesstest
mv  accesstest.zip  test
cd  test
java  ziptool.UnZip  accesstest.zip
cd  accesstest

・ 基本課題8:「Jarアーカイブの利用」

  1. www/javaのディレクトリに戻りなさい。
  2. Jarコマンドを用いて、ziptool内のバイトコードを集めたファイル ziptool.jarを生成しなさい。
  3. その Jarファイルを testディレクトリに移動しなさい。
  4. ziptoolディレクトリ内のバイトコードのファイルを消去しなさい。
  5. クラスパスを変更して、test/ziptool.jarも CLASSPATHに追加しなさい。
  6. このようにしても、ziptoolの各クラスを利用できることを、適当な ファイルを圧縮・復元することで確認しなさい。

cd  ..
jar  cvf  ziptool.jar  ziptool/*.class
rm  ziptool/*.class
mv  ziptool.jar  test
CLASSPATH=~/www/java/test/ziptool.jar:.
java  ziptool.GZip  AccessTest.java
java  ziptool.GunZip  AccessTest.java


・ 今週のレポート課題(学内用):
ここまでの課題が終わった人は、下記の項目を tatsuo宛のメール で報告しなさい。(Subjectは java23)

  1. 課題1のコンパイルで表示されたエラーの個数とその原因となった行の番号
  2. 課題2のコンパイルで表示されたエラーの個数とその原因となった行の番号
  3. 課題3のコンパイルで表示されたエラーの個数とその原因となった行の番号
  4. 課題4のコンパイルで表示されたエラーの個数とその原因となった行の番号
  5. 課題6で確認した ls -l コマンドの出力結果(st98.master, st98.master.gz)
  6. 課題8で AccessTest.java は何バイトから何バイトに圧縮されたか?

実習の目次   今週の講義の内容