下記がGWT-Ext 2.0でのおもな変更点である。
- パフォーマンスの改善
- コンポーネントモデルの統合
- 新しいレイアウトマネジメントAPIの追加
- Beanに適したAPIの追加
- いくつかの新しいウィジェットの追加
InfoQ.com は GWT-Extのクリエータであり主要開発者であるSanjiv Jivan氏とGWT-Ext 2.0に関するインタビューをチャットで行うチャンスに恵まれた。
2.0における変更点をあなた自身の言葉で簡潔に説明してほしい。
まず、Jack氏とExt 2.0の開発で素晴らしい仕事を行ったExtチームに賛辞を送りたい。GWT-Ext 2.0での多くの改良点はExt 2.0の機能強化とアーキテクチャの改良のおかげであるといってもいい。
今回のバージョンにおける最も大きなアーキテクチャ的な改良は、Componentモデルの統合とLayoutマネージメントの改良だ。すべてのウィジェットは一貫性のある階層構造となり、また、生成・レンダリング・破棄といったライフサイクルを持つ基底のComponentクラスのサブクラスとなっている。今回のバージョンは内部のComponentにのみ注意を払うContainerのレスポンシビリティと、割り当てられたLayoutManager によってハンドリングされるContainer内のComponentのレイアウトを分離させた構造となっている。これにより複雑なレイアウトを作成するのも容易になった。
また、GWT-Ext 2.0はBeanに適した扱いやすく、またGWT DesignerのようなUIビルダーと統合しやすいAPIを持つ。新しいすぐれた特徴として、グリッドのグルーピング、アコーディオン、プログレスバー、グリッドとツリー間のドラッグ・アンド・ドロップ等の機能があげられる。また、今回のリリースのハイライトの一つは、新しく改良された Showcaseデモがあることだ。 (http://www.gwt-ext.com/demo) 多くのグラフィカルなサンプルをそれらのソースと一緒に確認することができる。私はサンプルから学ぶことは非常に効果的であると強く信じており、このShowcaseデモはユーザの開発の助けとなることを望んでいる。
GWT-Ext 2.0のライセンスについても触れておきたい。FSFによると、GWTライブラリのコンテキストにおいてLGPLは、作者が明記しないかぎり事実上GPL として解釈されるということであった。私は、GWT-Extのライセンスページ (http://gwt-ext.com/license/) に明記し、それによりライセンス違反することなく、商用プロジェクトで GWT-Extを使用できるようにした。
今回のバージョンでは大幅にパフォーマンスが改善されたわけだが、それはExt 2.0のパフォーマンスが改善されたおかげである。Ext 2.0のサイトでどのような改良がなされたかを確認することができるが、GWT-Extに関係する重要なパフォーマンスの改善点についてここでいくつか挙げておこう。
- すべてのコンポーネント、ウィジェットは現在レイジーレンダリングをサポートしている。これはどういうことかというと、コンポーネントやウィジェットはいかなるオーバーヘッドもなくインスタンス化することができ、それらの描画処理はDOMに追加される必要のあるタイミングで遅れて実行される。これにより、特に大規模なアプリケーションにとっては、大幅なパフォーマンスの改善をもたらすことができる。
- 適切なメモリ管理を行うため、フレームワークがすべてのコンポーネントの生成から破棄されるまでのライフサイクルを管理する。フォームやグリッド(テーブル)は特に改善され、ユーザはこれらのウィジェットを扱う際にその恩恵を受けるができる。
- GWT-Ext 2.0では、ウィジェットの設定に分離された"config"クラスを使わなくてよい。Componentの属性を設定するためには、Component のsetterを単に呼び出せば良い。これはAPIを整理するだけではなく、コーディング量を減らすことにもつながる。
- 最後に、百聞は一見にしかず。何人かのユーザはすでに、GWT-Ext 2.0にアップデートすることで自分たちのアプリケーションがどれだけ反応がよく、素晴らしいものになるかコメントしている。そして、GWT-Ext 2.0のShowcaseデモのサンプルを実行させれば、パフォーマンスが改善されたことを実感できるはずだ。
レイアウトマネジメントAPIは変更されたが、ほとんどのユーザはこの変更を直観的で且つ複雑なレイアウトを素早く簡単に扱うことができる新しいAPIとして受け入れてくれている。分離されたconfigクラスはComponentの設定に必要はなく、Componentの setterを呼び出すことで設定を行うことができるようになった。アップグレードに際しては、数時間の単調な作業が必要となる問題があるにはあるが、これはそんなに頭を悩ませるような作業ではない。そして、ユーザはこの変更も再び受け入れてくれた。実際、Javabeanのアクセッサを分離された configクラスの代わりに使用するという変更は、GWT-Ext 0.9のユーザからのフィードバックに影響されたものだった。
今まで通りJavaのコンパイラを使用することができ、そしてコンパイラでコンパイルすることで非互換性がないこともわかっている。さらに、ユーザはアップグレードに関する質問をGWT-Extフォーラムで投稿することができる。アップグレードに要する時間はユーザによって異なるが、あるユーザは1万行のコードを持つアプリケーションのアップグレードを2日間で済ませたという報告をしている。ユーザはAPIが安定して動作することを期待していい。
GWT 1.5はJavaとJavascriptの境界を越えたパフォーマンスの改善が行われており、その結果GWT-Extにも大幅なパフォーマンス改善をもたらすことになる。私はこの最適化されたGWT 1.5を利用するために、必要な(内部的な)変更を行っている。GWT-ExtはLGPL 3.0ライセンス(サイト・英語)で配布されている。コミュニティのフォーラム、Wikiドキュメント、ライブラリのダウンロード、そしてさらに詳細なライセンスに関する情報の確認はGWT-Extのホームページ(サイト・英語)で行うことができる。
私はまたwikiドキュメントやユーザの生産性を向上させるためのFAQやチュートリアルをまとめ上げようと考えている。現在行っている機能の強化に加えて、ユーザの開発の助けとなるようなことにも注力して行きたいと考えている。成功するライブラリはユーザサポートが充実しているものだ。
原文はこちらです:http://www.infoq.com/news/2008/02/gwt-ext-2