Internet Foundation Classes

From Wikipedia, the free encyclopedia

The Internet Foundation Classes (IFC) were a graphics library for Java originally developed by Netcode Corporation and first released by Netscape Corporation on December 16, 1996.

Contents

[edit] 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.

[edit] 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 IFC 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[2], but it was a bit complex, and not compatible with the Java Serialization API.
  • event mechanism was still raw[3], and the Event loop sometimes needed to be accessed directly.

[edit] Examples

[edit] 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 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);
    }
}

[edit] References

[edit] External links