![]() |
安藤幸央のランダウン[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ジャパン)
- Android NDKでJNIを使用してアプリを高速化するには (2010/3/17)
C/C++やOpenGL ESといったネイティブコードを使うためのNDKとJNIを紹介し、その使い方や注意点を徹底解説します - 調査の難しい「OutOfMemoryError」事例、5選 (2010/3/11)
Java開発者が避けて通れないメモリ不足エラーの基本的な問題切り分け方法と発生につながる事例、対処法を解説 - 究極の問題解析ツール、逆コンパイラJD-Eclipseとは (2010/3/8)
ライブラリ内で例外が発生! そのクラスのソースコードを調べたい!! 自動で逆コンパイルしてくれる無料Eclipseプラグインがあります - いまさら聞けない「Webサービス」の常識 (2010/2/26)
昨今では企業システムでも使われる「Webサービス」の概念やJava標準のJAX-WSを紹介しJBoss WSでサンプルを作成
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |








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

