Swing
Swingの高水準の柔軟性は、ネイティブ・ホストのオペレーティング・システム (OS)のGUI部品の表示をオーバーライドできる能力を反映したものである。Swingは、そのGUI部品をJava 2D API群で描画しており、ネイティブなユーザー・インターフェイス・ツールキットを呼ばない。従ってSwingコンポーネントには、それに対応するネイティブなOSのGUIコンポーネントといったものはなく、下層にあるグラフィクスGUIで可能な範囲内においてどのように描画しようと自由である。
しかしながら、すべてのSwingコンポーネントは、その中核部分においてAWT コンテナに依存している。これは、SwingのJComponent はAWTのContainerを拡張したものだからである。これによりSwingをホストOSのGUI管理フレームワーク(デバイスとスクリーンの対応づけや、キー操作やマウス移動などユーザとのインタラクションを含む)に差し込むことが可能になっている。Swingは単純に、Swing固有の(OSにとらわれない)意味(semantics)を、下層にある(OS固有の)コンポーネント群に「置き換え」ているだけである。