Java Foundation Classes (JFC) ovat uudelleenkäytettäviä ohjelmistokomponentteja, joita voidaan käyttää graafisen käyttöliittymän rakentamiseen Java® -sovellukseen. Ne ovat parannus työkalupakkiin, joka toimitettiin Java®: n varhaisten versioiden mukana. Niiden tarkoituksena on yksinkertaistaa ohjelmistokehitystä, lyhentää ohjelmointiaikaa ja saavuttaa tavoite luoda sovelluksia, jotka näyttävät ja toimivat samalla tavalla riippumatta siitä, millaisella tietokoneella niitä käytetään.
JFC: t ovat joukko käyttöliittymäkomponentteja, jotka laajenevat Abstract Window Toolkit (AWT) -ohjelmaan, joka alun perin toimitettiin Java® -ohjelmointikielen kanssa. Ne ovat JavaBeans ™ -komponentteja, jotka ovat osa Java 2® -laitetta ja jotka on suunniteltu eri alustoille ja muokattavissa. Niiden tarkoituksena on lyhentää ohjelmointiaikaa tarjoamalla komponentteja, joita voidaan käyttää uudelleen sovelluksesta sovellukseen ja alustasta toiseen. Java Foundation -luokat eivät itse asiassa korvaa Abstract Window Toolkit -ohjelmaa, vaan ovat osa sitä. Ne mahdollistavat kuitenkin Java® -ideaalin “kirjoittaa kerran, suorittaa missä tahansa” täydellisemmin kuin alkuperäinen AWT.
AWT mahdollistaa käyttöliittymän suunnittelun, mutta se tekee sen käyttämällä sen käyttöjärjestelmän ikkunajärjestelmää, jossa se on käynnissä. Tämä vaikeuttaa sellaisten sovellusten luomista, jotka näyttävät ja käyttäytyvät samalla tavalla millä tahansa alustalla käyttöjärjestelmien ominaisuuksien luontaisten erojen vuoksi. AWT oli myös hyvin rajallinen, koska sen tarjoamat säätimet eivät olleet riittävän laajoja monimutkaisten käyttöliittymien ja kehittyneiden ohjelmistosovellusten luomiseksi. Sun Microsystems kutsuu AWT -komponentteja “raskaiksi”, koska ne käyttävät isäntäikkunajärjestelmää.
Ymmärtäessään AWT: n rajoitukset Netscape -kehittäjät loivat komponenttijoukon nimeltä Internet Foundation Classes. Nämä olivat joukko “kevyitä” komponentteja, komponentteja, jotka on kirjoitettu alun perin Java®: lla. Tämä laajensi AWT: n toimintoja ja antoi kehittäjille mahdollisuuden luoda käyttöliittymiä, jotka säilyttävät ulkonäkönsä, kun niitä käytetään eri alustoilla. JavaSoft aloitti sitten yhteisprojektin Netscapen kanssa, nimeltään Swing -projekti. Tämä projekti johti joukkoon käyttöliittymäohjaimia, joiden valikoima on verrattavissa mihin tahansa käyttöjärjestelmäympäristöön.
Swing on joukko kevyitä komponentteja, jotka Sun julkaisi yleisölle yhdessä useiden muiden Java Development Kit (JDK) -versiota 1.2 varten tarkoitettujen parannusten kanssa. Tämä Swing -paketti ja muut ominaisuuksien parannukset olivat JavaSoftin nimeämiä Java Foundation -luokkia. Swing -käyttöliittymän ohjaimet ovat suurin osa Java Foundation -luokista, joihin kuuluvat muun muassa tulostus, leikepöytä ja helppokäyttötoiminnot. JDK 1.2 sisältää JFC: n täyden version, vaikka saatavilla oli rajoitettu versio, jota voitaisiin käyttää nykyisen JDK 1.1: n kanssa.