最終更新:2012-10-18 (木) 11:08:13 (4201d)  

SWT
Top / SWT

Standard Widget Toolkit

http://www.eclipse.org/swt/

Eclipseというオープンソースプロジェクトから提供されているJava用のGUIツールキット

特徴

  • 軽快な動作
    • SWTはJNI(Java Native Interface)経由でOSのネイティブAPIを呼び出しているため、軽快に動作します。Eclipse自身もそのUIがSWTで作成されています。 Eclipseがここまで広く普及した理由には、SWTの軽快な動作によるところが大きいでしょう。
  • プラットフォーム・ネイティブなルック&フィール
    • UIの描画のためにOSのネイティブAPIを呼び出しているため、プラットフォーム・ネイティブなアプリケーションと同様のルック&フィールを実現することができます。
  • Pure Java?ではない
    • JNIを使用しているため、Pure Java?ではありません。そのため、プラットフォームごとにSWT用の共有ライブラリが必要となります。とはいうものの、現状WindowsLinuxSolarisQNXAIXHP-UX?Mac OS XWindows CEといった幅広いOSにSWTはポーティングされています。さらに、SWTのライセンスは再配布を可能にしていることを考慮すると、Pure Javaではないといっても大きな問題にはならないでしょう。さらに、プログラミング上の注意点としては、各ウィジェットが持つdisposeメソッドが挙げられます。SWTのウィジェットはPure Javaではないため、一般的なJavaオブジェクトのように、確保したリソースがGCによって開放されません。ウィジェットを破棄するときにはdisposeメソッドを明示的に呼び出す必要があります。
  • アプリケーション・コードはプラットフォーム非依存
    • アプリケーションは、ShellやButtonなどのSWTのクラスを使用して開発されます。ShellやButtonは、ネイティブAPIを持つクラス「OS」や「Callback」「COM」を通じて共有ライブラリを呼び出し、OSに対し描画を依頼します。アプリケーションからのネイティブAPIの呼び出しは全てJava VM、SWTによって隠蔽されます。 そのため、SWTを使用して開発されたアプリケーションは、プラットフォーム非依存となります。 ソースファイルだけではなく、従来通りクラスファイルも移植性があります。また、基本的なウィジェットはプラットフォーム非依存ですが、SWTでは プラットフォーム固有の技術も利用することが可能です。 例えばWindowsでは、IEActiveXのコンポーネントとして画面に貼り付ける、 というような処理もSWTにより行うことができます。
  • Eclipseのプラグイン?開発に必要
    • EclipseはSWTを用いて実装されているため、Eclipseを拡張するプラグインを開発するためにはSWTが必要です。 プラグイン開発では、JFace?というSWTを利用して実装された拡張ツールキットを使用することもできます。この場合でも、JFace?はSWTを完全には隠蔽しないため、SWTの知識が必要となります。
  • Eclipseと同じ柔軟なライセンス
    • SWTはEclipseと同じCPL?(Common Public License)で配布されています。そのためSWTを使用したアプリケーションのソースコードを公開する義務は無く、ライセンス上の制限(商用利用不可など)もありません。

関連

  • JFace?

参考