Liferay
Liferayはプラグインフレームワークである。プラグインフレームワークの場合は、エンドユーザが要求している機能をプラグイン単位に分割する。プラグインとEJBやWeb Serviceとの大きな違いは、エンドユーザがEJBやWeb Serviceの機能を利用する場合は更にプログラムが必要なことだ。プラグインの場合は表示、ビジネスロジック、エンティティインターフェース定義を3要素を含めることができるため、プラグインをインストールするとエンドユーザがその機能を使うことができる。
アプリケーションサーバを停止しなくても、プラグインは随時にインストール/更新/削除することができるため、アジャイルScrum開発手法でシステムを継続的に開発することができる。その場合は、ユーザストリーがプラグインに該当する。
Liferayは保守性を向上するため、コミュニティから提供される基盤とユーザ毎に変更されるファイルを区別できるように設計されている。ユーザ差分はプラグインと言うWARで作成できる。コミュニティから新しいリリースが提供された場合は、このWARファイルを新しいリリースに展開(デプロイ)すればよい。
大きく分けて、プラグインは新規に機能を追加するポートレットと、Liferay本体の機能を上書き(クラス及びプロパティのオーバーライド)するテーマ、テンプレート、フック、extプラグインに分けることができる:
ポートレット:新規に機能を追加する場合に使う。JSR168 ポートレット/JSR286に準拠した機能及びアプリケーション。JSP、WEB-INF、Javaクラス、CSSファイルなどを含むことができる。Liferayフレームワークに追加/削除(デプロイ/アンデプロイ)できる最小の機能単位である。
テーマ:ページの外観の変更(CSS及びvelocity)
テンプレート:ポートレットの配置(例:2列に表示)
フック:JSPファイル、プロパティファイル、イベント処理の変更
extプラグイン:Liferayフレームワーク本体のすべての機能を変更できる。ただし、インストール/アンインストールにはサーバの再起動が必要である。