<!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.7.6 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>
      </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 vAlign=top align=left width="30%">
    <p><br></p>
        <P align=left>
	<B>IContainer.dispose() Called by Framework</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
      <p><br></p>
      <p>Before ECF 0.7.6 stable it was necessary for clients that created <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/IContainer.html">IContainer</a> instances 
      (via <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/ContainerFactory.html">ContainerFactory</a>), to call
      <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/IContainer.html#dispose()">IContainer.dispose()</a> on their own when finished using
      the IContainer.  Now, however, ECF will call dispose() on all IContainer instances created via the ECF ContainerFactory to reclaim any system resources
      used by the IContainer instance.  Clients do not need to call IContainer.dispose() on any IContainer instances that they create via the ECF ContainerFactory.
      Only if IContainer instances are created via some other means (e.g. directly via constructor), are clients then responsible for calling dispose()</p>
    </TD>
  </TR>

  <TR>
    <TD vAlign=top align=left width="30%">
    <p><br></p>
        <P align=left>
	<B>ECF Core Plugin Dynamic Aware</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
      <p><br></p>
      <p>The ECF core plugin (org.eclipse.ecf) has been made fully dynamic aware.  
      As plugins that extend ECF extension points are installed and uninstalled, the ECF extension 
      caches are automatically updated.  So, for example, for the ECF container factory extension point, as extension plugins are 
      added the ECF ContainerFactory will automatically expose to clients the ability to create new types of IContainer instances.</p>
    </TD>
  </TR>

  <TR>
    <TD vAlign=top align=left width="30%">
    <p><br></p>
        <P align=left>
	<b>New Tutorial Plugin:  <i>org.eclipse.ecf.tutorial</i></B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
      <p><br></p>
      <p>New ECF plugin <b>org.eclipse.ecf.tutorial</b>.  This plugin provides example clients created for 
      the <a href="http://www.eclipsecon.org/2006/Sub.do?id=46">ECF EclipseCon 2006 tutorial</a>.  To retrieve this plugin, see the 
      <a href="http://www.eclipse.org/ecf/resources.html">ECF Dev Resources page</a> Anonymous CVS access to ECF source.  The clients
      include a simple datashare test client, and a simple datashare-based whiteboard application refered to as 'scribbleshare'.  
      </p>
    </TD>
  </TR>

  <TR>
    <TD vAlign=top align=left width="30%">
    <p><br></p>
        <P align=left>
	<B>EclipseCon ECF Tutorial and ECF Short Talk Presentations</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
      <p><br></p>
      <p>At EclipseCon 2006, there was an <a href="http://www.eclipsecon.org/2006/Sub.do?id=46">ECF Tutorial</a>, and an 
      <a href="http://www.eclipsecon.org/2006/Sub.do?id=385">ECF short talk</a>.  The presentation 
      materials for the tutorial is <a href="presentations/EclipseCon.2006.ECF.Tutorial.42.pdf">here</a> 
      and for the short talk <a href="presentations/EclipseCon.2006.ECF.Talk.385.pdf">here</a></p>
    </TD>
  </TR>

</table>


</body>
</html>