[ Topページへ戻る ]

Java高速起動計画

Java Class Launcher

2002.9.1よりアクセス


背景

 非力なマシンでは、ちょっとしたJavaのクラスを実行するのに非常に時間がかかってしまいます。その原因は2つに大別され、1つはJava仮想マシンを起動するための時間がかかるため、もう1つはアプリケーション実行時にアプリケーションが必要とするクラスがまだロードされていなければ、それをロード・リンクするためです。
 Swingを使ったアプリケーションの起動が遅いのは、Swingが内部でたくさんのクラスをロード・リンクしているからです。例えば、JFrameにJButtonを貼っただけの非常にシンプルなGUIのプログラムですら、実行する際に841個のクラスがロード・リンクされます。詳しくはjavaコマンドのオプション-verboseを指定すると見ることが出来ます。そのうちswing関連が115個、awt関連が252個になります。
 また、複数のJavaプログラムを起動する場合、それぞれ別々にJava仮想マシンを起動していたら、あっという間にメモリがなくなってしまいます。
 そこで、マシン上でJava仮想マシンを1つだけ起動し、その上でクラス(プログラム)を複数実行する環境として、Java高速起動ツールを開発することにしました。

他の選択肢

 BeanShellPnutsのようなJavaと融合したスクリプト環境を使えばよいという話しもあります。特に"Mercury"版なんか非力なので、はるかにBeanShellの方が便利です。
 でも、自分の慣れているコマンド環境(あるいはGUI環境)で使いたい、といった欲求もあるので、ここではあえてコマンドから起動できるものを開発します。(趣味で作りたいというのが本音かも)


開発計画

開発コード:"Mercury"(水星)

進行状況:開発中、プレリリース版公開

まずは、Java仮想マシンを1つ起動し、ここにJavaクラス起動リクエストを受け付ける小さなプログラムを走らせておきます。あとは、実行したいクラスを都度要求すれば1つの仮想マシン上でどんどん実行してくれるという訳です。

発想の元は、「Javaプラットフォームパフォーマンス」(ピアソン・エデュケーション刊、スティーブ・ウィルソン+ジェフ・ケセルマン著、豊福剛訳)のRAMフットプリントを減らすためのたラウンチャーです。ただし、これは一度Java仮想マシンを起動したら、クラスパスを変更できない点が不便でした。そこで、これをベースにクラスパスを変更できる機能を追加しようと作ったのが、"Mercury"です。

開発コード:"Venus"(金星)

進行状況:未着手

ヴィーナスの名に恥じぬように、見てくれに凝ってみます。


[ Topページへ戻る ]


This page is written by Toru TAKAHASHI.(torutk@02.246.ne.jp)