They're both windowing toolkits. AWT is older, and the newer Swing is built on (parts of) the AWT. Basically, the difference is this: when the AWT wants to draw a button, it asks the native windowing system to do it -- i.e., it creates a Windows button control, or a Motif button widget. This AWT applications look like the native platform. There is only a very small choice of components, however. When Swing wants to make a button, it draws it using the methods of the Graphics2D class. Therefore, Swing buttons don't have to look like the native platform's buttons. There are a much wider range of Swing components than AWT components.