* AWT use native heavyweight OS peer components. Swing draws all its own lightweight components at the bit level, and analyses all its own mouse events to figure out which component they belong to. This means AWT is usually slightly faster, though with modern hardware, you probably won?t notice the difference. AWT applications will look like native apps. AWT applications will look different on different platforms. In contrast, Swing apps will look the same on all platforms. * The main advantage of Swing is it gives you finer control over the look and feel of your components. You can configure L&Fs (look & feels) or compose your own custom one. You can create a prettier app. They look the same on all platforms. AWT apps tend to look amateurish and Spartan. * AWT supports Ctrl-C Ctrl-V copy/paste without any coding. In Swing, it requires page and pages of bubblegum. Further you can?t do it at all in unsigned Swing JApplets. In the more recent versions, this is improved. * Swing is bigger and more complicated, and is not supported by earlier JVMs. * With Swing you must deal with the infuriatingly pointless complexity of ContentPanes. Though JDK 1.6 is more forgiving, your apps will fail on older JDKs. * Swing has JSpinner, JSlider and JColorChooser. There are no equivalents in AWT.