Las clases fundamentales de Java (JFC) son componentes de software reutilizables que se pueden utilizar para crear una interfaz gráfica de usuario en una aplicación Java®. Son una mejora del kit de herramientas que se envió con las primeras versiones de Java®. Están destinados a simplificar el desarrollo de software, acortar el tiempo de programación y cumplir con el objetivo de crear aplicaciones que se vean y actúen de la misma manera sin importar el tipo de computadora en la que se ejecuten.
Los JFC son un conjunto de componentes de la interfaz de usuario que se expanden en Abstract Window Toolkit (AWT) que se proporcionó originalmente con el lenguaje de programación Java®. Son componentes JavaBeans ™ que forman parte de Java 2® y están diseñados para ser multiplataforma y personalizables. Están destinados a reducir el tiempo de programación al proporcionar componentes que se pueden reutilizar de una aplicación a otra y de una plataforma a otra. Las clases básicas de Java en realidad no reemplazan al kit de herramientas de la ventana abstracta, sino que son parte de él. Sin embargo, permiten el ideal de Java® de «escribir una vez, ejecutar en cualquier lugar» de forma más completa que el AWT original.
El AWT permite el diseño de la interfaz de usuario, pero lo hace utilizando el sistema de ventanas del sistema operativo en el que se está ejecutando. Esto dificulta la creación de aplicaciones que se vean y se comporten igual en cualquier plataforma, debido a las diferencias inherentes en las características entre los sistemas operativos. AWT también era muy limitado porque el conjunto de controles que proporcionaba no era lo suficientemente amplio como para crear interfaces de usuario complejas y aplicaciones de software avanzadas. Los componentes de AWT son lo que Sun Microsystems llama «peso pesado» porque utilizan el sistema de ventanas del host.
Reconociendo las limitaciones de AWT, los desarrolladores de Netscape crearon un conjunto de componentes llamados Internet Foundation Classes. Se trataba de un conjunto de componentes «ligeros», componentes escritos de forma nativa en Java®. Esto amplió la funcionalidad de AWT y permitió a los desarrolladores crear interfaces de usuario que mantenían su apariencia cuando se ejecutaban en diferentes plataformas. Luego, JavaSoft comenzó un proyecto conjunto con Netscape, llamado proyecto Swing. Este proyecto dio como resultado un conjunto de controles de interfaz de usuario con una variedad comparable a la disponible en cualquiera de las plataformas del sistema operativo.
Swing es un conjunto de componentes ligeros que Sun lanzó al público en combinación con varias otras mejoras de funciones que estaban destinadas a la versión 1.2 del Java Development Kit (JDK). Este paquete de Swing más otras mejoras de funciones fue lo que JavaSoft denominó Java Foundation Classes. Los controles de la interfaz de usuario de Swing son la parte principal de las clases básicas de Java, que también incluyen, entre otros elementos, funciones de impresión, portapapeles y accesibilidad. El JDK 1.2 incluye la versión completa de JFC, aunque se puso a disposición una versión limitada que podría usarse con el JDK 1.1 actual.