起動時間の最適化
アプリケーションの起動時間を改善する
慣例上、Javaアプリケーションやアプレットを実行するには、ユーザーがコンピュータにJavaを事前にインストールしておく必要がありました。CheerpJは、JavaをHTML5/JavaScriptにコンパイルし、ユーザーがコンピュータに追加の依存関係をインストールすることなく、ブラウザ上でアプリケーションやアプレットを実行できるようにします。JVMを使用する場合と同様に、CheerpJでJavaScriptにコンパイルされたアプリケーションは、実行中にランタイムコンポーネントをロードする必要があります。CheerpJでは、ランタイムコンポーネントはJavaScriptモジュールであり、必要に応じてオンデマンドでロードされます。
CheerpJランタイムは、「一般的な」アプリケーションの総ダウンロードサイズを最小限に抑えるために高度に最適化されており、通常のダウンロードデータの合計は10〜20MBになります(比較のために言えば、Javaランタイムインストーラーのサイズは60MBを超えます)。CheerpJのダウンロードされたすべてのコンポーネントはブラウザにキャッシュされ、同じアプリケーションを再実行する際のダウンロード時間が短縮されます。
CheerpJは、任意のアプリケーションにどのランタイムリソースが必要になるかを予測できないため、アプリケーションの実行時に必要に応じてランタイムリソースが順次ロードされます。
並列ダウンロードを活用して、特定のアプリケーションのダウンロード時間と起動時間を短縮するために、CheerpJは起動時にロードするリソース(CheerpJランタイムモジュール)のリストを事前に指定することができます。
このリソースのリストは、HTMLページでCheerpJ環境を開始する際に手動で指定します。また、アプリケーションの実行中に使用されるリソースのリストを自動的に記録して出力する簡単なプロファイリングツールも提供しています。
このプロファイラーとプリローダーを組み合わせて使用することで、アプリケーションの初回ダウンロードと起動時間を大幅に最適化できます。これを利用するには、簡単な2ステップのプロセスが必要です:
- CheerpJを使用して通常どおりにアプリケーションを実行します。アプリケーションがロードされた後、ブラウザのJavaScriptコンソールを開きます(多くのブラウザのショートカットはCtrl+Shift+I)。次に、以下を入力します:
cjGetRuntimeResources();
結果は次のようになります:
{"/lts/file1.jar":[int, int, ...], "/lts/file2.jar":[int,int, ...]}
出力が完全に表示されない場合は、次のコマンドを使用することができます:
document.write(cjGetRuntimeResources());
JavaScriptコンソールは文字列を引用符「"
」で囲むことがありますが、これは無視してください。詳細についてはこちらをご覧ください。
- CheerpJの統合を修正して、プリロードを有効にします。
cheerpjInit
の呼び出しを変更し、preloadResources
オプションを渡すだけです。例えば:
cheerpjInit({ preloadResources: {"/lts/file1.jar":[int, int, ...], "/lts/file2.jar":[int,int, ...]} });
重要これを2つのステップで実行する必要があることに注意してください。リソースは、ワークフロー全体とは別のセッションでロードされます。
詳細はこちらをご覧ください。
プリロードを有効にすると、CheerpJはプログラムの実行と並行して複数のリソースをダウンロードできるようになります。これにより、ロード時間が大幅に改善されます。