Excelsior JET テクノロジー概要

Excelsior JET は、Java アプリケーションを高速化し、リバース エンジニアリングに対するセキュアさ、完全なアプリケーションのセットアップの作成、Java ランタイム 環境 (JRE) などのデプロイメント依存なしで Java ソフトウェア製品を配布することを可能にします。 さらに、Java アプリケーションのダウンロード サイズを事実上減少することができます。

では、Excelsior JET は、どのようにこれらのことを達成するのでしょうか?

使用するもの

Java アプリケーションは、ポータブルなバイトコード形式で配布され、Java 仮想マシン (JVM) の上で実行します。 JVM は、アプリケーションを実行するために各システムにインストールされる JRE の一部です。

JVM は、アプリケーションを実行し、Java コードを実行時に最適化することでパフォーマンスを徐々に上げます。


図 1. JVM ウォームアップ サイクル vs. ネイティブ アプリケーションの安定した性能

簡単に言えば、ユーザーがアプリケーションを起動したり、Java で動作するデバイスの電源をオンにするときは、Java コードものパフォーマンスは比較的低いです。 パフォーマンスは、アプリケーションがしばらく実行した後でのみ、ある範囲で改善されます。 残念ながら、再起動したときに、すべてのウォームアップ サイクルが繰り返されます。

Java のパフォーマンスに対する直接の方法はありますか?
はい、あります。

実行前にターゲット プラットフォーム用に Java コードを最適化する自動ツールがあると考えてください。 オプティマイザーに固有のリソース制約から解放され、すべてのコードをプロセスし、さらに最適化もします。

ツールにアプリケーションのクラスを渡します。それはパフォーマンスのためにクラスを最適化して、ディスクに結果を保存します。 これで、最適化した形で Java アプリケーションをデプロイでき、ターゲット システムで最初から速く実行できます。

ここで説明している自動ツールとは何でしょうか? 続けてお読みください。

 

Excelsior JET オプティマイザ

Java アプリケーションは、1 つまたは複数の jar ファイルに収められるたクラス ファイルとイメージのようなリソースで構成される特徴があります。

Excelsior JET オプティマイザを使用して、クラスを非常に最適化した x86 コードに変換し、Windows または Linux 用のネイティブな実行ファイルを作成します。 この技術は、Ahead-Of-Time (AOT) コンパイルと呼ばれます。


図 2. AOT コンパイル

これで、元の Java クラスはこのアプリケーションを実行するためには必要なくなりました。

Java クラスをリバース エンジニアリングからセキュアに守る最善の方法は、それを配布しないことです。 Ahead-Of-Time コンパイルがそれを可能にします。

そして、ネイティブ アプリケーションとして実行ファイルを起動できます。

 

Excelsior JET ランタイム

起動時にアプリケーションの実行可能ファイルは、Excelsior JET ランタイムとリンクします。それは Java プラットフォーム API クラス (ネイティブにコンパイルされている) とガベージ コレクションなどの Java アプリケーションに必要なローレベルのランタイム サポート ルーチンを提供します。


図 3. ランタイムは、コンパイルした実行ファイルのために動作します

これで、Java アプリケーションは、根底にあるハードウェア上で直接実行します。

Java コードが実行される前にターゲット ハードウェア用に積極的に最適化されたとき、アプリケーションは開始時からフルスピードで実行します。

最後に、最適化したアプリケーションのインストーラを作成する作業を Excelsior JET を利用して行います。

 

Excelsior JET インストール ツールキット

Excelsior JET インストール ツールキットを利用して、最適化した Java アプリケーション、Excelsior JET ランタイム、その他にユーザードキュメント、ユーティリティなどを含めた完全なインストール パッケージを作成できます。


図 4. 最適化したアプリケーションのパッケージング

 

デプロイメント

基本的なデプロイメントの手続きは、簡単です。 例えば、作成したパッケージ、自己包括ディレクトリは、単純にコピー操作によりターゲットシステムにインストールできます。 あるいは、フラッシュメモリ カード、USB ドライブなどのリムーバブル メディア上にそれ尾を格納し、インストールなしで、エンドユーザーがアプリケーションを実行することもできます。

必要に応じて、Excelsior JET にバンドルされている Excelsior インストーラでパッケージ化することもできます。または、別のセットアップ ツールを使用することもできます。

アプリケーションを実行するために、ターゲット システムに JRE をインストールする必要はありません。

あなたのアプリケーションのシステム要件から JRE を削除することを忘れないでください。

これで、サーバー側とデスクトップの Java アプリケーションまたは、Java 作成されたデバイスをエンドユーザーに出荷できます。


図 5. Java デプロイメントの簡易化

 

ダイナミック クラス ローディングはどうなりますか?

Java アプリケーションは、ターゲット システムにのみ存在したり、リモートホストからのダウンロード、または実行時に生成されるクラスをロードする必要がある場合があります。 例としては、ダイナミック プロキシ、アプリケーション用のサードパティのプラグイン、JDBC ドライバがあります。

Excelsior JET はどのように対処するのですか?
簡単です。 Excelsior JET ランタイムは、実行中のアプリケーションへの Java クラスを透過的にロードする JIT コンパイラを含んでいます。


図 6. ダイナミック クラス ローディング

 

オプティマイザはよりスマートに、インストーラはより小さく

「なぜ、すべてのプリコンパイル済みのスタンダード Java クラスを含む大きな足かせ (JET ランタイム) を必要としなければならないのですか? 私のアプリケーションはその中の一部しか使用していないのに。」 と尋ねる人がいるかもしれません。

非常に良い質問です。

Excelsior JET には、JET オプティマイザが含まれ、アプリケーションのクラスと、Java SE API の必要とされるクラスをひとつの実行可能ファイルにコンパイルできます。 残りの API クラスは、非常に効果的な圧縮法でパッケージ化されます。

その結果、Excelsior インストーラで作成されたアプリケーションのセットアップは Sun JRE よりも事実上小さく できます。

 

次にすることは?

すべての機能を提供する Excelsior JET 評価版をダウンロードすることを勧めます。

 

もっと詳細を知りたい

Excelsior JET についてさらに詳細を知るには、下記のリンクをご覧ください。

 

ページトップへ