
プログラマーの常識をJavaで身につける (8)
意外と知らないファイル圧縮技術の常識
株式会社 NTTデータ ビジネスブレインズ
伊賀敏樹
2007/10/24
java.util.jarパッケージでjarファイルを操作
■jarファイル形式の概要
jarファイルはJava言語でよく利用されるファイル圧縮/アーカイブ形式で、内部的には、zip形式と同じ仕様を採用しています。ただし、単にzip形式を採用しているのではなく、マニフェスト機能などが付与されています。
jarファイルはコンパイル後のclassファイルをまとめる目的でよく利用されます。具体的には、Javaクラスライブラリの配布形式を作成する場合や、Webなどにデプロイするためのファイルを作成する過程などで利用されます。
「Java Archive(JAR)ファイル」に公式ドキュメントがあります。
■jarファイル作成手順の自動化
ビルドプロセスの自動化の観点から、jarファイル作成などのモジュール作成手順を自動化しておくことは、現実的なソフトウェア開発において重要なことの1つです。このような自動化のためのスキルは、専門技能として世間で認識されているほどです。
記事執筆時点では、ビルドプロセスなどの自動化にはApache Ant(あるいは、Apache Maven)がよく利用されます。
編集部注:Antについて詳しく知りたい読者は、連載「現場に活かす Jakarta Project」の第2回「AntでJavaのビルドを簡単にする」を、Mavenについては、「Java開発支援ツールの定番」の[Maven]をご参照ください。
一方、JDK(Java SE Development Kit)では、jarファイル作成のために、jarコマンドが提供されています。jarコマンドについては、「jar - Java Archive ツール(Windows版)」に公式ドキュメントがあります。単にjarファイルを作成したい場合などには、こちらのコマンドを利用することもあります。
■jarファイルを作成するサンプル
通常は、Apache Antやjarコマンドでjarファイルを作成するものなのですが、ここではJava APIを利用してjarファイルを作成するサンプルを見ていきましょう。
jarファイルを作成するには、java.util.jar.JarOutputStreamクラスを利用します。APIはjava.util.zip.ZipOutputStreamの使い方によく似ています。ただしjarファイルの場合は、java.util.jar.Manifestクラスのインスタンスをコンストラクタに与えている点が異なります。
| jarファイルを作成するサンプル | |
|
実行結果(コンソール出力) |
| jarファイル作成: 開始: C:\Documents and Settings\iga\workspace\aaa\jarsample.jar jarファイル作成: 終了 |
■jarファイルを読み込むサンプル
作成したjarファイルを展開(解凍)しながら読み込むサンプルプログラムを見ていきましょう。使用するjava.util.jar.JarInputStreamクラスは基本的に、java.util.zip.ZipInputStreamと同じようなAPIになっていますが、java.util.jar.Manifestクラスを取り出すことができるようになっている点が異なります。
また、今回は展開(解凍)したファイル内容を16進文字列表示するように変えています。ここで示すソースコードをコンパイルおよび実行するためには、以前の記事で掲載したHexStringUtilクラスが必要です。
| jarファイルを読み込むサンプル | |
|
実行結果(コンソール出力) |
| jarファイル読込: 開始: C:\Documents and Settings\iga\workspace\aaa\jarsample.jar マニフェスト Created-By: [1.5.0_13 (Sun Microsystems Inc.)] Manifest-Version: [1.0] ディレクトリ名: [ABC/] ファイル名: [ABC/ABC.txt] 内容: [82 a0 82 a2 82 a4 82 a6 82 a8] ファイル名: [ABC/DEF.txt] 内容: [82 a9 82 ab 82 ad 82 af 82 b1] ファイル名: [GHI.txt] 内容: [82 b3 82 b5 82 b7 82 b9 82 bb] jarファイル読込: 終了 |
アーカイブ/圧縮技術を活用しよう!
ファイル圧縮に関する話題や関連するJava APIについて紹介してきましたが、いかがだったでしょうか?
今回の記事で紹介したようなJava APIを活用することによって、比較的簡単に開発しているアプリケーションにアーカイブ機能や圧縮機能を組み入れることができます。これは、とても素晴らしいことだと思います。一方で、いくつかの注意点についても紹介しました。それらの注意点にも気を付けつつ、ファイル圧縮技術をぜひ活用してください。
■ @IT関連記事
| Webアプリケーションのパッケージングを「やり直す」 やり直し「JSPとTomcat」(12) 作成したJSP/クラス・ファイルなどをTomcat上で動作させるには、どこに配置するべきか? さらに、web.xmlの書き方も確認しよう 「Java Solution」フォーラム 2007/4/19 |
| Java開発支援ツールの定番 Javaオープンソースセンター(2) Javaオープンソースには開発に便利なツールが豊富にある。今回は中でも定番とされるAnt、Log4j、XDocletなどを紹介する 「Java
Solution」フォーラム 2005/4/7 |
| ビルドを効率化するEclipseプラグイン CoolなEclipseプラグイン(11) ビルドを効率化するAntとその次のビルドツールとして注目されているMaven。これらを活用するためのプラグインを紹介する 「Java
Solution」フォーラム 2006/4/29 |
||
![]() |
AntとXDocletでEJB開発を効率化 [連載]現場に活かすJakarta Project(3) ファイルが多いために煩雑になりやすいEJB開発。AntとXDocletを使うと非常に効率よく開発ができ、その問題が解決できます 「Java
Solution」フォーラム 2003/2/19 |
|
| Index | ||||||||||
|
||||||||||
| プロフィール |
| 伊賀 敏樹(いが としき) ハンドル:いがぴょん 1968年生まれ。現在、NTTデータ ビジネスブレインズ 第一SI事業部 ソリューショングループ所属。システム開発の技術支援などに従事する。仕事におけるJava言語とのかかわりは1998年から。
現在 blanco Frameworkというオープンソースによるソースコード自動生成タイプの開発フレームワーク提供に取り組んでいる。
趣味はヴァイオリン演奏。アマチュアオーケストラで演奏することもある。ホームページ いがぴょんの日記ウェブページv2(1996年から続けているWeb日記) 所属団体 blanco Framework(コミッタ) 主な著書 「やさしく学ぶ基礎からのJDBC」 「Javaプログラミング[アプリケーション編]ステップアップラーニング」 |
| ご意見、ご感想はJava Solution 会議室へどうぞ |
| Java Solution全記事一覧 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


1968年生まれ。現在、