[ Topページへ戻る ]
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高速起動ツールを開発することにしました。
BeanShell、PnutsのようなJavaと融合したスクリプト環境を使えばよいという話しもあります。特に"Mercury"版なんか非力なので、はるかにBeanShellの方が便利です。
でも、自分の慣れているコマンド環境(あるいはGUI環境)で使いたい、といった欲求もあるので、ここではあえてコマンドから起動できるものを開発します。(趣味で作りたいというのが本音かも)
進行状況:開発中、プレリリース版公開
まずは、Java仮想マシンを1つ起動し、ここにJavaクラス起動リクエストを受け付ける小さなプログラムを走らせておきます。あとは、実行したいクラスを都度要求すれば1つの仮想マシン上でどんどん実行してくれるという訳です。
発想の元は、「Javaプラットフォームパフォーマンス」(ピアソン・エデュケーション刊、スティーブ・ウィルソン+ジェフ・ケセルマン著、豊福剛訳)のRAMフットプリントを減らすためのたラウンチャーです。ただし、これは一度Java仮想マシンを起動したら、クラスパスを変更できない点が不便でした。そこで、これをベースにクラスパスを変更できる機能を追加しようと作ったのが、"Mercury"です。
進行状況:未着手
ヴィーナスの名に恥じぬように、見てくれに凝ってみます。
[ Topページへ戻る ]