RCP開発モデルでWebアプリを開発可能にするRAP(Rich Ajax Platform)

RAP(Rich Ajax Platform)というEclipseのプロジェクトが現在Incubation phaseからMature phaseに移行しようかというvalidation phaseに居ます。

http://www.eclipse.org/rap/

このプロジェクト,かなりすごいことができます。名前から,単なるJavaScriptのエディタ等を提供するものかと想像していたら,そうではありませんでした(それはATF(Ajax Tools Platform)でした)。このプロジェクトは,Eclipse RCPの開発モデルをWebアプリ開発に適用可能にする,というものです。

Eclipseは,ご存知の通りプラグインアーキテクチャを採用したIDEであり,いろんなプラグインをインストール可能なプラットフォームです。我々も独自にプラグインを開発可能です。一方, EclipseにはRCP(Rich Client Platform)という仕組みもあり,Eclipseコア+一部のプラグインだけをパッケージングして一つのスタンドアロンなソフトウェアパッケージにすることもできます。RCPとして開発したソフトは,いわゆるデスクトップJavaアプリケーションとして配布できるようになります。Eclipse 3.3ではJREも同梱可能になりました。

そして,RAPは,RCPを開発するかのように,Ajax Webアプリを開発可能にします!開発者は,RCPの仕組みに基づいてJavaで開発を行い,それをAjax Webアプリとすることができます。JavaScriptを使わずにJavaで開発可能な点は,GWT(Google Web Toolkit)と同じですね。

Eclipse プラグイン/RCP開発では,SWTというGUIウィジェットを用います。RAPでは,そのSWTとほぼAPI互換のRWTというGUIウィジェットを用います。SWTをより使いやすくするJFaceも,RAPがほぼAPI互換のものを提供します。RWTはJavaScriptによる実装です。以下に, RWTのデモがあります。

http://rap.eclipse.org/rapdemo/controls

RAPを用いて開発したAjax Webアプリでは,GUIの薄い部分(ちょっとしたメニュー操作等のイベント処理とか)がJavaScriptで,残りのほとんどの処理はサーバサイドJavaとなるようです。サーバサイドequinoxってこういうことだったんですね。

現状では,Eclipse RCPとRAPによるAjax Webアプリとは,自動で相互変換はできないようですが,いずれできてしまうような気がします。そうなると,顧客の要求に応じて,デスクトップアプリまたはWebアプリとして納入できるようになりますね。