Java Foundation Classes (JFC) so programske komponente za večkratno uporabo, ki jih je mogoče uporabiti za izgradnjo grafičnega uporabniškega vmesnika v aplikaciji Java®. So izboljšava zbirke orodij, ki je bila priložena zgodnjim različicam Jave®. Namenjeni so poenostavitvi razvoja programske opreme, skrajšanju časa programiranja in izpolnjevanju cilja ustvarjanja aplikacij, ki izgledajo in delujejo enako, ne glede na vrsto računalnika, na katerem se izvajajo.
JFC-ji so nabor komponent uporabniškega vmesnika, ki se razširijo na Abstract Window Toolkit (AWT), ki je bil prvotno priložen programskemu jeziku Java®. To so komponente JavaBeans™, ki so del Jave 2® in so zasnovane tako, da so medplatformne in prilagodljive. Namenjeni so zmanjšanju časa programiranja z zagotavljanjem komponent, ki jih je mogoče ponovno uporabiti od aplikacije do aplikacije in od platforme do platforme. Razredi Java Foundation pravzaprav ne nadomeščajo zbirke orodij za abstraktno okno, ampak so namesto tega njen del. Vendar pa omogočajo popolneje Java® ideal “napiši enkrat, teči kjer koli” kot izvirni AWT.
AWT omogoča oblikovanje uporabniškega vmesnika, vendar to počne z uporabo okenskega sistema operacijskega sistema, v katerem se izvaja. To otežuje ustvarjanje aplikacij, ki izgledajo in se obnašajo enako na kateri koli platformi, zaradi inherentnih razlik v funkcijah med operacijskimi sistemi. AWT je bil tudi zelo omejen, saj nabor kontrol, ki jih je zagotovil, ni bil dovolj širok za ustvarjanje zapletenih uporabniških vmesnikov in naprednih programskih aplikacij. Komponente AWT so tisto, kar Sun Microsystems imenuje “težka kategorija”, ker uporabljajo gostiteljski okenski sistem.
Ob priznavanju omejitev AWT so razvijalci Netscape ustvarili nabor komponent, imenovanih Internet Foundation Classes. To je bil nabor “lahkih” komponent, komponent, ki so bile izvorno napisane v Javi®. To je razširilo funkcionalnost AWT in razvijalcem omogočilo ustvarjanje uporabniških vmesnikov, ki so ohranili svoj videz, ko se izvajajo na različnih platformah. JavaSoft je nato začel skupni projekt z Netscapeom, imenovan projekt Swing. Rezultat tega projekta je bil niz kontrolnikov uporabniškega vmesnika, ki so primerljivi s tistimi, ki so na voljo na kateri koli platformi operacijskega sistema.
Swing je nabor lahkih komponent, ki jih je Sun objavil javnosti v kombinaciji z več drugimi izboljšavami funkcij, ki so bile namenjene različici Java Development Kit (JDK) različice 1.2. Ta paket Swinga in drugih izboljšav funkcij je JavaSoft poimenoval Java Foundation Classes. Kontrole uporabniškega vmesnika Swing so glavni del razredov Java Foundation, ki med drugim vključujejo tudi funkcije tiskanja, odložišča in dostopnosti. JDK 1.2 vključuje polno različico JFC, čeprav je bila na voljo omejena različica, ki se je lahko uporabljala s takrat aktualno JDK 1.1.