<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<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"> 
      <img src="https://wiki.eclipse.org/images/b/b8/Logo128x37.png" alt="ECF Logo"/>
        <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.5.0 Release 
        <br>
        <br><br> 
        Return to <a href="downloads.php">ECF download page</a><br> 
        <br><br> 
        <a href="NewAndNoteworthy_3.4.0.html">New and Noteworthy for 3.3.0</a><br>     
        <a href="NewAndNoteworthy_3.3.0.html">New and Noteworthy for 3.3.0</a><br>         
        <a href="NewAndNoteworthy_3.2.0.html">New and Noteworthy for 3.2.0</a><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> 
        <br><br> 
      </td> 
      <td width="31%"> 
        <div align="center"> 
          <img src="images/Idea.jpg" width="120" height="86" hspace="50" align="middle" alt="Idea Icon"> 
        </div> 
      </td> 
    </tr> 
  </tbody> 
</table> 
 
<hr> 
 
<table> 
 <tr> 
    <td valign="top" align="left" width="15%"> 
        <p align="left"> 
	<b><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324215">Remote Service Admin (RSA)</a></b> 
        </p> 
    </td> 
    <td valign="top" width="85%"> 
    
    <p>ECF 3.5 includes an full implementation of <a href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGi 4.2 Remote Service Admin (RSA), chapter 122 in the enterprise specification</a>. The is a full and complete implementation 
    of the enterprise specification chapter 122, which defines a management agent service for remote service administration.  ECF's provider architecture allows
    the flexible, dynamic replacement of discovery and distribution modules while assuring full compliance with the OSGi specification.  More on the Remote Service Admin
    agent and the unique features of the ECF RSA implementation is available <a href="http://wiki.eclipse.org/Remote_Services_Admin">here</a>.  See also <a href="http://wiki.eclipse.org/ECF#OSGi_Remote_Services">here</a>
     for more information about ECF's implementation of OSGi remote services.  
     <p>ECF will soon be running it's implementation through the OSGi Test Compatibility Kit (TCK) to assure compliance with the specification.  The TCK was
     not available to us in time for ECF 3.5, but it is available to us now, and this will allow us to assure consumers of full
     compliance with the specification.
     
     <p>Additionally, through the 
    support of the RSA-specified endpoint description extender format (EDEF...described in section 122.8 of the <a href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">enterprise specification</a>), the new implementation obsoletes the old / RFC 119-based file-based discovery.
      See <a href="http://wiki.eclipse.org/File-based_Discovery_with_the_Endpoint_Description_Extender_Format">here for more information</a> about this aspect of the RSA specification support.</p>
	<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=325813">XML-RPC Provider</a></b> 
        </p> 
    </td> 
    <td valign="top" width="85%"> 
    
    <p>
    ECF 3.5 includes a XML-RPC Provider. It implements the ECF Remote Services API (org.eclipse.ecf.remoteservice). The provider therefore adds the possibility to use a XML-RPC based infrastructure for the registration, distribution and use of remote services. Remote Service invocation through a proxy and/or async proxy is supported, too.     
	</p>
	<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=310114">ECF4Felix</a></b> 
        </p> 
    </td> 
    <td valign="top" width="85%"> 
    <p>ECF4Felix allows ECF to run on the <a href="http://felix.apache.org/site/index.html">Felix framework</a>. Until the release of ECF 3.4 ECF ran on the Equinox framework only because of unnecessary dependencies.  ECF can now run on other
    frameworks.  So far, we've tested on <a href="http://felix.apache.org/site/index.html">Felix</a> only, but we are interested in testing on other frameworks also.  If you are willing to help with testing ECF Remote Services/RSA on
    another framework, please send an email to the <a href="https://dev.eclipse.org/mailman/listinfo/ecf-dev">ecf-dev mailing list</a>).  
    </p>
    <br>
    </td> 
  </tr> 
    <tr> 
    <td valign="top" align="left" width="15%"> 
        <p align="left"> 
	<b><a href="http://wiki.eclipse.org/ECF#ECF_Documentation_Project">ECF Documentation Project</a></b> 
        </p> 
    </td> 
    <td valign="top" width="85%"> 
    
    <p>ECF recently started the ECF Documentation Project. This project is an approach to improve the amount and quality of the ECF documentation with the help of the committer, contributor, and consumer communities. It also aims to use of ECF for new and existing consumers.</p>
	<br>
    </td> 
  </tr> 
    <tr> 
    <td valign="top" align="left" width="15%"> 
        <p align="left"> 
	<b>Maven Support and other Build Infrastructure Improvements</b> 
        </p> 
    </td> 
    <td valign="top" width="85%"> 
    
    <p>ECF received a donation from Remain Software to buy new build hardware (many thanks to Remain Software!).  This new build server is hosted by OSU labs, and is available <a href="https://build.ecf-project.org/jenkins/">here</a>. ECF was able to introduce Maven releases and nightly repositories, and these are avalable <a href="http://download.ecf-project.org/">here</a>.   
	</p>
	<br>
	<br>
    </td> 
  </tr> 

</table> 
 
</body> 
</html> 
