GlassFish 配布物のサイズについて

この記事はGlassFish Advent Calendar 2013の11日目として新たに書き下ろしたものです。昨日はJavaエバンジェリスト・寺田 佳央 @yoshioterada さんの「たかがレルムされどレルム GlassFish で始める詳細 JDBC レルム」でした。

ちなみに、昨日はGlassFish v3 FCSとJava EE 6がリリースされて4周年という記念すべき日、寺田さんはしっかり覚えていてくださいました。

しかも即答(9:17ツイートに対して9:20リプライ)...さすがはGlassFishの伝道師!なのです!


今回は小ネタとして、GlassFish配布物のサイズについて取り上げます。

GlassFishの配布物には、プラットフォームごとのインストーラーを含むものと、インストーラーを含まないZIPアーカイブがあります。また、それぞれについて英語版と多言語化版が存在します。

GlassFishのインストーラー版は多言語版で73MBの大きさですが、ZIPアーカイブ版になると114MBにも達します。なぜ、40MBも差があり、しかもZIPアーカイブ版の方が大きくなるのでしょうか?

GlassFishはインストール後すぐに起動して使えるように調整されています。その調整の仕方がインストーラー版とZIPアーカイブ版で異なるのです。

ZIPアーカイブ版は任意のディレクトリに展開してすぐasadminが使用できる状態になっています。そのためにZIPアーカイブ版では、事前にdomain1という初期ドメインを作成しておき、インストールディレクトリごとZIP圧縮するという手法を採っています(リポジトリからソースコードをチェックアウトしてMavenでビルドしてみると、コンソールログからその工程がはっきりと分かります)。ドメイン名がdomain1固定であったり、管理コンソールにパスワードが設定されていないのはそのためです。

一方でインストーラー版はドメインを含んでいない状態で配布され、インストールの途中で(GlassFish本体のインストールが完了した後)ドメインを作成します。GlassFishのドメインを構成するファイルとディレクトリは、実はインストーラーよりサイズが大きいため、GlassFishではインストーラー版よりZIPアーカイブ版の方がサイズが大きくなるという、一種の逆転現象が起こっているのです。

どのソフトウェアにも共通して言えることですが、インストーラー版の方がインストーラーを含む分だけサイズが大きくなる傾向にあります。インストーラー版が作成時にZIPより高圧縮率のアルゴリズムを選択したとしても、インストーラーのサイズ分くらいを小さくするのが限度です。

ドメインの作成自体はasadminで簡単に作成することが出来ますし、ドメインのテンプレートもあらかじめGlassFishの配布物に含まれています。頑張れば低水準APIであるNucleusのConfig Frameworkを直接呼び出して作成することができるかもしれません。いずれにせよ、GlassFishのインストーラーがどのようにしてドメインを作成しているのか確認してはいませんが、これらGlassFishに備わったドメイン管理機能をインストール過程で使用していることは確かだと思われます。


明日、12日目は @itoKami1123 さんです。