Swing is a Java library that provides graphical user interface (GUI) components. It extends and improves upon the Abstract Window Toolkit (AWT) by providing new, enhanced components with better functionality like drag and drop support. Swing components are lightweight and platform independent, use the model-view-controller architecture, and support pluggable look and feel.