blob: 2b79caad22cd33f1d79dcfd9c965880e6cfacb06 [file] [log] [blame]
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>ECF New and Noteworthy</title>
<link rel="stylesheet" href="http://www.eclipse.org/default_style.css" type="text/css">
</head>
<body bgcolor="#FFFFFF">
<table border=0 cellspacing=5 cellpadding=2 width="100%">
<tbody>
<tr>
<td width="69%" class="bannertext">
<font class="indextop style">eclipse communication framework</font>
<br><br>
<font class="indexsub">an eclipse technology subproject</font>
<br><br>
<font class="indextop style2">New and Noteworthy</font><br>0.8.4 Stable Release</font>
<br><br><br>
Return to <a href="downloads.php">ECF download page</a></br>
Return to <a href="comm_resources.php">ECF communication resources page</a>
<br><br>
<a href="NewAndNoteworthy_0.4.0.html">New and Noteworthy for 0.4.0</a><br>
<a href="NewAndNoteworthy_0.5.2.html">New and Noteworthy for 0.5.2</a><br>
<a href="NewAndNoteworthy_0.5.4.html">New and Noteworthy for 0.5.4</a><br>
<a href="NewAndNoteworthy_0.6.0.html">New and Noteworthy for 0.6.0</a><br>
<a href="NewAndNoteworthy_0.6.2.html">New and Noteworthy for 0.6.2</a><br>
<a href="NewAndNoteworthy_0.7.0.html">New and Noteworthy for 0.7.0</a><br>
<a href="NewAndNoteworthy_0.7.5.html">New and Noteworthy for 0.7.5</a><br>
<a href="NewAndNoteworthy_0.7.6.html">New and Noteworthy for 0.7.6</a><br>
<a href="NewAndNoteworthy_0.8.0.html">New and Noteworthy for 0.8.0</a><br>
<a href="NewAndNoteworthy_0.8.1.html">New and Noteworthy for 0.8.1</a><br>
<a href="NewAndNoteworthy_0.8.2.html">New and Noteworthy for 0.8.2</a>
</td>
<td width="31%">
<div align="center">
<img src="../images/Idea.jpg" width="120" height="86" hspace="50" align="middle">
</div>
</td>
</tr>
</tbody>
</table>
<table>
<TR> <!----------------------------------------------------->
<TD colSpan=2> <HR> </TD>
</TR>
<TR><TD colSpan=2><H2>Application-Defined Peer-to-Peer Protocols Using XMPP</H2></TD>
<TR>
<TD vAlign=top align=left width="30%">
<P align=left>
<B>New Example Application</B>
</P>
</TD>
<TD vAlign=top width="70%">
<p><br></p>
<P>The <b>org.eclipse.ecf.example.clients</b> plugin has a new example client: <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/example/clients/XMPPSORobotApplication.html">XMPPSORobotApplication</a>.
This application shows the use an XMPP's extension mechanism to implement new protocols that can run directly on XMPP.
<p>
This can be accomplished because the ECF XMPP provider (<b>ecf.xmpp.smack</b>) implements the <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/ISharedObjectContainer.html">ISharedObjectContainer</a> API.
The ISharedObjectContainer API allows applications to design, implement, and use new protocols, by creating components implementing the
<a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/ISharedObject.html">ISharedObject</a> interface. These components
may then be added to an ISharedObjectContainer instance at runtime. So, for example,
consider the following snippet:
<pre>
// Get shared object container from xmpp container instance
ISharedObjectContainer socontainer = (ISharedObjectContainer) xmppcontainer.getAdapter(ISharedObjectContainer.class);
// Create shared object ID...this will be a singleton so the ID can be the class name
ID newID = IDFactory.getDefault().createStringID(TrivialSharedObject.class.getName());
// Create shared object itself
ISharedObject sharedObject = new TrivialSharedObject();
// Add shared object to container
soontainer.getSharedObjectManager().addSharedObject(newID, sharedObject, null);
</pre>
<p>
In the case of this example application, the ISharedObject component is implemented by the <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/example/clients/TrivialSharedObject.html">TrivialSharedObject</a> class.
See the source code for this class to examine the implementation of the custom protocol. The source code for all ECF plugins is available via anonymous CVS access described on
the <a href="http://www.eclipse.org/ecf/resources.html">ECF Dev Resources Page</a>.
</p>
Other ECF clients may define any point-to-point protocol they wish using similar mechanisms (implemented as ISharedObject instances like TrivialSharedObject), and this new protocol will then
run on XMPP without requiring modification to existing XMPP servers. Other XMPP clients (e.g. GAIM, Google Talk, etc.) that do not know about the new protocol will simply
ignore any messages directed sent to them.</p>
<p></p>
</TD>
</TR>
<TR> <!----------------------------------------------------->
<TD colSpan=2> <HR> </TD>
</TR>
<TR><TD colSpan=2><H2>Call API Additions/Changes</H2></TD>
<TR>
<TD vAlign=top align=left width="30%">
<P align=left>
<B>Enhancements to Support <a href="http://www.jabber.org/jeps/jep-0166.html">Jingle/JEP-166</a></B>
</P>
</TD>
<TD vAlign=top width="70%">
<p><br></p>
<P>The ECF plugin <b>org.eclipse.ecf.call</b> is intended to provide an abstract 'Call' API, to allow clients to do call setup in a protocol independent
manner. The API is not finished yet (still experimental), but the ECF team is working on an implementation based upon <a href="http://talk.google.com">Google Talk's</a>
<a href="http://www.jabber.org/jeps/jep-0166.html">Jingle protocol</a>.
The new/enhanced API javadocs are <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/call/package-frame.html">here</a><p>
</TD>
</TR>
</table>
</body>
</html>