戻る (WappenLiteのホームへ)
このページは次のような人向けの WappenLite のマニュアルです。
(学習者として利用する場合は、このページを読む必要ありません。)
WappenLiteは、Webベースの学習用プログラミング環境構築のためのアプリケーションフレームワークです。
当研究室で従来提供していたWappenが Eclipse RCP に基づいていたのに対し、 WappenLite は HTML (Ajax) や Flash など通常の Web アプリケーションのユーザーインターフェイス (UI) 技術を利用します。 Eclipse RCP と異なり、SWT のようなプラットフォーム依存の UI 技術は使用してしません。 そのため、従来の Wappen に比べて、 WappenLite アプリケーションは以下のような特徴があります。
(後述するバックエンドをクライアントコンピューターで実行する方式の場合) Cross-Origin Resource Sharing (CORS) に対応している ブラウザー(Firefox 3.5 以降, Chrome, Safari 4 以降など)が必要です。 ダウンロード元と異なるドメイン(ローカルホスト)と AJAX 通信するためです。 (現時点では最新の Firefox でのみテストしています。)
また、WebSocket をサポートしている ブラウザーで、すべての機能を利用できますが、WebSocket 非対応のブラウザでも Comet を使って動作します。
WappenLite アプリケーションのユーザーインターフェイス (フロントエンド) は HTML や Flash などで作成され、Web ブラウザー上で動作します。 一方、非ユーザーインターフェイス部であるサーバーサイドプログラム (バックエンド) は主に Javaサーブレットと、 コンパイラーやインタプリターなどの言語処理系に対するインターフェイスとなる Javaクラスから構成されます。
WappenLite では負荷集中を避けるためなどの理由により、 通常、バックエンドもクライアントコンピューター (Webブラウザーが実行されているコンピューター)にダウンロードされ、 そこで実行されます。 (Java アプレットから起動されます。) この場合、フロントエンドとバックエンドは、同一コンピューター内で HTTP を使って通信します。
バックエンドは、対象となる言語処理系に依存する部分と、 言語処理系に依存しない部分からなります。
言語処理系依存部は、定められたインターフェイスを持つ、ただ一つの Java クラスからなります。 このクラスを WappenLite では 「コンテキスト」 (“Context”) と読んでいます。 新しい言語処理系に対応する場合は、このクラスを作成する必要があります。 ブラウザから起動するため JVM (Java Virtual Machine) 上で動作する言語処理系が扱いやすいですが、 ローカルホスト上のネイティブな言語処理系を外部プロセスとして起動したり、 他サーバー上の言語処理系と HTTP や SSH プロトコルなどで通信したりすることも可能です。 このコンテキストクラスの詳しい作成方法は WappenLite バックエンド(コンテキスト)の実装で説明します。
言語処理系非依存部は、主にサーブレットです。この部分は WappenLite 開発チームにより提供され、 基本的に利用者が新しい言語処理形に対応する場合も手を入れる必要はありません。 (ただし、 独自のサービスを提供するためにサーブレットを追加することはできます。)
このようなアーキテクチャをとることにより、次のような利点があります。
☆: 教員向けドキュメント、 ★: 開発者向けドキュメント