Java Foundation Classes (JFCs) are reusable software components that can be used to build a graphical user interface in a Java® application. They are an improvement on the toolkit that shipped with early versions of Java®. They are intended to simplify software development, shorten programming time and fulfill the goal of creating applications that look and act the same no matter the type of computer on which they are run.
JFCs are a set of user interface components that expand on the Abstract Window Toolkit (AWT) that was originally provided with the Java® programming language. They are JavaBeans™ components that are part of Java 2® and are designed to be cross-platform and customizable. They are meant to reduce programming time by providing components that can be reused from application to application and from platform to platform. The Java Foundation Classes don't actually replace the Abstract Window Toolkit but are instead a part of it. They do, however, enable the Java® ideal of "write once, run anywhere" more completely than the original AWT.
The AWT enables user interface design, but it does so using the windowing system of the operating system on which it is running. This makes it difficult to create applications that look and behave the same on any platform, because of the inherent differences in features between operating systems. AWT was also very limited in that the set of controls it provided was not broad enough to create complex user interfaces and advanced software applications. The AWT components are what Sun Microsystems calls "heavyweight" because they use the host windowing system.
Recognizing the limitations of AWT, Netscape developers created a set of components called the Internet Foundation Classes. These were a set of "lightweight" components, components written natively in Java®. This extended the functionality of AWT and allowed developers to create user interfaces that kept their appearance when run on different platforms. JavaSoft then began a joint project with Netscape, called the Swing project. This project resulted in a set of user interface controls with a variety comparable to that available from any of the operating system platforms.
Swing is a set of lightweight components that Sun released to the public in combination with several other feature improvements that were intended for the Java Development Kit (JDK) version 1.2. This package of Swing plus other feature improvements was what JavaSoft named the Java Foundation Classes. The Swing user interface controls are the major portion of the Java Foundation Classes, which also include, among other items, printing, clipboard and accessibility functions. The JDK 1.2 includes the full version of JFC, although a limited version was made available that could be used with the then-current JDK 1.1.