Jump to content

Internet Foundation Classes: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m Eliminating superfluous comma
GreenC bot (talk | contribs)
Rescued 1 archive link; reformat 1 link. Wayback Medic 2.5
 
(18 intermediate revisions by 15 users not shown)
Line 1: Line 1:
The '''Internet Foundation Classes''' (IFC) is a [[graphics library]] for Java originally developed by [[Netcode Corporation]] and first released by [[Netscape Corporation]] on December 16, 1996.
The '''Internet Foundation Classes''' (IFC) is a [[GUI]] [[widget toolkit]] and [[graphics library]] for Java originally developed by [[Netcode Corporation]] and first released by [[Netscape Corporation]] on December 16, 1996.

The Java IFC was fairly close to the early versions of the [[Objective-C]] [[NeXTStep]] classes for NeXT. A builder tool was also included under the IFC umbrella that was close in spirit (but significantly limited in functionality) to NeXT's [[Interface Builder]]. This ecosystem was attractive to NeXT application developers interested in looking at the Java language.


==History==
==History==
On April 2, 1997, [[Sun Microsystems]] and [[Netscape Communications Corporation|Netscape]] announced their intention to combine IFC with other technologies to form the [[Java Foundation Classes]].<ref>{{cite web
On April 2, 1997, [[Sun Microsystems]] and [[Netscape Communications Corporation|Netscape]] announced their intention to combine IFC with other technologies to form the [[Java Foundation Classes]].<ref>{{cite web
| url=http://www2.prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=/www/story/84048&EDATE=
|url=http://www2.prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=/www/story/84048&EDATE=
| title=Sun and Netscape to jointly develop Java Foundation Classes
|title=Sun and Netscape to jointly develop Java Foundation Classes
| publisher=[[Netscape Communications Corporation]]
|publisher=[[Netscape Communications Corporation]]
| date=1997-04-02
|date=1997-04-02
| accessdate=2007-07-14}}</ref>
|accessdate=2007-07-14
|url-status=dead
|archiveurl=https://web.archive.org/web/20120509230952/http://www2.prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=%2Fwww%2Fstory%2F84048&EDATE=
|archivedate=2012-05-09
}}</ref>


Ultimately, Sun merged the IFC with other technologies under the name "Swing", adding the capability for a pluggable [[look and feel]] of the widgets.
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 (Java)|Swing]] and [[Java 2D]], IFC is now no longer maintained.
Because its technology has been merged to constitute [[Swing (Java)|Swing]] and [[Java 2D]], IFC is now no longer maintained.


==Differences with Swing==
==Differences from Swing==
[[Swing (Java)|Swing]] drew a lot of features from IFC:
[[Swing (Java)|Swing]] drew a lot of features from IFC:
* contrary to [[Abstract Window Toolkit|AWT]], IFC were written in pure [[Java (programming language)|Java]], thus being (at the time) browser-independent.
* contrary to [[Abstract Window Toolkit|AWT]], IFC were written in pure [[Java (programming language)|Java]], thus being (at the time) browser-independent.
Line 26: Line 32:
| title=IFC 1.1 guide - Persistence
| title=IFC 1.1 guide - Persistence
| date=2000-06-15
| date=2000-06-15
| accessdate=2007-07-15}}</ref> but it was a bit complex, and not compatible with the Java [[Serialization]] API.
| accessdate=2007-07-15
| archive-date=2006-11-25
| archive-url=https://web.archive.org/web/20061125135539/http://infodoc.unicaen.fr/docs/Java/guide.IFC1.1/persist.mak.html#1004819
| url-status=dead
}}</ref> but it was a bit complex, and not compatible with the Java [[Serialization]] API.
* event mechanism was still raw,<ref>{{cite web
* event mechanism was still raw,<ref>{{cite web
| url=http://infodoc.unicaen.fr/docs/Java/guide.IFC1.1/targets.mak.html#100582
| url=http://infodoc.unicaen.fr/docs/Java/guide.IFC1.1/targets.mak.html#100582
| title=IFC 1.1 guide - Targets and commands
| title=IFC 1.1 guide - Targets and commands
| date=2000-06-15
| date=2000-06-15
| accessdate=2007-07-15}}</ref> and the [[Event loop]] sometimes needed to be accessed directly.
| accessdate=2007-07-15
| archive-date=2006-11-25
| archive-url=https://web.archive.org/web/20061125140237/http://infodoc.unicaen.fr/docs/Java/guide.IFC1.1/targets.mak.html#100582
| url-status=dead
}}</ref> and the [[Event loop]] sometimes needed to be accessed directly.


