現在のWindowsプラットフォーム上で動くクライアントGUIアプリケーションと言えば、VB、C++Builder等が大部分を占めています。JavaといえばWEBサービス、iアプリ等の分野では多くを占めていますが、クライアントGUIアプリケーションとなると、AWT、Swingを一度使ってみたことのある方なら分かると思いますが、遅い、見づらい、使う気が起きないといった具合でした。
しかし、Javaがこの分野に風穴を開けるためのGUIツールキットが誕生しました。それが『SWT』です。SWTはThe Standard Widget Kitの略で、Eclipseというオープンソースプロジェクトから提供されているJava用のGUIツールキットです。これは各プラットフォームのネイティブAPIを呼び出しているため、美しく、軽快に表現できることになります。(例えばWindowsであれば、WIN32APIの呼び出しが行われる)
各プラットフォームのAPIを呼び出すと言っても、OS依存部分はSWTライブラリが隠蔽していますので、アプリケーションのコード自体はOS非依存で移植性を持って書くことができます。
文章だけ並べてもイメージがつかみにくいので、代表的なものを挙げます。『Eclipse』というIDEをJavaのエンジニアの方なら使ったことがある人も多いと思います。EclipseがまさにSWTで構築されています。使っていてJavaっぽさ全くを感じないのではないでしょうか?従来のVB等で開発されたWindowsツールとなんら変わらない動作とGUIを提供してくれています。

元々、IBMで4,000億ドルをかけて開発されていたオープンソースソフトウェアだったのですが、2001年にオープンソース開発支援団体『Eclipse.org』に寄付したことで、大変話題になりました。ここで2001年の話ならトレンドではないのでは?とつっこみが入りそうですが、まだまだ、開発現場に実用レベルとして受け入れられてはいないのが現状です。いくつかその要因を挙げてみます。
1.実用レベルのGUI開発ツールが存在しない。
最近ではEclipseプラグインとして使用できるGUIツールが登場していますが、まだVB程の高い生産性と実用性を持ち合わせたものがないのが現状です。ただ、GUIツールがなくても開発できるので勘違いはしないで下さい。SWTでは分かりやすいAPIが提供されています。
2.Pure Javaではない
Javaの「Write Once Run Anywhere」という非プラットフォーム依存の特性が、SWTを使用することで、なくなってしまいます。ここからは筆者の意見です。これはマイナスにもとらえられますが、先に述べたようにアプリケーションコードの移植性は保たれたままですし、JavaがGUIアプリケーションに乗り込むためにかかせないものだと感じています。各OSのネイティブAPIを使用することで軽快に動くというのは、メリットの方が格段に大きいと思います。遅いツールは使う気が起きませんからね!
今回これを取り上げたのは、Eclipse3.0のリリースが近づいてきたからです。雑誌にも取り上げられ、既にSWTの本も出版されています。現在の最新バージョンはEclipse 3.0M7になります。(3.0ではいくつかの機能追加がなされますよ!)もし、まだSWTについて知らなかった人、JavaによるGUIアプリケーション開発に興味を持っている人はSWTを利用して是非何か作ってみてください!
これまでのJavaのGUIに対するイメージが変わると思います。
<参考URL>
SWTサンプル集
http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/swt?page=FrontPage
Mobsterプロジェクト
http://www.mobster.jp/wiki/view.jspa?pid=SWT