はじめに

シェアレジ作品番号:SR060021

機能概要>
Javaの.classファイルやjarファイルを読み込んで、クラス間の継承関係を解析し、ツリー表示するツールです。
その他に、クラス、インターフェース、メソッド、フィールドなどの詳細データを画面に表示、あるいはファイルに出力する機能もあります。
*このバージョンはLinux用です。Windows用のものとはインストール手順が若干異なりますので、注意してください。


目次>

1.ご利用の前にお読み下さい。
2.実行環境
3.インストール方法
3−1.ファイル構成
3−2.Javaの実行環境の準備
3−3.インストーラ
3−4.itp.datの解凍
3−5.解凍後
4.起動方法
4−1.起動コマンド
4−2.起動ログ
5.Javaの標準クラスライブラリやクラスパスの扱い
5−1.解析対象
5−2.環境変数
6.読込時のメモリー不足について
7.不具合、未実装など
8.問い合せ先




1.ご利用の前にお読み下さい。
このソフトウェアを一度でも使用した時点で以下の事項に同意したものとみなします。

・免責事項
 このソフトウェアを使用すること、およびこのドキュメント(Readme.html)やヘルプドキュメントなどを読んだことによって使用者に生じた一切の損害、不利益に対して作者は一切の責任を負いません。また、このソフトウェアの不具合、仕様について、コード修正や回避策の提示、内部仕様などの情報提供、ソースコードの開示などを、作者に強制させることはできません。

・禁止事項
 このソフトウェアの販売を作者以外の第三者が行うことはできません。また、このソフトウェアのコードの一部または全部をそのまま、あるいは、改変して、他のソフトウェアの一部として利用することはできません。
 ライセンスキーによって機能制限を外したバージョンについては、支払いを行った方だけが使用できるものとします。
*法人のお客様の場合は、ユーザ数分お支払いをお願いします。


2.実行環境

・プラットフォーム
 プログラムの主要部はJava 1.4で作成されていますが、起動部分はLinux上のC++で作成されています。従って、Linux以外では起動できません。開発はFedora Coreで行いましたが、他のLinuxでもデモ版が実行できれば、大丈夫かと思われます。 また、使用に際しては、前もってJava 1.4あるいはJava 1.5(Java 5)をインストールしておく必要があります。Sun Microsystems製のLinux用JDK、JREを使用してください。他のJavaの場合は、起動部分が実行できない可能性があります。
 Java 1.5では、日本語フォントの文字化け等の問題が発生するかもしれません。その場合は、日本語の物理フォント(TTF)を、下記のディレクトリに置くことで解決するかもしれません。
<JDK>/jre/lib/fonts/fallback
あるいは
<JRE>/lib/fonts/fallback
*fallbackというディレクトリはないので作成しておくこと
Fedora Coreで開発した都合で、起動プログラムの日本語の文字コードがUTF-8になっています。その他の文字コードの環境では文字化けしますので注意してください。起動プログラム以外は大丈夫です。

・実行マシンの要求性能
 読み込むクラス・インターフェース数が多いと、非常に多くのメモリーを消費します。実行マシンには512MB以上のメモリーを搭載しておいた方がいいかもしれません。



3.インストール方法

3−1.ファイル構成

ダウンロードしたファイルを解凍すると、以下のファイルが現れます。

*ダウンロードしたファイルにgunzipを実行した後、tar -xfを実行する。

