IBM Lotus Expeditorの仕組み
Expeditorの仕組みについて説明します。ExpeditorはOS上に存在するIBM のバーチャル・マシン上で動作するJavaのテクノロジーで提供されています。そのバーチャル・マシン上でExpeditorの肝となるテクノロジーにはEclipse RCP(Rich Client Platform:以下Eclipse)が採用されています。EclipseはJavaで作られた軽量かつ表現力の豊かなJavaなどのアプリケーション統合開発環境として広く知られていますが、その統合開発環境を実行するためのプラットフォーム部分がEclipseになります。Eclipse を採用することにより、Eclipse が持つ豊かな表現力、高い操作性を実現するグラフィカル・ユーザー・インターフェースのためのフレームワークと、プラグインによる高い拡張性、柔軟性を実現することができます。
Eclipse ではユーザー・インターフェースを実装する仕組みとしてSWT(Standard Widget Toolkit)と呼ばれるツール・キットや、JFacesと呼ばれるグラフィカル・ユーザー・インターフェースのフレームワークなどといった機能を提供しています。その他にも、Eclipse プロジェクトにはGEF(Graphical Editing Framework)という、非常に強力なグラフィカル・ユーザー・インターフェースのフレームワークも提供されており、利用することが可能です。
従来、Javaでグラフィカル・ユーザー・インターフェースを実装した際には、Java のコンテナー上でWidgetが生成され表現されるため、表現力、パフォーマンスに弱点がありました。それに対してSWTでは、WidgetとしてOSが持つネイティブのものを使用することを基本とし、OSがサポートしていないもののみエミュレートする方法を用いることにより、表現力とパフォーマンスに関する問題点を解決することに成功しました。
また、Eclipse の大きな特徴である、プラグインをプラグインによって拡張することができるという仕組みもそのまま利用することができます。つまり、Expeditorではすべてのフレームワーク、サービスがEclipseプラグインの形式で実装され提供されています(図2)。
それらのプラグインの多くにはそのプラグインを拡張するための拡張ポイントが提供されており、目的に応じて機能を拡張しコントリビュートすることができるようになっています。Expeditor上で動作するアプリケーションも同様に、すべて Eclipse プラグインの形式で実装することになります(図3)。