はじめに
SWTとJFaceはEclipseのユーザインタフェースを実現するためのコンポーネントとして開発されました。Javaの画面コンポーネントというとAWT/Swingが標準であるのですが、Eclipse開発陣は幾つかの点でAWT/Swingに対する不満があったようです。
- 遅い(JDK1.4.2ではかなり改善された、というのが一般的な評価のようですが)。
- めんどくさい(確かにSwingのオブジェクトはプリミティブなものはあるけど、高レベルのものは少ないような)。
- nativeなプログラムと見た目が違う(Look and Feelを変えれば良いという話もあるけど、微妙に違うし)。
という風な。そこで彼らのとった方法というのが、「移植可能な API および、基礎となるネイティブ OS GUI プラットフォームとの緊密な統合を提供する」というものでした。この「ネイティブ OS GUI プラットフォームとの緊密な統合」という処がよく議論になる処です。プラットフォームの違いを吸収するためにDLLなりshared libraryを使うだけならそれほど問題にもならないと思うのですが(JREだってプラットフォーム毎に違うんだし)、ActiveXの様に特定のプラットフォーム(というかWindows)でしか使えない機能を使えるようにした処が批判の対象になっています。Write Once, Run Anywhereにならないじゃないの、という。このあたりは使う側(アプリケーションプログラムを作る側)でよくよく考えないといけないのでしょうね。
でSWTとJFaceなのですが、他のEclipse関連技術同様IBMがしっかりレクチャーしてくれています。例えば、
といった処がとても勉強になります。この辺を参考にして勉強してゆくことにしましょう。