<!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"> 
      <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<br>
        3.4.0 Release</font> 
        <br>
        <br><br> 
        Return to <a href="downloads.php">ECF download page</a><br> 
        <br><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"> 
        </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=310580">DNS-Service Discovery</a></B> 
        </P> 
    </TD> 
    <TD vAlign=top width="85%"> 
    
    <p>ECF 3.4 includes a remote services <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310580">discovery provider based upon DNS-SD</a>.  DNS-SD is a WAN network service discovery
    protocol based upon standard DNS. This allows <a href="http://wiki.eclipse.org/OSGi_4.2_Remote_Services_and_ECF">OSGi 4.2 standard remote services</a> to be exposed for WAN-based service discovery using DNS. 
    DNS-SD requires configuring an authoritative DNS server in order to work, so to use ECF DNS-SD please see the <a href="https://dev.eclipse.org/mailman/listinfo/ecf-dev">ecf-dev mailing list</a> 
    and <a href="http://wiki.eclipse.org/DNS-SD_based_wide-area_ECF_discovery_provider">this wiki page</a>.
	</p>
	<br>
	<br>
    </td> 
  </TR>
   <TR> 
    <TD vAlign=top align=left width="15%"> 
        <P align=left> 
	<B>Atom/RSS-based REST API Implementation</B> 
        </P> 
    </TD> 
    <TD vAlign=top width="85%"> 
    
    <p><a href="http://wiki.eclipse.org/REST_abstraction_for_ECF">ECF 3.3 has a REST Remote Services API</a>.  This API allows the usage of several serialization
    formats...with JSON and XML supported in ECF 3.3.  Now, support for Atom/RSS-based serialization for REST-based remote services has
    been added.  This makes it easy for clients to use Atom/RSS in their REST clients (that use the ECF's REST API).
	</p>
	<br>
	<br>
    </td> 
  </TR>
  <TR> 
    <TD vAlign=top align=left width="15%"> 
        <P align=left> 
	<B><a href="">Improvements to Distributed EventAdmin</a></B> 
        </P> 
    </TD> 
    <TD vAlign=top width="85%"> 
    
    <p>ECF 3.3 includes an implementation of Distributed EventAdmin as described <a href="http://wiki.eclipse.org/Distributed_EventAdmin_Service">here</a>.  
    This release includes a number of
    enhancements to the DistributedEventAdmin implementation API, to allow for easy customization of Distributed EventAdmin...e.g. to allow for
    custom Event serialization/deserialization of OSGi Event instances, and to easily customize/add Event persistence.  See the javadocs for
    the DistributeEventAdmin class <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/eventadmin/DistributedEventAdmin.html">here</a>.
    </p>
	<br>
    <p>
    <img src="http://wiki.eclipse.org/images/a/a9/Distributedeventadmin.png">
    </p>
	<br>
    </td> 
  </TR> 
    <TR> 
    <TD vAlign=top align=left width="15%"> 
        <P align=left> 
	<B><a href="http://wiki.eclipse.org/ECF#New_Stuff">Remote Services Examples and Documentations</a></B> 
        </P> 
    </TD> 
    <TD vAlign=top width="85%"> 
    
    <p>ECF 3.3 release contains a new set of examples and documentation guides for Remote Services. <a href="http://wiki.eclipse.org/Getting_Started_with_ECF%27s_OSGi_Remote_Services_Implementation" target="_blank">Getting Started with ECF's OSGi Remote Services Implementation</a>,
	<a href="http://wiki.eclipse.org/Asynchronous_Proxies_for_Remote_Services" target="_blank">Asynchronous Proxies for Remote Services</a>,<a href="http://wiki.eclipse.org/Using_Spring_with_ECF_Remote_Services" target="_blank">Using Spring with ECF Remote Services</a>,
	<a href="http://wiki.eclipse.org/Load_Balancing_Remote_Services" target="_blank">Load Balancing Remote Services</a> are some of the new additions to the ECF. Please visit <a href="http://wiki.eclipse.org/ECF" target="_blank">ECF Wiki</a> for moer information.
     </p>
	<br>
	<br>
    </td> 
  </TR> 
    <TR> 
    <TD vAlign=top align=left width="15%"> 
        <P align=left> 
	<B><a href="http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/">Migration to GIT</a></B> 
        </P> 
    </TD> 
    <TD vAlign=top width="85%"> 
    
    <p>ECF is moving to using GIT for source code control.  See <a href="http://dev.eclipse.org/mhonarc/lists/ecf-dev/msg04345.html">this ecf-dev mailing list thread</a> for more information.</p>
	
	</P>
	<br>
	<br>
    </td> 
  </TR> 

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