<!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 runtime project</font>
        <br><br>
        <font class="indextop style2">New and Noteworthy</font><br>3.1.0 Release</font>
        <br><br><br>
        Return to <a href="downloads.php">ECF download page</a></br>
        <br><br>
        <a href="NewAndNoteworthy_3.0.0.html">New and Noteworthy for 3.0.0</a><br>
        <a href="NewAndNoteworthy_2.0.0.html">New and Noteworthy for 2.0.0</a><br>
        <a href="NewAndNoteworthy_2.1.0.html">New and Noteworthy for 2.1.0</a><br>
        <br><br>
      </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>

<hr>

<table>
  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B><a href="http://wiki.eclipse.org/REST_abstraction_for_ECF">Representational State Transfer (REST) API</a></B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    <p>
    ECF 3.1 has support for creating REST-based remote services.  ECF's existing <a href="http://wiki.eclipse.org/Getting_Started_with_Using_the_ECF_Remote_Services_API">remote services API</a> has been extended to specifically
    support the access of REST-based services (such as the Twitter API).  See <a href="http://wiki.eclipse.org/REST_abstraction_for_ECF">ECF REST API wiki page</a> for more details and examples.</p>
    <p>
       <br><br>
    </td>
  </TR>
  
  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B><a href="http://wiki.eclipse.org/Distributed_EventAdmin_Service">Distributed EventAdmin</a></B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    <p>OSGi 4.1 defines an EventAdmin service for delivering events asynchronously or synchronously to an arbitrary set of listeners.  ECF
    has created a distributed version of the EventAdmin service, which uses publish and subscribe to deliver Events to remote listeners.  The 
    This implementation uses the abstract <a href="http://wiki.eclipse.org/ECF_API_Docs#Shared_Object_API">ECF shared object API</a>, which abstracts publish/subscribe 
    communication above the transport, so that that the use the Distributed EventAdmin service may be bound at runtime to a selected message bus.  For example, ActiveMQ/JMS may
    be used as the message bus, or ECF generic groups, or JavaGroups/reliable multicast, or other transports.  See the <a href="http://wiki.eclipse.org/Distributed_EventAdmin_Service">Distributed EventAdmin wiki page</a>
    for documentation and examples.
    </p>
    <p>
    <img src="http://wiki.eclipse.org/images/a/a9/Distributedeventadmin.png">
    </p>
       <br><br>
    </td>
  </TR>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B><a href="http://wiki.eclipse.org/TweetHub">TweetHub</a></B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    <p>
    Community-initiated work is underway on a Twitter client (called TweetHub) that uses ECF APIs, 
    as well as Eclipse RCP user interface technologies.  For details of this work, and to participate, see <a href="http://wiki.eclipse.org/TweetHub">here</a>.
    </p>
    <p>
    Here is a screen shot from a recent version of the TweetHub work
    </p>
    <p>
    <img src="images/TweetHub1.png">
    </p>
       <br><br>
    </td>
  </TR>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B><a href="http://wiki.eclipse.org/File-based_Discovery">File-based Discovery</a></B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    <p>
    As part of the ECF RFC119/Distributed OSGi implementation in ECF 3.0/Galileo, two discovery providers were previously released:  one based upon
    jSLP (Service Location Protocol aka RFC 2608) and the other based upon Apple's Bonjour/zeroconf protocol.  File-based discovery
    provides a way to publish and discover remote service endpoints without using a network protocol at all (or in addition to a network protocol), but
    rather using an XML file that describes the endpoints of the remote services available.  See the <a href="http://wiki.eclipse.org/File-based_Discovery">File-based Discovery</a>
    wiki page for documentation and examples.
    </p>
       <br><br>
    </td>
  </TR>

</table>

</body>
</html>
