ホーム > 製品情報 > SophiaCompress(Java) OASIS > 圧縮原理

SophiaCompress(Java) OASIS 圧縮原理

圧縮原理

携帯 Java アプリは、一般的に複数のモジュール ( Java では「クラス」と呼ぶ ) から構成されます。

各モジュールは「データの部分」とそのデータを操作する「プログラムの部分」の二つに大きく分類することができます。

SophiaComprtess(Java) 圧縮原理

SophiaCompress(Java) OASIS は左の図のような圧縮原理で、 Java プログラムを実行形式のまま最適化し、最小化します。

また、圧縮に伴う ADF ファイル( DojaJAM ファイルや MIDPJAD ファイルなど) の変更やプリベリファイも、一連の圧縮作業として自動的に行います。

  1. クラス融

    複数のクラスを一つのクラスに統合

  2. インストラクション最適化

    プログラム部分の圧縮

  3. データ最適化

    データの部分の圧縮

クラス融合

SophiaComprtess(Java) クラス融合

クラス融合とは、二つ以上の Java のクラスファイルを、全部の機能をあわせ持った一つのクラスファイルに統合する機能です。

それぞれのクラスファイルの持つ情報を共有することができるため、融合されるクラスの数が多ければ多いほど高い圧縮率が期待できます。

携帯 Java アプリが大容量化される背景にあって、この機能は有効です。

インストラクション最適化

SophiaComprtess(Java) インストラクション最適化

インストラクションとは、プログラムをコンパイルした後の命令列のことです。

インストラクションの最適化とは、プログラム命令群を、より小さなサイズになるような同等のプログラム命令群に置き換えることで、クラスファイルのサイズを小さくする機能です。

【インストラクション最適化機能の詳細】

  • 未使用クラスの削除
  • 未使用メソッドの削除
  • 未使用スタック命令の削除
  • 未使用コードの削除
  • 未使用 'try-catch' ブロックの削除
  • 未使用フィールドの削除
  • インターフェースの削除
  • メソッドのインライン展開
  • スタックマップ最適化機能
  • BasicBlock 共有化機能
  • 独自プリベリファイヤ
  • クラス変数の配列化
  • ローカル変数の並び順の変更
  • アクセスフラグの変更
  • nop 命令の削除
  • goto 命令の削除
  • System.out.print[ln]の削除
  • gc() の削除
  • 意味のないスタック操作命令の削除
  • synchronized メソッド作成
  • JDK1.4 のサポート

データ最適化

SophiaComprtess(Java) データ最適化

データ最適化とは JAR ファイルのデータ領域の無駄な情報を削除、または共有することでサイズを最小化する機能です。