WebObjectsアプリケーションを起動して、Eclipseの中でも極めてクールな機能を体験してみましょう。
WebObjectsアプリケーションを起動するには、プロジェクト名の上で右クリックメニューを開き、「Run As」>「WOApplication」を選択します(図9.1[「Run As」メニュー])。しかし、これではあのクールな機能の数々を使ったことにはなりません。なんと、ソースコードを変更するとすぐに起動中のアプリケーションに反映されるのです。というわけで、まだ起動しないでください:-)
図: 「Run As」メニュー
「Run As」の代わりに、「Debug As」>「WOApplication」を選択します(図9.2[「Debug As」メニュー])。ここでMikeからのお達しです:「画像は「WOApplication (profiled)」を選択してるでしょ?実はこれミスったんだけど、撮り直すのが面倒くさかったんだ:-)」
図: 「Debug As」メニュー
Eclipseは起動するクラスを探し始めます(図9.3[起動するクラスの検索])。
図: 起動するクラスの検索
「Application」クラスを起動に使うため、上部のフィールドに「Application」と入力し、「OK」をクリックします(図9.4[起動クラスの選択])。起動用のクラスは、Run/Debugの設定画面でいつでも変更できます。
この作業を飛ばしてとっとと先に進みたいなら、パッケージエクスプローラのApplicationクラスを選択し、右クリックメニューから「Run As」>「WOApplication」を選択してください。
図: 起動クラスの選択
WebObjectsアプリケーションが起動し、ウィンドウ下のコンソールビューで標準出力(赤のテキスト)と標準エラー出力(青のテキスト)が表示されます(図9.5[組み込みブラウザで表示])。さらに、Eclipseは組み込みブラウザでMainコンポーネントを表示します。
ソー クーール!
でも、ブラウザはいつものを使うことにしましょう。
図: 組み込みブラウザで表示
「Window」メニューから「Preferences...」を選択します(図9.6[「Window」>「Preferences...」を選択])。
図: 「Window」>「Preferences...」を選択
「General」>「Web Browser」を選択し、「Use internal Web browser」を「Use external Web Browser」に変更します(図9.7[ブラウザの変更])。「Apply」をクリックしてから「OK」をクリックします。
図: ブラウザの変更
再びデバッグするときには、デバッグ用のアイコンを使いましょう。Eclipseのアイコンバーの二つめのグループに、虫(細菌?)と再生ボタンのようなアイコンが並んでいます。これがデバッグと起動のボタンです。アイコンの隣にある下向きの矢印をクリックすれば、最近使用した起動の設定のリストが表示されます。最後に使った設定で起動したければ、デバッグ・起動アイコンをクリックします。
WebObjectsのプロパティ、コマンドラインで与えるパラメータ、Java VMのオプションなどを変更する場合は、下向きの矢印をクリックして「Debug...」か「Rub...」を選択します。様々なパラメータを設定するウィドウが開きます。
再度デバッグするため、Debugアイコンをクリックします。先程と同じようにコンソールビューにログが出力されますが、今度はデフォルトのWebブラウザでMainコンポーネントが表示されます(図9.8[デフォルトのブラウザで表示])。
図: デフォルトのブラウザで表示
それではHot Code Replacementの威力を見てみましょう。Hot Code Replacementとは、ソースコードの変更を実行中のアプリケーションに再実行することなく反映させる機能です。Eclipseに戻り、アプリケーションはそのまま実行させておきます。
ここで使っているMainコンポーネントではnow()
メソッドから取得した現在日時を表示していますが、そのnow()
メソッドを特定の日時を返すように変更します(図9.9[ソースコードを変更する])。Eclipseはすぐにコンパイルし、すぐに実行中のアプリケーションに変更を反映させます。
図: ソースコードを変更する
ブラウザをリロードしてみてください。もう変更されているでしょう?(図9.10[ソースコードの変更の反映後])。ただし、Hot Code Replacementには構造的な変更は扱えないという制限があります。メソッドやフィールドの追加・削除までは反映できません。ただし、メソッドの実装の変更なら大抵の場合は動作します。この機能が、「実行、操作、停止、修正、実行、操作、停止、修正…」のサイクルを打ち破って開発を加速させることがわかるでしょう。これからは「実行、操作、修正、リロード」の時代です。
図: ソースコードの変更の反映後