Swing was introduced in 1997 as part of Java Foundation Classes to address deficiencies in Java's original Abstract Window Toolkit (AWT) GUI subsystem. Swing provides more powerful and flexible GUI components than AWT. Swing components are lightweight, meaning they are written entirely in Java rather than relying on platform-specific peers. This allows Swing to provide a consistent look and feel across platforms and makes the GUI more efficient and flexible. Swing also supports pluggable look and feels, allowing different visual styles to be used.