Java Foundation Classes (JFC'ler), bir Java® uygulamasında grafiksel bir kullanıcı arayüzü oluşturmak için kullanılabilecek yeniden kullanılabilir yazılım bileşenleridir. Java®'nın ilk sürümleriyle gelen araç setinde bir gelişmedirler. Yazılım geliştirmeyi basitleştirmek, programlama süresini kısaltmak ve üzerinde çalıştıkları bilgisayar türü ne olursa olsun aynı görünen ve aynı şekilde çalışan uygulamalar yaratma hedefini gerçekleştirme amaçlıdırlar.
JFC'ler, orijinal olarak Java® programlama diliyle birlikte verilen Özet Pencere Araç Seti'nde (AWT) genişleyen bir dizi kullanıcı arayüzü bileşenidir. Java 2®'nin bir parçası olan ve platformlar arası ve özelleştirilebilir olacak şekilde tasarlanmış JavaBeans ™ bileşenleridir. Uygulamadan uygulamaya ve platformdan platforma yeniden kullanılabilen bileşenler sağlayarak programlama süresini kısaltmaları amaçlanmıştır. Java Temel Sınıfları, Özet Pencere Araç Takımı'nın yerine geçmez, bunun yerine bunun bir parçasıdır. Bununla birlikte, Java® idealini, orijinal AWT'den tamamen "bir kez yaz, her yerde çalıştır" idealini etkinleştirir.
AWT kullanıcı arayüzü tasarımını mümkün kılar, ancak üzerinde çalıştığı işletim sisteminin pencereleme sistemini kullanır. Bu, işletim sistemleri arasındaki özelliklerin doğal farklılıklarından dolayı, herhangi bir platformda aynı görünen ve aynı şekilde çalışan uygulamalar oluşturmayı zorlaştırır. AWT, sağladığı kontrollerin karmaşık kullanıcı arayüzleri ve gelişmiş yazılım uygulamaları yaratacak kadar geniş olmaması nedeniyle de çok sınırlıydı. AWT bileşenleri, Sun Microsystems'in "ağır" dediği şeydir, çünkü onlar ana pencere sistemini kullanırlar.
AWT'nin sınırlarını tanıyan Netscape geliştiricileri, İnternet Hazırlık Sınıfları adı verilen bir dizi bileşen oluşturdu. Bunlar, Java®'da yerel olarak yazılmış, bir dizi "hafif" bileşendi. Bu, AWT'nin işlevselliğini genişletti ve geliştiricilerin farklı platformlarda çalıştıklarında görünümlerini koruyan kullanıcı arayüzleri oluşturmasına izin verdi. JavaSoft daha sonra Swing projesi adı verilen Netscape ile ortak bir projeye başladı. Bu proje, herhangi bir işletim sistemi platformunda mevcut olan ile karşılaştırılabilir çeşitlilikte bir dizi kullanıcı arayüzü kontrolü ile sonuçlanmıştır.
Swing, Sun’ın Java Development Kit (JDK) sürüm 1.2 için tasarlanan diğer birçok özellik ile birlikte halka açıkladığı bir dizi hafif bileşendir. Bu Swing paketi ve diğer özellik iyileştirmeleri, JavaSoft'un Java Foundation Classes adını verdiği şeydi. Swing kullanıcı arayüzü kontrolleri, diğer öğelerin yanı sıra, yazdırma, pano ve erişilebilirlik işlevlerini de içeren Java Temel Sınıflarının en büyük kısmıdır. JDK 1.2, JFC'nin tam sürümünü içerir, ancak o zamanki JDK 1.1 ile kullanılabilen sınırlı bir sürüm kullanıma sunuldu.


