A heavyweight component is a component that has a direct tie to a native component of the OS that that the JVM is running on. This is refered to as a "Peer" relationship. So when you have a java.awt.Frame it is dependent upon a native Frame. This allowed for the quick crossplatform development of the eary Java foundation classes.
A lightweight is a newer implementation wherein the component is self-contained within the JVM and does not rely on a peer. Have a look here for a few more details.
http://nauseum.org/docs/lightweight/lightweight-2.html#ss2.1 Sean