![]() |
安藤幸央のランダウン[19]
話題のSWTは本当に速いの?
安藤幸央(yukio-andoh@exa-corp.co.jp)
株式会社エクサ
2003/6/4
|
「Java FAQ(What's New)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします。(編集局) |
■いま話題のSWTとは?
昨今、高機能でかつオープンソースのJava開発環境として「Eclipse」が注目を浴びています。これは、もともとIBMが自社のJavaアプリケーションサーバ「WebSphere Application Server」に向けた開発ツールとして開発していたものが、よりオープンな形でJavaコミュニティに提供されたものです。現在では数多くのEclipse専用プラグインが続々登場しており、ほかのオープンソース開発ツールの追随を許さない勢いで進化し続けています。
ところで、現在Java開発ツールの多くは、すべてJavaで書かれていることをうたい文句にしています。Javaで、これだけのアプリケーションが実現するという一例としても参考になりますが、一方では高速に動作してほしい開発環境が、高速のCPUと大量のメモリを用意しないと快適な速度で動かないという声も聞こえます。
EclipseはJavaベースでありながら緩慢な動作とは無縁です。Eclipse自体もベースはJavaで書かれたアプリケーションですが、ユーザーインターフェイスの描画には「JFC(Swing)」を用いていません。オリジナルのグラフィカルユーザーインターフェイスライブラリ「SWT」(Standard Widget Toolkit)を採用することで、高速な動作を実現しているのです。
SWTは、各OSにネイティブに実装されており、非常に高速に動作します。対応プラットフォームは、大きく分けてWindows版、UNIX版(Motif/GTK)、MacOS X版がリリースされています。
Eclipseは、GUIにSWTを利用しているほかに、ネイティブ実装に「JNI」(Java Native Interface)を用い、Javaクラスとネイティブコードとを結んでいます。例えばWindowsの場合はSWTのDLL1個と、org.eclipse.swt.*クラスを用います。LinuxやUNIX系のOSならば、それぞれにSWTのシェアードライブラリが用意されています。Eclipse 2.1からは、SWTが分離され、単独のライブラリとしての提供も始まりました。
![]() |
| MacOS Xで動作するEclipse。MacOS XのAQUAが生かされたGUI |
■SWTのメリットとは
SWTの台頭は、クライアントサイドで動作するJavaアプリケーションにとっては朗報です。SWTベースのJavaアプリケーションは、Java Web Startによる起動、インストールとも親和性が高いのです。
ところで、SWTの登場でJava標準のグラフィックスインターフェイスであるJFC/Swingの役目はなくなってしまったのでしょうか? 決してそんなことはありません。SwingとSWTそれぞれにメリットやデメリットがあるため、それらを生かしたプログラム開発が求められます。
以下にSWTとSwingを比較してみましょう。
|
●JFC(Swing)のメリット
●SWT対Swingの取捨選択要因
|
Swingの利点は、動作環境に影響されることなく一貫したユーザーインターフェイスを提供できる点にあります。また、開発者にとってもプラットフォームごとの違いをあまり意識しないで済むのも利点の1つです。そのことは一方、ダイアログなどの見栄え、細かい点でOS固有のものとは若干違う操作をユーザーに強いているということも考えられます。
SWTはSwingのすべての機能を持ったものではありません。SWTが軽量・高速だからといって、完全に置き換えが可能なものではないことに注意すべきです。SWTでは、Swingの80%くらいの機能が比較的高速に動作するというイメージを持っていただくのがよいと筆者は考えています。移植性がありながら、同一のものではない、ActiveX関連など、OS固有のAPI群が存在するのもSWTの特徴です。
また、例えばMotif環境にはツリー表示を行うウィジェットは標準では存在しません。OSにないウィジェットはSWTがエミュレーションするものもあります。一方、Windows のカレンダーウィジェットのような、共通で必要ないものはSWTに含まれていません。
またSWTのネイティブ依存性により、Javaの利点であるGC(ガーベジ・コレクション)が完全に生かせないことも憂慮されます。SWTではdispose()メソッドを用いて明示的にGUI部品の扱いをプログラミングしなければいけません。
SwingとSWTが混在したアプリケーションを作成することは無理ではないですが、プロセスやイベントの管理の複雑さからいって、あまり得策とはいえません。Swing自体もJDK 1.2時代に比べ、J2SE 1.4 時代になって、相当高速に動作するようになりました。Javaアプリケーションの開発の始めの段階で、目的と機能を明確にし、使用するAPIを選択するのがよいでしょう。
■SWTは万能ではない
Webアプリケーションの世界には「8秒ルール」と呼ばれる基準があり、常に高速な動作・レスポンスが求められています。単なるベンチマーク値で動作速度について議論するのではなく、実際の使用環境下で、速く動いているように感じられることも重要です。
以下のポイントに着目して、実際にSWTとSwingを比較してみましょう。
- GUIが生成するまでの時間が短いか
- GUIが表示するまでの時間が短いか
- 部品(例えばリスト)が長いとき、短いときで差が小さいか
![]() |
| SWTで生成した長大なリスト (2500x3)2944msec:Pentum4(1.7GHz) (クリックで拡大) |
![]() |
| Swingで生成した長大なリスト (2500x3)5618msec:Pentum4(1.7GHz) (クリックで拡大) |
SWTの場合、Swingに比べて表全体をスクロールし終わるのに約2分の1の速度で済みます。その一方で最初の画面が表示されるまでの時間は、Swingの方が速いのです。これは暗黙的にどちらかのAPIを盲信してはならないことを示唆しています。
JavaのGUIツールキットは「AWT」(Abstract Windowing Toolkit)のみの時代から、Netscapeの「IFC」(Internet Foundation Classes)、Microsoftの「AFC」(Application Foundation Classes)、そしてSun標準の「Swing/JFC」(Java Foundation Classes)の登場と、さまざまな変遷を経てきました。Eclipseの広がりとともにSWTも注目を浴びるようになってきました。PocketPC環境で動作するSWTなど、使われ方も広がってきています。
開発者、ユーザーにとって、どのGUIツールキットが目的に最適なのか見極めつつ、ユーザビリティに長けたアプリケーションを開発することが求められています。
次回は7月9日の公開予定です。
| コラムINDEX |
| プロフィール |
安藤幸央(あんどう ゆきお) 1970年北海道生まれ。現在、株式会社エヌ・ケー・エクサ
マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元
CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG
の情報源となるWebページをまとめている。ホームページ: http://www.gimlay.org/~andoh/java/ 所属団体: OpenGL_Japan (Member)、SIGGRAPH TOKYO (Vice Chairman) 主な著書 「VRML 60分ガイド」(監訳、ソフトバンク) 「これがJava だ! インターネットの新たな主役」(共著、日本経済新聞社) 「The Java3D API仕様」(監修、アスキー) |
| ご意見、ご感想は掲示板へどうぞ |
ホワイトペーパー(TechTargetジャパン)
- Webの表示速度を遅くする「SSLハンドシェイク」とは (2010/2/9)
安全性を担保しようとWebページにSSLを適用すると、負荷の高い処理が実行される。速度と安全性は両立できるのか? - クラウド活用「雲活」のために押さえるべき39のポイント (2010/2/2)
活用するべきサービスか否か、クラウドの利点・問題点、クラウドプラットフォーム提供企業になるための条件、開発者がするべきことに分けて紹介 - 再利用性の高いクラス作成に重要な“アクセス制御” (2010/1/28)
Javaのアクセス修飾子public、private、protectedや、Eclipseで簡単に作れるアクセサメソッドgetter、setterについて解説 - DB設計の神ツール「ERMaster」なら、ここまでできる (2010/1/21)
直感的なUIに、カスタマイズ可能な、Excel出力のテーブル定義書、辞書機能など多機能なERモデリングの無料Eclipseプラグインです
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |








1970年北海道生まれ。現在、株式会社エヌ・ケー・エクサ
マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元
CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG
の情報源となるWebページをまとめている。

