Swingは、プログラミング言語 Java のGUIツールキットである。Oracle社のJava Foundation Classesの一部であり、同じくJavaの GUI ツールキットである AWT を拡張したもの。Javaプログラムにグラフィカルユーザインタフェース(GUI)を提供するAPIである。
Swingは、先行するAWTよりも洗練されたGUIコンポーネントを提供するために開発された。Swingは、幾つかのプラットフォームのルック・アンド・フィールをエミュレートしたネイティブなルック・アンド・フィールを提供する。また、「プラグイン可能なルック・アンド・フィール」(Pluggable look and feel)をサポートしていることにより、アプリケーションは簡単にルック・アンド・フィールを切り替えることができ、下で走っているプラットフォームとは関係ないルック・アンド・フィールを使うこともできる。SwingはAWTよりも強力で柔軟なコンポーネントを持つ。ボタン、チェックボックス、ラベルといった馴染み深いコンポーネントの他にも、Swingはタブ付きパネル、スクロール窓、スライダー、スピナ、ツリー表示、表、リストなどの高度なコンポーネントを提供している。
AWTと異なり、Swingコンポーネントはプラットフォーム固有のコードで実装されたものではなく、完全にJavaで書かれている。このため、Swingはプラットフォームに依存しない。このようなコンポーネントを軽量コンポーネントと呼ぶ[1]。AWT はオペレーティングシステムのウィンドウシステムに準じたデザインになるのに対し、Swing で作成した GUI は Javaプログラム上で描画されるので、より柔軟な設計が可能となる。
SwingはJavaFXにより置き換えられる方針であるが、当面の将来はSwingもJava SE仕様の一部として残る見込みである[2]。