==Examples==
==Examples==
Line 37: Line 51:
===Hello World===
===Hello World===
This is the classic ''[[Hello world program]]'' in IFC:
This is the classic ''[[Hello world program]]'' in IFC:
<source lang="java">
<syntaxhighlight lang="java">
import netscape.application.*;
import netscape.application.*;
import netscape.util.*;
import netscape.util.*;
Line 57: Line 71:
HelloWorld app = new HelloWorld ();
HelloWorld app = new HelloWorld ();
ExternalWindow mainWindow = new ExternalWindow();
ExternalWindow mainWindow = new ExternalWindow();
Size size;


app.setMainRootView(mainWindow.rootView());
app.setMainRootView(mainWindow.rootView());
size = mainWindow.windowSizeForContentSize(320, 200);
Size size = mainWindow.windowSizeForContentSize(320, 200);
mainWindow.sizeTo(size.width, size.height);
mainWindow.sizeTo(size.width, size.height);
mainWindow.show();
mainWindow.show();
Line 67: Line 80:
}
}
}
}
</syntaxhighlight>
</source >


To be compared with the equivalent [[Swing (Java)|Java Swing]] code:
To be compared with the equivalent [[Swing (Java)|Java Swing]] code:
<source lang="java">
<syntaxhighlight lang="java">
import javax.swing.*;
import javax.swing.*;


Line 85: Line 98:
}
}
}
}
</syntaxhighlight>
</source>

==See also==
*[[Swing (Java)|Swing]]


