Java Foundation Classes (JFC) yra daugkartinio naudojimo programinės įrangos komponentai, kuriuos galima naudoti kuriant grafinę vartotojo sąsają Java® programoje. Jie yra įrankių rinkinio, kuris buvo pristatytas su ankstesnėmis Java® versijomis, patobulinimas. Jie skirti supaprastinti programinės įrangos kūrimą, sutrumpinti programavimo laiką ir pasiekti tikslą sukurti programas, kurios atrodytų ir veiktų vienodai, neatsižvelgiant į kompiuterio, kuriame jos veikia, tipą.
JFC yra vartotojo sąsajos komponentų rinkinys, papildantis Abstract Window Toolkit (AWT), kuris iš pradžių buvo pateiktas su Java® programavimo kalba. Tai yra „JavaBeans™“ komponentai, kurie yra „Java 2®“ dalis ir yra skirti naudoti įvairiose platformose ir pritaikomi. Jie skirti sutrumpinti programavimo laiką, nes pateikia komponentus, kuriuos galima pakartotinai naudoti iš vienos programos į kitą ir iš platformos į platformą. „Java Foundation Classes“ iš tikrųjų nepakeičia „Abstract Window Toolkit“, o yra jo dalis. Tačiau jie įgalina „Java®“ idealą „įrašyti vieną kartą, paleisti bet kur“ geriau nei originalus AWT.
AWT leidžia kurti vartotojo sąsają, tačiau tai daroma naudojant operacinės sistemos, kurioje jis veikia, langų sistemą. Dėl to sunku kurti programas, kurios bet kurioje platformoje atrodytų ir veiktų vienodai, nes operacinių sistemų funkcijos skiriasi. AWT taip pat buvo labai ribotas, nes jo teikiamų valdiklių rinkinys nebuvo pakankamai platus, kad būtų galima sukurti sudėtingas vartotojo sąsajas ir pažangias programinės įrangos programas. AWT komponentus „Sun Microsystems“ vadina „sunkiaisiais“, nes jie naudoja pagrindinio kompiuterio langų sistemą.
Pripažindami AWT apribojimus, „Netscape“ kūrėjai sukūrė komponentų rinkinį, vadinamą „Internet Foundation Classes“. Tai buvo „lengvų“ komponentų rinkinys, komponentai, parašyti savaime Java®. Tai išplėtė AWT funkcionalumą ir leido kūrėjams sukurti vartotojo sąsajas, kurios išlaikė savo išvaizdą veikiant skirtingose platformose. Tada JavaSoft pradėjo bendrą projektą su Netscape, pavadintą Swing projektu. Šio projekto rezultatas – vartotojo sąsajos valdiklių rinkinys, kurio įvairovę galima palyginti su turimomis bet kurioje operacinės sistemos platformoje.
„Swing“ yra lengvų komponentų rinkinys, kurį „Sun“ išleido visuomenei kartu su keletu kitų funkcijų patobulinimų, skirtų „Java Development Kit“ (JDK) 1.2 versijai. Šį „Swing“ ir kitų funkcijų patobulinimų paketą „JavaSoft“ pavadino „Java Foundation Classes“. „Swing“ vartotojo sąsajos valdikliai yra pagrindinė „Java Foundation“ klasių dalis, kuri, be kitų elementų, taip pat apima spausdinimą, iškarpinę ir pritaikymo neįgaliesiems funkcijas. JDK 1.2 apima visą JFC versiją, nors buvo prieinama ribota versija, kurią būtų galima naudoti su tuometine JDK 1.1.