<!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.2.0 Release</font> 
        <br>
        <br><br> 
        Return to <a href="downloads.php">ECF download page</a></br> 
        <br><br> 
        <a href="NewAndNoteworthy_3.1.0.html">New and Noteworthy for 3.1.0</a><br>         
        <a href="NewAndNoteworthy_3.0.0.html">New and Noteworthy for 3.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="15%"> 
        <P align=left> 
	<B><a href="http://eclipseecf.blogspot.com/2010/01/osgi-remote-services-from-ecf.html">OSGi 4.2 remote <br>services standard </a></B> 
        </P> 
    </TD> 
    <TD vAlign=top width="85%"> 
    
    <p> 
     ECF 3.2 has support for the <a href="http://www.osgi.org/Specifications/HomePage">OSGi 4.2 remote services specification</a> which is specified in  chapter 13 in compendium section. This is the initial mplementation of this specification. The notable features of this ECF's implementation are 
	 Transport Independence, Lightweight, Standard Open Source Open Team Open Process, Extensibility and etc. See <a href="http://eclipseecf.blogspot.com/2010/01/osgi-remote-services-from-ecf.html">ECF Blog</a>, <a href="http://wiki.eclipse.org/OSGi_4.2_Remote_Services_and_ECF">ECF Wiki on OSGi 4.2 and ECF</a> and <a href="http://wiki.eclipse.org/Getting_Started_with_ECF's_OSGi_Remote_Services_Implementation">ECF Wiki on Getting started with OSGi Remote Services</a> for more details about this. 
	</p>
	<p><img src="images/Distributedosgi1.png"></p>
	<br>
	<br>
    </td> 
  </TR> 
  
  <TR> 
    <TD vAlign=top align=left width="15%"> 
        <P align=left> 
	<B><a href="http://eclipseecf.blogspot.com/2010/01/soap-rest-and-ecf-remote-services.html">SOAP and REST APIs for Remote services</a></B> 
        </P> 
    </TD> 
    <TD vAlign=top width="85%"> 
    <p>ECF 3.2 is consists of SOAP based provider support for remote services. REST based remote service support was added to the ECF 3.1 release and ECF 3.2 now have OSGi 4.2 remote services implementation along with SOAP based remote services support.
	SOAP is not a protocol but it is a rpc style and it works as a serialization format as well. Hence ECF's does not have a single SOAP provider. Instead of a single implementation of a SOAP provider ECF 3.2 has included some utility and implementation
	classes for creating SOAP based providers. See <a href="http://wiki.eclipse.org/SOAP-based_Providers">ECF Wiki</a> and <a href="http://eclipseecf.blogspot.com/2010/01/soap-rest-and-ecf-remote-services.html">ECF blog</a> for more details.</p> 
	<p>REST API support for Remote Services was initially added to the ECF 3.1 release and See <a href="http://wiki.eclipse.org/REST_abstraction_for_ECF">ECF Wiki</a> and <a href="http://eclipseecf.blogspot.com/2009/11/ecf-provides-some-additional-rest.html">ECF Blog</a>
	for more details about the ECF REST support for Remote services.
	</p>
    <br><br> 
    </td> 
  </TR> 
 
  <TR> 
    <TD vAlign=top align=left width="15%"> 
        <P align=left> 
	<B><a href="http://wiki.eclipse.org/Load_Balancing_Remote_Services">Load Balancing for Remote Services</a></B> 
        </P> 
    </TD> 
    <TD vAlign=top width="85%"> 
    <p>ECF remote services API allows arbitrary services to be exposed for remote access and invocation. Some of these services are long running and/or computationally intensive. So it is a good practice to use multiple servers to execute these services. Dynamic load balanacing among these servers helps to prevent servers being overloaded. ECF now has dynamic load balancing 
	example  that uses a JMS Queue via <a href="http://ecf1.osuosl.org/">ECF ActiveMQ provider</a> implementation of JMS to do dynamic load balancing for ECF remote service  method/request invocations.
	See <a href="http://wiki.eclipse.org/Load_Balancing_Remote_Services">ECF Wiki</a> for more details.
    </p> 
    
   
       <br><br> 
    </td> 
  </TR> 
 

  <TR> 
    <TD vAlign=top align=left width="15%"> 
        <P align=left> 
	<B><a href="http://wiki.eclipse.org/ECF">Remote Services Examples</a></B> 
        </P> 
    </TD> 
    <TD vAlign=top width="85%"> 
    <p>Remote services API is an major API in the ECF and it has been there for a quite long time. Though the API was there, number of exmaples existed in the ECF was very few. So in this ECF 3.2 release a set of examples for ECF remote services being included. These examples 
	give a thorough knowledge on using ECF Remote Rervices API. See <a href="http://wiki.eclipse.org/Getting_Started_with_Using_the_ECF_Remote_Services_API">ECF Wiki</a> for more.
    </p> 
       <br><br> 
    </td> 
  </TR> 
  
  <TR> 
    <TD vAlign=top align=left width="15%"> 
        <P align=left> 
	<B><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=280347">Google Wave Provider</a></B> 
        </P> 
    </TD> 
    <TD vAlign=top width="85%"> 
    <p>Google's wave protocol is an emerging server-to-server protocol for real-time updates and replicated state synchronization.  The protocol is being specified and developed in the open at www.waveprotocol.org.
    Using the following 3 ECF characteristics <br><br> 1) ECF's provider architecture <br>2) the ECF sync API for implementing operational transformation and<br>3) Our existing XMPP provider <br><br>
    it is straightforward to implement a Wave provider in ECF, allowing
	Equinox-based runtimes to both host Waves/wavelets, and participate in waves/wavelets hosted by google and by other implementers.
</p>
    <p>Currently the implementation is not completed  and it is under construction. See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=280347">ECF Bug request</a> for more details.</p>
    </td> 
  </TR> 
 
</table> 
 
</body> 
</html> 