==References==
==References==
Line 95: Line 105:
==External links==
==External links==
*[http://www.phdcc.com/javaart2.html IFC presentation]
*[http://www.phdcc.com/javaart2.html IFC presentation]
*[http://wp.netscape.com/eng/ifc/download.html IFC runtime download]
*[http://wp.netscape.com/eng/ifc/download.html IFC runtime download] {{Webarchive|url=https://web.archive.org/web/20060519194800/http://wp.netscape.com/eng/ifc/download.html |date=2006-05-19 }}
*[http://infodoc.unicaen.fr/docs/Java/guide.IFC1.1/ IFC programming guide]
*[http://infodoc.unicaen.fr/docs/Java/guide.IFC1.1/ IFC programming guide] {{Webarchive|url=https://web.archive.org/web/20061125115942/http://infodoc.unicaen.fr/docs/Java/guide.IFC1.1/ |date=2006-11-25 }}
*[http://infodoc.unicaen.fr/docs/Java/Reference.IFC1.1/tree.html IFC class hierarchy]
*[http://infodoc.unicaen.fr/docs/Java/Reference.IFC1.1/tree.html IFC class hierarchy] {{Webarchive|url=https://web.archive.org/web/20061125150802/http://infodoc.unicaen.fr/docs/Java/Reference.IFC1.1/tree.html |date=2006-11-25 }}
*[http://infodoc.unicaen.fr/docs/Java/cookbook/ IFC tutorial]
*[http://infodoc.unicaen.fr/docs/Java/cookbook/ IFC tutorial] {{Webarchive|url=https://web.archive.org/web/20061125134457/http://infodoc.unicaen.fr/docs/Java/cookbook/ |date=2006-11-25 }}


The last places, where to download the IFC:
The last places, where to download the IFC:
*[ftp://ftp.uni-potsdam.de/pub/WWW/Netscape/navigator/plugins/ifc/1.0/ ftp-Server 1 Uni-Potsdam]
*[ftp://ftp.uni-potsdam.de/pub/WWW/Netscape/navigator/plugins/ifc/1.0/ ftp-Server 1 Uni-Potsdam]{{Dead link|date=March 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[ftp://ftp.uni-potsdam.de/pub/WWW/clients/netscape/plugins/ifc/1.0/ ftp-Server 2 Uni-Potsdam]
*[ftp://ftp.uni-potsdam.de/pub/WWW/clients/netscape/plugins/ifc/1.0/ ftp-Server 2 Uni-Potsdam]{{Dead link|date=March 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[ftp://ftp.uni-potsdam.de/pub/WWW/netscape/navigator/plugins/ifc/1.0/ ftp-Server 3 Uni-Potsdam]
*[ftp://ftp.uni-potsdam.de/pub/WWW/netscape/navigator/plugins/ifc/1.0/ ftp-Server 3 Uni-Potsdam]{{Dead link|date=March 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[ftp://ftp.ruhr-uni-bochum.de/.subdisc1/local/jk.collection/ ftp-Server Uni-Bochum]
*[ftp://ftp.ruhr-uni-bochum.de/.subdisc1/local/jk.collection/ ftp-Server Uni-Bochum]{{Dead link|date=February 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[ftp://ftp.anu.edu.au/sunsite/mnt/disk3/WWW/netscape/navigator/plugins/ifc/1.0/ ftp-Server SunSite]
*[ftp://ftp.anu.edu.au/sunsite/mnt/disk3/WWW/netscape/navigator/plugins/ifc/1.0/ ftp-Server SunSite]{{Dead link|date=February 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
All find from
All find from
*[http://www.filesearching.com/cgi-bin/s?q=nsifc10 FileSearching.com]
*[https://archive.today/20121209025852/http://www.filesearching.com/cgi-bin/s?q=nsifc10 FileSearching.com]


The web-archive where is the last place to find really '''all''' files:
The web-archive where is the last place to find really '''all''' files:
*[http://web.archive.org/web/20001021124345/developer.netscape.com/docs/manuals/ifc/downloads/downloads.html WebArchive of the IFC-side]
*[https://web.archive.org/web/20001021124345/http://developer.netscape.com/docs/manuals/ifc/downloads/downloads.html WebArchive of the IFC-side]


Additional you can still find IFC here:
Additional you can still find IFC here:
Line 116: Line 126:
*[http://stuff.mit.edu/afs/sipb/project/java/packages/ifc/ Server of the MIT - stuff side]
*[http://stuff.mit.edu/afs/sipb/project/java/packages/ifc/ Server of the MIT - stuff side]


[[Category:Java platform]]
[[Category:Java (programming language)]]
[[Category:Java programming language]]
[[Category:Java (programming language) libraries]]
[[Category:Java libraries]]
[[Category:Java APIs]]
[[Category:Java APIs]]
[[Category:Widget toolkits]]
[[Category:Widget toolkits]]

[[ca:Internet Foundation Classes]]

Latest revision as of 03:45, 11 May 2023

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

The Java IFC was fairly close to the early versions of the Objective-C NeXTStep classes for NeXT. A builder tool was also included under the IFC umbrella that was close in spirit (but significantly limited in functionality) to NeXT's Interface Builder. This ecosystem was attractive to NeXT application developers interested in looking at the Java language.

History

[edit]

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

[edit]

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

[edit]

Hello World

[edit]

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 app = new HelloWorld ();
        ExternalWindow mainWindow = new ExternalWindow();

        app.setMainRootView(mainWindow.rootView());
        Size 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() {
       setDefaultCloseOperation(DISPOSE_ON_CLOSE);
       add(new JLabel("Hello, World!"));
    }

    public static void main(String[] args) {
        HelloWorld app = new HelloWorld();
        app.pack();
        app.setVisible(true);
    }
}

References

[edit]
  1. ^ "Sun and Netscape to jointly develop Java Foundation Classes". Netscape Communications Corporation. 1997-04-02. Archived from the original on 2012-05-09. Retrieved 2007-07-14.
  2. ^ "IFC 1.1 guide - Persistence". 2000-06-15. Archived from the original on 2006-11-25. Retrieved 2007-07-15.
  3. ^ "IFC 1.1 guide - Targets and commands". 2000-06-15. Archived from the original on 2006-11-25. Retrieved 2007-07-15.
[edit]

The last places, where to download the IFC:

All find from

The web-archive where is the last place to find really all files:

Additional you can still find IFC here: