Jump to content

Internet Foundation Classes: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
Differences with Swing: rm a large part that could be considered as vandalism
Line 26: Line 26:
| date=[[2000-06-15]]
| date=[[2000-06-15]]
| accessdate=2007-07-15}}</ref>, but it was not compatible with the Java [[Serialization]] API.
| accessdate=2007-07-15}}</ref>, but it was not compatible with the Java [[Serialization]] API.

However the result was a large mess:
* Swing UI objects masquerading as native UI objects could never resemble or behave like their platform counterparts
* In Swing, something as simple as a button, for example, was made up of 10 different objects

Swing was also known as JFC - Java Foundation Classes. But for those who know the joke about a camel being a horse designed by committee, JFC is more appropriately, "Just a F****** Camel".


==Examples==
==Examples==

Revision as of 20:59, 20 September 2007

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.

Swing attempted at add to what was already a great kit:

  • 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 not compatible with the Java Serialization API.

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)