Tatsurou Sekiguchi' Web Site [English] [日本語]

Java Blender

Java Blender とは

Java Blender は i-αppli のプログラムを圧縮するツールです。 i-αppli にはコードサイズの制限があるため、 名前を 1 文字にしたり、クラスをできるだけ作らないようにして コードサイズを減らそうとしがちですが Java Blender を使うとそのような処理を自動的に行うことができます。 そのためプログラマは普通の Java と同じ感覚で i-αppli のプログラムを書けるようになります。

Java Blender の使い方

まず、ちゃんとした i-αppli のソフトを作ります。 つまりきちんと動作する JAR ファイルと JAM ファイルを用意します。 それから Java Blender を使って JAM ファイルの場所を指定します。 あとは圧縮ボタンを押すと、パカパカ画面が動いて、 プログラムを圧縮してくれます。 この時に元の JAR ファイルと JAM ファイルは上書きされてしまいますので 注意しましょう。

圧縮率の違いについて

圧縮率で「強」を指定するとより小さくすることができますが、 その代わりメモリ使用量が増える可能性があります。

Java Blender の入手方法

インストーラを無料で配付しています。

Java Blender version 1.20α. for Windows 2000, XP. (15MB)

過去の更新履歴

  • Java Blender version 1.00α.
  • Java Blender version 1.01α.
    変更点: jar ファイルに META-INF を含まないようにした。
  • Java Blender version 1.02α.
    変更点: クラスの省略形と同じ名前のクラス(例: D, Z, I など) が存在した時に正しく認識できなかった。 日の表示を %2d から %02d に変更した。
  • Java Blender version 1.03α.
    変更点: 名前の短縮化のアルゴリズムを見直した。
  • Java Blender version 1.04α.
    変更点: i-JADE 上で動作しないバグを修正。
  • Java Blender version 1.05α.
    変更点: アイコンを修正。
  • Java Blender version 1.06α.
    変更点: Windows NT/2000 上で Administrator でないと動作しないバグを修正。
  • Java Blender version 1.07α.
    変更点: MediaImage などのインターフェースを使った時に正しく動作しないバグを修正。
  • Java Blender version 1.08α.
    変更点: LDC; POP のような命令列を含んでいる時に正しく動作しないバグを修正。
  • Java Blender version 1.09α.
    変更点: IINC で 16ビットを超える値を加算した時に正しく動作しないバグを修正。
  • Java Blender version 1.10α.
    変更点: 504i シリーズに対応。
  • Java Blender version 1.11α.
    変更点: プリベリファイアのバグを修正。
  • Java Blender version 1.12α.
    変更点: i504 の com.nttdocomo.opt.ui 以下のモジュールに対応。
  • Java Blender version 1.13α.
    変更点: i505 シリーズに対応。
  • Java Blender version 1.14α.
    変更点: いくつかのバグを修正。
  • Java Blender version 1.15α.
    変更点: いくつかのバグを修正。
  • Java Blender version 1.16α.
    変更点: 以前のバージョンでは フレーム変数を使わないメソッドのスタックマップに変数を一つ定義していた。 DoJa3.5ではこれがエラーと判断されるので変数の付加をやめるようにした。
  • Java Blender version 1.17α.
    変更点: EZアプリに対応。 Doja3.5の新しいクラスに対応。
  • Java Blender version 1.18α.
    変更点: Doja3.5の新しいクラスに対応。
  • Java Blender version 1.19α.
    変更点: 稀に同じ名前のインスタンス変数ができるバグ、 クラスを融合した時のコンストラクタ内部での初期化の順序についてのバグ、 TimerListner を implements したクラスとしていないクラスを融合する 時に生じるバグを除去。
  • Java Blender version 1.20α. (April 26, 2005)
    変更点: クラスを融合した時に super を使ったメソッド呼び出しが機能しないバグを除去。

シェルからの利用

開発者向けにシェルからも利用できるようになっています。 Java Blender をインストールしたディレクトリには以下の 4 つのプログラムが 置かれています。

jblender.exe ユーザーインターフェース
blender.exe 複数のクラスを融合する。
smap.exe プリヴェリファイアー
sname.exe クラス名、メソッド名などの識別子を短縮する。

シェル、コマンドラインから表の下 3 つのツールを使うことで、 ユーザーインターフェースから利用した場合と同じ結果を得ることができます。 ただしプリヴェリファイアーは最後に起動する必要があります。 それぞれのツールの引数の指定の仕方は次のようになります。

blender [cwd] [-strong|-normal] [jam file] [class file(s)]
sname [cwd] [jam file] [class file(s)]
smap [cwd] [class file(s)]

[cwd] はクラスファイルが置かれているディレクトリを指定します。 [class file(s)] は [cwd] からの相対パス名で指定します。 [-strong|-normal] は圧縮率の調節に使います。 これらのツールを使うとクラスファイルは削除され、新しいクラスファイルが [cwd] で指定したディレクトリに生成されます。 この三つツールはプラットフォームの種類ごとに別々のツールが用意されています。 504i, 505i などのアプリを処理するには専用のツールを使う必要があります。

kjxpack [kjx file name] [jad file] [jar file]
kjxunpack [kjx file]

これらのツールは KJX ファイルの作成、展開を行います。

ソースコード

ソースコードを配付しています。

コンパイルを行うためには Objective CAML と cygwin と C++ コンパイラが必要になります。

ライセンス

Java Blender に関係する 著作権などのすべての権利は t.sekiguchi に帰属します。 ソースコードは GNU General Public License の規約に従って公表されています。 また Java Blender によって圧縮されたアプリは何の制約もなしに使用することが できます。ただし、あくまでもお願いですが、このホームページへのリンクを付属する ドキュメントに書いておいていただけるとありがたいです。

圧縮アルゴリズムを知りたい方へ

コンピュータソフトウェア誌(vol. 19, no. 1, pp. 1-9, January, 2002)に掲載しています。

注意点

  • このソフトは無保証です。Java Blender によって生じたいかなる効果についても 製作者は責任を持ちません。
  • レジストリを使っていないので アンインストールするにはディレクトリを丸ごと消しても大丈夫です。
  • Class.forName を使っているアプリでは、正しく動作しないことがあります。
  • 圧縮したら動作しなくなった時は 圧縮前の jar ファイルと jam ファイルと 圧縮後の jar ファイルと jam ファイルをお送りください。

Link

Copyright (C) Tatsurou Sekiguchi. All rights reserved.