Jump to content

Internet Foundation Classes

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by DeXXus (talk | contribs) at 21:52, 9 July 2009 (External links). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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.

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 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.

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 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

  1. ^ "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)
  2. ^ "IFC 1.1 guide - Persistence". 2000-06-15. Retrieved 2007-07-15. {{cite web}}: Check date values in: |date= (help)
  3. ^ "IFC 1.1 guide - Targets and commands". 2000-06-15. Retrieved 2007-07-15. {{cite web}}: Check date values in: |date= (help)

The last places, where to download the IFC:

All find from