ファイル名 内容
decode itp.datを解凍するツールです。解凍の際にライセンスキーが必要になります。
decode.bash decode作業をシェルスクリプトにしたものです。(bashを使用)
boot 共通の起動プログラムです。指定されたオプションにより、itp14、itp14_demo、itp50、itp50_demoのいずれかを実行します。
itp14_demo Java 1.4の環境でデモ用に実行する場合の起動プログラムです。但し、bootが内部で実行するので、ユーザーが直接実行することはありません。デモ用の場合は、読み込めるファイル数やクラス・インターフェース数に制限があります。
itp50_demo Java 1.5(Java 5)の環境でデモ用に実行する場合の起動プログラムです。但し、bootが内部で実行するので、ユーザーが直接実行することはありません。デモ用の場合は、読み込めるファイル数やクラス・インターフェース数に制限があります。
itp.dat Java 1.4の環境で使用する起動プログラムが含まれているファイルです。使用するには、decodeで解凍する必要があります。解凍後のファイルは圧縮ファイルになっており、itp14、itp50の2つの起動プログラムが含まれています。これら2つのプログラムは、bootが内部で実行するので、ユーザーが直接実行することはありません。
parser.dat プログラムの主要部分が含まれているファイルです。実行する際は、起動プログラムと同じディレクトリにおいておいてください。
install.bash 実行できるように準備をするプログラムです。(bashを使用)
install_j.bash 処理はinstall.bashと同じですが、メッセージが日本語で表示されます。(UTF-8以外では文字化けします)

上記の他に、docsディレクトリが作成されます。このディレクトリには、このファイル(Readme.html)の他、ヘルプドキュメントなどが含まれています。


3−2.Javaの実行環境の準備
 このソフトウェアは、Java 2 Standard Edition 1.4、あるいは1.5(Java 5) を使用して実行します。従って、このソフトウェアを実行する前に、Javaの公式サイトあるいは、Java関連の雑誌に付属のCD等から入手し、実行するコンピュータにインストールしておく必要があります。インストール方法および環境設定については、市販の書籍、Java関連のサイト等から情報を入手してください。
3−3.インストーラ
 ダウンロードしたファイルを解凍したら、install_j.bashを実行してください。いくつかのファイルに実行権限を付加し、tmpとlogというディレクトリを作成します。
3−4.itp.datの解凍
 itp14_demoとitp50_demoはデモ用の起動プログラムで、これを実行することでプログラムは使用できますが、読み込めるファイル数やクラス・インターフェース数に制限があります。制限のない起動プログラムは、itp.datを解凍することで入手できます。itp.datを解凍すると、Java 1.4用とJava 1.5(Java 5)用に2つの制限のない起動プログラムが含まれた圧縮ファイルが現れます。
解凍は、decodeを実行してください。指定するオプションは下表の通りです。
オプション 内容
-i <解凍対象ファイル名> このオプションでitp.datを指定します。必須です。
-o <解凍後のファイル名> 解凍後の内容を出力するファイル名を指定します。必須です。
解凍するとtarファイルをgzip形式で圧縮したファイルが現れるので、itp.tgzにしておくのがいいでしょう。
-key <ライセンスキー> ライセンスキーを指定します。ライセンスキーの文字列にはシェルにとって特別な意味を持つ文字が含まれている場合があるのでシングルクォーテーションで囲むことをお勧めします。それでもエラーになる場合は、-keyfileオプションを使用してみてください。
-keyと-keyfileのいずれかを使用してライセンスキーを渡してください。両方のオプションを使用するとエラーになります。
-keyfile <ライセンスキーファイル名> ライセンスキーを書いたテキストファイルを用意し、そのファイル名を指定します。ファイルにはライセンスキー以外は書かないでください。-keyオプションでライセンスキーを渡せない場合に使うオプションです。
-h 使用法の簡単な説明が表示されます。このオプションを使用するときは他のオプションは使用しないでください。

3−5.解凍後
decodeを使用して解凍すると、tar形式のファイルをGZIPで圧縮したファイルが現れます。このファイルをgunzipで解凍した後、tarを実行してください。itp14とitp50の2つのファイルが出現します。

実行例>
 decode -i itp.dat -o itp.tgz -keyfile keyfile.txt
 gunzip itp.tgz
 tar -xf itp.tar
