Internet Foundation Classes
The Internet Foundation Classes (IFC) were a graphics library for Java originally developed by Netscape Communications Corporation and first released on December 16 1996.
History
On April 2 1997, Sun Microsystems and Netscape announced their intention to combine IFC with other technologies to form the Java Foundation Classes[1].
Ultimately, Sun merged the IFC with other technologies under the name "Swing", adding the capability for a pluggable look and feel of the widgets.
Because its technology has been merged to constitute Swing and Java 2D, IFC is now no longer maintained.
Differences with Swing
Swing draw a lot of features from IFC:
- contrary to AWT, IFC were written in pure Java, thus being (at the time) browser-independent.
- IFC already provided two Layout managers, that would be later included in the standard JDK
- some IFC components were able to read HTML content from URLs, but the implementation was still far from reliable.
However, Swing also improved in a lot of ways:
- IFC did not have a Model-View architecture
- contrary to Swing, the Look and feel of IFC components was written in the components themselves, making it impossible to change it easily.
- IFC components were not JavaBeans. IFC had a specific persistence mechanism, but it was a bit complex, and not compatible with the Java Serialization API.
- event mechanism was still raw, and the Event loop sometimes needed to be accessed directly.
Examples
Hello World
This is the classic Hello world program in IFC:
import netscape.application.*;
import netscape.util.*;
public class HelloWorld extends Application {
public void init() {
super.init();
// Create a text field
TextField textField = new TextField(100, 24, 128, 24);
// Set the string to be displayed in the text field.
textField.setStringValue("Hello World");
// Add the text field to the view hierarchy.
mainRootView().addSubview(textField);
}
// This method allows HelloWorld to run as a stand alone application.
public static void main(String args[]) {
HelloWorld = new HelloWorld ();
ExternalWindow mainWindow = new ExternalWindow();
Size size;
app.setMainRootView(mainWindow.rootView());
size = mainWindow.windowSizeForContentSize(320, 200);
mainWindow.sizeTo(size.width, size.height);
mainWindow.show();
app.run();
}
}
To be compared with the equivalent [[Swing (Java]|Java Swing]] code:
import javax.swing.*;
public class HelloWorld extends JFrame {
public HelloWorld() {
super();
this.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);
Container pane = this.getContentPane();
pane.add(new JLabel("Hello, World!"));
}
public static void main(String[] args) {
HelloWorld app = new HelloWorld();
app.pack();
app.setVisible(true);
}
}
References
- ^ "Sun and Netscape to jointly develop Java Foundation Classes". Netscape Communications Corporation. 1997-04-02. Retrieved 2007-07-14.
{{cite web}}
: Check date values in:|date=
(help)
External links