Swing
Swingはランタイム機構と間接的構成パターンに大きく依存しているため、その設定値が実行中に根本的に変わっても対応できるようになっている。たとえば、Swingベースの、実行中のアプリケーションのユーザー・インターフェイスをホットスワップ可能である。更に、ユーザが独自のルック・アンド・フィールの実装を与えることもでき、これにより、アプリケーションのコードは何も変更することなく、既存のSwingアプリケーションのルック・アンド・フィールを均質に変更することが可能となっている。
SwingはAWTよりも強力で柔軟なコンポーネントを持つ。ボタン、チェックボックス、ラベルといった馴染み深いコンポーネントの他にも、Swingはタブ付きパネル、スクロール窓、スライダー、スピナ、ツリー表示、表、リストなどの高度なコンポーネントを提供している。
AWTと異なり、Swingコンポーネントはプラットフォーム固有のコードで実装されたものではなく、完全にJavaで書かれている。このため、Swingはプラットフォームに依存しない。このようなコンポーネントを軽量コンポーネントと呼ぶ。AWT はオペレーティングシステムのウィンドウシステムに準じたデザインになるのに対し、Swing で作成した GUI は Javaプログラム上で描画されるので、より柔軟な設計が可能となる。
SwingはJavaFXにより置き換えられる方針であるが、当面の将来はSwingもJava SE仕様の一部として残る見込みである。