Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

アイアプリの実行ファイル縮小化プリプロセッサ 

こんにちは。アイアプリをJBuilder2005でたまにつくっています。
技術的な質問ではなく、開発環境の質問です。
携帯アプリに向いたJava用プリプロセッサはいろいろあると思うのですが、今回の質問は1点です。
・変数名をコンパイル前に自動短縮して、jarファイルを小さくする、という機能を持つプリプロセッサで有名なものはあるでしょうか?
できれば無料に近いものの情報を集めています。
ご存知のかた、教えてください。

7

回答

78782

閲覧

7件の回答

評価

0

iアプリは管轄外なのですが、同僚に聞いてみました。
JavaBlenderでいいんじゃないフリーだし
との回答でした。

これでもダメな場合さらにjargでjarを縮小し
またさらに7zipなんて手も有るようです。

評価

0

クラスファイルにはメソッド名やクラス名が入っているので
それを a 等の1文字にすれば名前短縮分容量が減るって事ですよね?

そのようなツールの元々の目的はファイル縮小じゃなくって難読化です。
(逆コンパイルした時にソースを見にくくするのが目的)
だから 「JAVA 難読化」で検索するとたくさん出てきます。

英語だったらObfuscatorですね。

ちなみに自分は昔RetroGuardってのを使ってました。
フリーだったんだけど有料化されてるかも?

ではでは

評価

0

ありがとうございます。
jarを直接解析・圧縮するソフトがフリーとは知りませんでした。勉強になりました。
ただ、まあ、プリプロセッサのほうが個人的に安心なので(コンパイル前ソースが見られるので)引き続き知っている方、情報をお願いします。
最適化は5から10%程の縮めばOKです。

評価

0

ゆきお様
「JAVA 難読化」という言葉は知りませんでした。ありがとうございます。

評価

0

プリプロセッサと聞いてちょっと昔を思い出したのでさらに駄文を書いてみる。

例えば定数(final static int MAP_SIZE=100; 等の宣言)より
ソースコード中に100とハードコーディングした方が容量が減ります。
美しいコードを書く方々には許容できない手法ですが
C言語の #define を使えば問題解決です。

そう、ビルドの一環としてJAVAのソースコードを
C言語用のプリプロセッサにブッこんで
出てきたファイルを javac すればよいのです。

この手法を使えばマクロ展開などもできるので

機能的にはこのクラスに入れたいけどメソッドの内容は2行しかないなんてのを
マクロ化することにより容量減らせます。
自分は昔 VC++ のプリプロセッサ cl を使ってやってました。

無料で使えるプリプロセッサ探せば夢ひろがりんぐかもね。

ではでは

評価

0

一応書いておきます。

その手法は限定された空間でのみ有効な、Javaの再利用性を損なう方法です。
利点はありますし、「節約」は大事な方針のひとつですが、それはJavaにおいては二の次です。
C/C++と違い、Javaでは小手先の最適化を求めません。

評価

0

ゆきおさま
一応、私は現役C++プログラマです。
C++思考回路のまま土日にJavaを使うレベルなので、defineは手法だと思います。
(VCのプリプロセッサをjavaソースに使うことは考えていませんでした)

mioさま
個人的な意見ですが言語仕様を踏みにじるとデバッガが動かなくなるので、その線を越える言語のカスタム化は当然望みません。
念を押す言語概念のご発言は感謝します。

//
質問にある変数名短縮化ですが、先駆者がいるのか確認したかったのです。有名なものが無ければ自作しようと思っています。逆に言うと、需要がないから有名な国産は無いんですかね。
jar、classを直接難読化するツールが主流ならば、それまでの話となります。。
※一応ですが私の発言はすべてアイアプリ開発に限定した話です。ただし情報を求むプリプロセッサはJava汎用でかまいません。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。