Eclipse (統合開発環境)
Eclipseは他のJavaで記述されたIDE(JBuilderやSun ONE Studioなど)と比べて動作があきらかに軽快である。この軽快さはGUIツールキットにJava標準のSwingやAWT (Abstract Window Toolkit) を使用せず、Eclipse独自のGUIツールキットであるSWT (Standard Widget Toolkit) を採用していることで得られている。
SWTの位置づけはSwingではなくAWTに対応するが、AWTとSWTの違いは、AWTがオペレーティングシステム (OS) あるいはウィンドウシステムレベルの描画操作をネイティブメソッド群というレイヤ(つまりCあるいはC++で書かれたJNIメソッドのDLL・共有ライブラリエントリ)で抽象化し、それをさらにJavaのAPIで覆い、インタフェースが二重に重ねられているのに比べ、SWTではネイティブのウィンドウシステムのAPIとJNIメソッドがほぼ一対一に対応するように定義されており、JNIの層が量的・質的に非常に薄い、ということである。
テスト、モニタリング、トレーシング、プロファイリングなどを可能にするプラグイン。
言い換えると、ネイティブのウィンドウシステムのAPIレイヤと、JavaのGUIツールキットクラスライブラリとしてのレイヤの間のセマンティックギャップを埋めるのに、AWTではCコードとJavaコードの両方を使用するのに対して、SWTではCの部分が僅少でありJavaコードが実質的に主体である。
AWTにおいて、下位層のウィンドウシステムのAPIをOSを越えて共通のものにみせかけるための、DLLのエントリとして定義されるインターフェース層は、積極的な存在意義が無く、見通しを悪くしており、2回のセマンティクス変換が効率を悪くする可能性があり、柔軟性にかけ、拡張性に劣る。またJNIを使ったCコードというのは単なるCコードよりもはるかに可読性が悪く、デバッグも難しく、開発効率は極めて低い。
SWTではこのセマンティックギャップ吸収、つまりネイティブレベルの機能とJava APIの間の機能マッピングロジックが見通しよくJavaのみで記述されている。またAWTではソースの無いDLL中のエラーは基本的にデバッグ不能であるが、SWTでは生じた問題をネイティブAPIを呼び出す等価なCコードに書き換えることができ、問題の切り分けが容易である。
SWTはEclipseとは独立して、単独でJavaアプリケーションから利用することもできる。
テキサス・インスツルメンツ製のマイコン用統合開発環境。
ルネサスエレクトロニクス製のルネサスマイコン用統合開発環境。