ファイル名 内容
itp14 Java 1.4の環境で実行する場合の起動プログラムです。
itp50 Java 1.5(Java 5)の環境で実行する場合の起動プログラムです。
上記2つのプログラムをparser.datと同じディレクトリにおいてください。
後は、Javaのバージョンに従って上記のプログラムを実行すると、プログラムが起動されます。
*decodeからtarまでの一連の作業を自動で行うシェルスクリプト(decode.bash)を用意しています。このスクリプトでは、途中、emacsを起動してライセンスキーを書き込ませる作業がありますので、emacsが起動できる環境で実行してください。
*上記2つの起動プログラムでは、読み込むファイル数やクラス・インターフェース数に制限を設けていませんが、搭載メモリー容量に比べて読み込むクラス・インターフェース数が多すぎると、読み込み時にメモリー不足で、読み込めない状況が発生することがあります。



4.起動方法

4−1.起動コマンド
bootをJavaのバージョン及び実行モードを指定するオプションをつけて実行します。
bootは各オプションを解釈し、JREの共有ライブラリのある場所を特定してLD_LIBRARY_PATHなどを設定してから、対応する起動プログラムを起動します。

*Java 1.3以前のバージョンでは起動できません。
*起動プログラムのあるディレクトリにtmpというディレクトリがinstall.bashによって作成されますが、このディレクトリは削除しないでください。bootがjavaのバージョンをチェックするときに使用します。
コマンドラインオプションについて
オプションがいくつか提供されており、下記のものが用意されています。起動プログラムで解釈されるオプションと、メインのプログラムで解釈されるものに分かれます。

起動プログラムで解釈されるオプション>

オプション 意味
-demo デモバージョンで起動することを指示します。
-jversion <Javaバージョン> 使用するJDKのバージョンを指定します。下記の3種類のどれかを指定します。
1.4 → JDK 1.4
1.5 → JDK 1.5
5 → JDK 1.5
このオプションは必須です。
-jrehome <JREトップディレクトリ> 使用するJREのトップディレクトリのパスを指定します。JDKではありません。
指定したJREと、jversionで指定したJavaのバージョンが一致していることを確認してください。一致していないときの動作は確認していません。
また、このオプションは省略することが可能です。省略した場合は環境変数PATHの設定値から、javaが存在するパスを検索し、それをもとにJREのトップディレクトリを推測します。
-args ... このオプション以降に指定されているオプションを、そのまま、メインのプログラムに渡します。
-argsの後に、-jversionなどの起動プログラムが解釈するオプションを指定するとエラーになります。
-j 起動プログラムで出力されるメッセージを日本語(UTF-8)で出力します。このオプションを使用するときは、最初に指定してください。このオプションより前では、日本語に切り替わりません。
-help 使用法の簡単な説明を出力して終了します。

メインのプログラムで解釈されるオプション>

*下表のオプションは、-args以降に指定してください。

オプション 形式 意味
-f -f 読み込むファイル・ディレクトリ 読み込む対象のファイル名あるいはディレクトリをカンマで列挙します。ファイルはclassファイル、jarファイル、zipファイルになります。ディレクトリを指定すると、そのディレクトリに存在するclassファイル、jarファイル、zipファイルが読み込まれます。また、-dt trueが指定されている場合は、そのディレクトリの下部ディレクトリ全てを対象に読み込ます。
-dt -dt true
あるいは
-dt false
-fオプションでディレクトリが指定されているとき、そのディレクトリの下部ディレクトリ全てを対象にclassファイル、jarファイル、zipファイルを読み込ます。
-fオプションが指定されていないときは、無視されます。
-list -list 読込対象のファイルを記述したファイル名 読み込む対象のファイル名を1行に1つ記述したテキストファイルを指定します。#で始まる行はコメント行とみなされます。
オプションを指定した場合の起動の仕方を例示します。
boot -jversion 1.4 -jrehome /var/j2sdk1.4/jre -args -f foo.jar,Test.class,~/test/myjava -dt true
リストファイルでの読込対象の指定
boot -jversion 1.5 -jrehome /var/jre1.5 -args -list target.lst

