mieki256's diary



2006/04/27(木) [n年前の日記]

#1 [iappli] とうとう.jarが30Kbyteを超えてしまった

30Kbyte未満に収めないと。

一応配列をint[]→byte[]にしたら多少は減ってくれるみたい :

ではあるのだけど。その減り方が、単純に int → byte になるわけではないようで。どうにも規則性がわからない。

変数名を短くしたら減った。 :

そんな。

たしかこのへんは自動化するツールがあったはずだな…。

_アプリ開発メモ - 効果的な圧縮 :

_Jarg, 7zip による Jar ファイルサイズ削減

ツールが紹介されてる。JavaBlender、jarg、7zip とな。

_携帯Javaアプリ最適化 - Wiki :

私の調べたところ、フリーのソフトの組み合わせではproguard、JoGa?、7zipの組み合わせが最も小さくなります。

携帯Javaアプリ最適化 - Wiki より

ふむ。

_Java Blender :

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

Java Blender より

ありがたい。素晴らしい。

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

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

jarg - Java Archive Grinder より

ありがたい。ありがたい。…ん? 0.9.14 が最新版らしいのだけど、 _SourceForge の該当ページ には 0.9.13 しかない。うーむ。…と思ったが、files を辿ったら、0.9.14 があった。

7zipとやらが必要らしいのだが、7za なるものがない。インストール済みのはずだったけど…。と思ったら、 _7zip - Download を見る限り、コマンドライン版を別途落としてこないといけないらしい。

容量削減できた。 :

結構減るな。30K未満に収まった。

が、.jam の AppClass が変な名前に書き換えられてしまう。eclipse で作業しようとしたら動かなくなっていて、ちとハマった。…あ、そうか。名前を短くしていくことで容量削減をしてるから、AppClass も変わってしまうのか。

ProGuard + JoGa を使ってみた。 :

_ProGuard
_JoGa

たしかにこっちのほうが減るような。かつ、AppClass を書き換えないような指定もできる。

下のような結果に。
種類結果(byte)
オリジナル33,131
JavaBlender28,681
JavaBlender → jarg → 7zip26,863
ProGuard → JoGa → 7zip25,069

_shortやbyteは容量が増えやすい :

shortやbyteは容量が増えやすいのです! なぜなら、型変換の命令が追加されるからです。

Appli-Style.com -容量削減 各種ツール- より

あ、なるほど…。別のところで増えちゃってるから、規則性が見出せないのだな。

以上です。

過去ログ表示

Prev - 2006/04 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project