jarg - Java Archive Grinder

jargは、Javaクラスファイルを格納しているJARファイルをより小さくします。(To English)


2001年04月02日より
SourceForge Logo JARS Logo


現行版:0.9.14 リリース日:2003/01/29 :ダウンロード


ニュース

○2003/01/29 : 0.9.14版 リリース


jargって何?

jargはJavaクラスファイルが格納されているJARファイルのサイズを削減します。 「簡単にサイズ削減できること」が第1目標ですが、jargで処理した結果、 Javaクラスファイルは最適化されるのでより速くなりますし、改名されるのでより解析されにくくなります。 つまり、jargは、'Java Optimizer'であり、'Java Obfuscator'であり、'Java Shrinker'もしくは'Java Reducer'でもあります。

最後に、jargは、100% Pure Javaですし、オープンソースですし、無料でご利用いただけます。


jargはどのように動作しますか?

jargはJARファイルからクラスファイルを読込み、読み込んだクラスファイルを解析し、以下の処理を施して、圧縮JARファイルを出力します。


jargを使用した効果は?

jargを使用すると以下の効果があります。


私の環境でjargを実行できますか?

jargを実行するには、Java2互換のJVMが必要です。その他に必要なものはありません。 私の開発環境は、jdk1.3.1_02/win2000 なので、それ以外では動作確認できていませんが、問題ないと思います。

動作報告:iアプリ(DoJa1.0 2.0), Javaアプリ(J-PhoneのMIDP), ezplus(auのMIDP)で、動作できているようです。
> Thanks : potaka


ライセンスについて

このソフトウェアjargは、無保証、無料にて自由にご利用いただけます。 このソフトウェアjargは、オープンソースで、sourceforgeのcvsサーバより自由にソースコードを閲覧いただけます。

このソフトウェアは、Javaクラスファイルの操作用に、BCEL - The Byte Code Engineering Library(JavaClass)を利用しています。

このソフトウェアを使用して、このソフトウェアの不具合や問題点を発見した場合、 著者:Hidetoshi Ohuchi <hchacha@users.sourceforge.net>までご連絡頂けると幸いです。


ダウンロードと設置

ここsourceforgeよりダウンロードしてください。 中段あたりに最新バージョンが表示されています。

jarg
jarg本体です。以下のlsjar,spjarはミニツールです。ごいっしょにどうぞ!
lsjar
JARファイルの中身を表示するツールです。Javaクラスファイルの中身も表示できます。
spjar
JARファイルを、クラスファイルだけを集めた実行可能JARファイルと、それ以外のリソース用JARファイルに分けるツールです。

ダウンロードしたら、それを好きなディレクトリーで解凍(unzip)してください。 設置はそれだけです。環境変数の設定など、他に必要なことは何もありません。


使用方法

jargで処理したいJARファイルのあるディレクトリに移動してください。 あとは、コマンドラインで以下のように使用するだけです。

 > java -jar jarg.jar abc.jar

abc.jarの所に、jargで処理したいあなたのJARファイルを指定します。 しばらくすると、abc.jarと同じ場所に、abc_s.jarが作成されます。 このabc_s.jarがjargで処理されより小さくなったJARファイルです。

まだ、バグがあるかもしれませんので、abc_s.jarを実行して不具合がないことを十分に確認してください。

以下のようにすると、コマンドラインヘルプが表示されます。

  > java -jar jarg.jar
  jarg - Java Archive Grinder (jarg) - ver 0.9.12
  [usage] java -jar jarg.jar {options} xxxx.jar
    options
        -version     : show version                バージョンを表示します。
        -verbose     : verbose mode
        -verbosern   : verbose of renaming
        -verboseufm  : verbose of removing unused fields and methods
        -verbosebco  : verbose of byte-code optimizing
        -verboseall  : verbose all
        -showstat    : show statistics
        -showtime    : show time
        -nocomp      : no commpressed output jar   非圧縮形式のJARファイルを出力します。
        -normdir     : no remove directry entry    ディレクトリエントリを削除しません。
        -normlv      : no remove local variable    ローカル変数のデバッグ情報を削除しません。
        -normln      : no remove line number       行番号のデバッグ情報を削除しません。
        -normsf      : no remove source file       ソースファイル名を削除しません。
        -normsy      : no remove 'Synthetic'       'Synthetic'属性を削除しません。
        -normin      : no remove 'InnerClasses'    'InnerClasses'属性を削除しません。
        -normex      : no remove 'Exceptions'      'Exceptions'属性を削除しません。
        -nornc       : no rename class             クラス名を変更しません。
        -nornf       : no rename field             フィールド名を変更しません。
        -nornm       : no rename method            メソッド名を変更しません。
        -nobco       : no byte-code optimizing     バイトコード最適化を行いません。
        -excpp @file : list of excepting package
        -excpc @file : list of excepting class
        -excpf @file : list of excepting field
        -excpm @file : list of excepting method
        -rnlog file  : rename log file             改名ログを出力するファイル名を指定します。
        -j2me-prev preverify  : preverify command path
        -j2me-cp classpath    : preverify class path

クラス名の変更をしたくない場合には、以下のようにします。

  > java -jar jarg.jar -nornc abc.jar

ある特定のクラス名を変更したくない場合には、変更したくないクラス名をパッケージ名を含めてテキストファイルに入れます。 複数ある場合には、1行に1つのクラス名になるように、おのおのを改行で区切ります。 そして、以下のようにします。ここで exclass.txt は、前述のテキストファイルの名前です。

 > java -jar jarg.jar -excpc @exclass.txt abc.jar 

J2ME-MIDLET用のjarファイルの場合、preverifyを再度行う必要がありますので、以下のようにしてください。

  > java -jar jarg.jar -j2me-prev c:\j2mewtk\bin\preverify.exe -j2me-cp c:\j2mewtk\lib\midpapi.zip abc.jar

Ant Taskに対応していますので、Antビルドファイルで、直接利用できます。(サンプル & オプション)


変更履歴

変更履歴は、ここをご覧ください。