target.lstの内容
# class library
foo.jar
# main class
Test.class
4−2.起動ログ
 起動プログラムは、起動時のログをファイルに出力します。実行したのに画面が表示されないときは、起動ログを参照してください。エラーで起動が中止されているかもしれません。

 起動ログは、起動プログラムのあるディレクトリの直下にlogというディレクトリがあれば、そこに作成されます。ない場合は起動プログラムのあるディレクトリに書かれます。
 ファイル名は、下表のboot.log及びitp_boot_yyyyMMddHHmmss.logという名前で2つ作成されます。
ファイル名 内容
boot.log 起動プログラムが出力するログファイルです。起動するごとに上書きされますので、過去のログは保存されません。
itp_boot_yyyyMMddHHmmss.log Javaコード部分が起動時に出力するログファイルです。yyyyMMddHHmmssの部分には作成年月日時分秒が入ります。

5.Javaの標準クラスライブラリやクラスパスの扱い

5−1.解析対象
 このツールでは解析対象となるのは、読込対象として指定したクラスファイルやJarファイルだけですが、解析したクラスの親クラスなどが読込対象のファイルの中に含まれていない場合、Javaの標準クラスライブラリやクラスパスに設定されたクラスファイルやJarファイルを検索して、見つかれば、読込んで解析します。つまり、以下のことになります。

・読込対象として指定したクラスファイルやJarファイルに含まれるクラス・インターフェースは全て読み込まれ解析される。

・Javaの標準クラスライブラリや、クラスパスに設定されたクラスファイルやJarファイルからは、読込対象のクラスファイルやJarファイルで使用されているクラス・インターフェースだけが読み込まれ解析される。
5−2.環境変数
 通常クラスパスの環境変数はCLASSPATHですが、当プログラムでは、他にITP_CLASSPATHという環境変数もクラスパスとして扱います。もし、双方が定義されていた場合は、ITP_CLASSPATHのみを扱い、CLASSPATHは無視します。下記のロジックになります。

・ITP_CLASSPATH、CLASSPATH双方が定義されていた場合
 ITP_CLASSPATHを参照し、CLASSPATHは無視します。

・ITP_CLASSPATHが未定義で、CLASSPATHが定義されていた場合
 CLASSPATHを参照します。

*ITP_CLASSPATH、CLASSPATH双方とも未定義でもエラーにはなりません。
*Javaの標準クラスライブラリはJavaの実行環境で自動的に決まります。CLASSPATH等で別の場所の標準ライブラリを指定した場合の動作は確認していません。

6.読込時のメモリー不足について

起動プログラムでは、Java実行環境のスタックサイズを可能な限り大きくとって起動を行っています。大体、800MB〜1GBですが、それでも読み込むクラス・インターフェース数が多いとメモリー不足で失敗するときがあります。そのときは、以下の方法を試してみてください。

1)搭載メモリーを増やす

2)搭載メモリーを増やしてもだめな場合は、一部のみを読込対象に指定し、残りをクラスパスに設定する。
*但し、クラスパスに設定したものは、必要なもののみ読み込まれるので、全体の継承ツリーは構築されないことに注意してください。



7.不具合、未実装など
・注釈(Annotation)データの内容を表示する画面は実装していません。(注釈はJava 1.5で追加された仕様です)

8.問い合せ先
作者への問い合せは、こちらまで。
但し、かならずご返事を差し上げるとは限りませんので、ご了承下さい。

登録商標など

Microsoft、Microsoft Windows、Microsoft Windows XP、Microsoft Visual C++などは、Microsoft Corporationの登録商標です。
Java、Java 1.4、Java 1.5、Java 5などはSun Microsystemsの登録商標です。
Intel Pentium M、Intel Pentium4はIntel Corporationの登録商標です。
AMD Athlon XPはAdvanced Micro Devices,Incの登録商標です。
Fedora、Fedora CoreはRed Hat, Inc.の商標です。
本ページに記載されている会社名や商品名は一般に各社の商標です。



Copyright 2005-2006 by K.Uchida