Java Foundation Classes ( JFC ) は、移植性の高いJavaベースのグラフィカル ユーザー インターフェイス(GUI) を構築するためのグラフィカル フレームワークです。JFC は、Abstract Window Toolkit (AWT)、Swing、およびJava 2Dで構成されています。これらを組み合わせることで、基盤となるユーザー インターフェイス システムがWindows、macOS、Linux のいずれであっても、Java プログラムに対して一貫したユーザー インターフェイスを提供します。
AWTはJFCよりも前に存在していました。AWTは、ホストプラットフォームのネイティブなグラフィック機能をラップしただけのものに過ぎないとして、激しく批判されました。つまり、AWTの標準ウィジェットはネイティブウィジェットの機能に依存しており、開発者はホストプラットフォーム間の違いにも注意を払う必要があったのです。
Netscape社は、よりプラットフォームに依存しないコードで、 Internet Foundation Classesと呼ばれる代替グラフィックライブラリを開発した。
同時に、Microsoftは独自にApplication Foundation Classes(AFC)と呼ばれる別のグラフィックスライブラリを開発しました。これはグラフィックスコンポーネントの拡張を容易にするために作られたものですが、主にMicrosoft Java仮想マシンでの使用を想定していました。
1997年4月2日、サン・マイクロシステムズとネットスケープは、IFCを他の技術と組み合わせ、「Java Foundation Classes」を形成する意向を発表しました。[ 1 ]「Java Foundation Classes」は後に「Swing」と改名され、ウィジェットのプラグイン可能な外観と操作性が追加されました。これにより、Swingプログラムはプラットフォームに依存しないコードベースを維持しながら、ネイティブアプリケーションの外観を模倣することが可能になりました。JFCのリリースによりIFCは時代遅れとなり、マイクロソフトのAFCへの関心も薄れました。
Javaプログラミング言語では、Java Foundation Classes(JFC)は、プログラマーが使用できる包括的なグラフィカルユーザーインターフェイス(GUI)ルーチンセットを提供するクラスライブラリ(コード化されたルーチン)の形式で事前に記述されたコードです。Java Foundation Classesは、Microsoft Foundation Class Library(MFC)に相当します。JFCは、オリジナルのJava Abstract Windowing Toolkit(AWT)の拡張機能です。JFCと、追加のプログラムコンポーネントセットであるSwingを使用することで、プログラマーは特定のオペレーティングシステム内のウィンドウシステムに依存しないプログラムを作成できます。