eclipse communication framework

an eclipse technology subproject

New and Noteworthy
0.9.3 Stable Release

Return to ECF download page
Return to ECF communication resources page

New and Noteworthy for 0.4.0
New and Noteworthy for 0.5.2
New and Noteworthy for 0.5.4
New and Noteworthy for 0.6.0
New and Noteworthy for 0.6.2
New and Noteworthy for 0.7.0
New and Noteworthy for 0.7.5
New and Noteworthy for 0.7.6
New and Noteworthy for 0.8.0
New and Noteworthy for 0.8.1
New and Noteworthy for 0.8.2
New and Noteworthy for 0.8.4
New and Noteworthy for 0.8.5
New and Noteworthy for 0.8.6
New and Noteworthy for 0.8.7
New and Noteworthy for 0.8.9
New and Noteworthy for 0.9.0
New and Noteworthy for 0.9.1
New and Noteworthy for 0.9.2

NOTE: For brevity, bundles and packages named "" will sometimes be referred to as "" below.

ECF API Refactoring

ECF Core Bundle Split into 3 Bundles

Previously, there was one core ECF bundle org.eclipse.ecf. This bundle was approximately 150K of code. In response to dev mailing list postings about ECF code size and applicability in multiple runtime environments we went about refactoring the ECF core plugins so that there was less code, and less code was required for other ECF APIs (like filetransfer, datashare, discovery, remoteservices).

There are now two core plugins: org.eclipse.ecf.identity and org.eclipse.ecf. org.eclipse.ecf depends upon org.eclipse.ecf.identity.

Plugin/Bundle ID

New Size (Kbytes)


Project Name

API Javadocs



(packages) org.eclipse.core.runtime org.osgi.framework





(bundle) org.eclipse.ecf.identity


org.eclipse.ecf.core org.eclipse.ecf.core.provider org.eclipse.ecf.core.start org.eclipse.ecf.core.user org.eclipse.ecf.core.util

These are now the only plugins required for use of ECF, so the total code for minimal ECF applications is 73K. The ecf plugin exports the packages and classes from ecf.identity, so it is not necessary for the ecf.identity plugin to be explicitly added.

There is now also a third core plugin ecf.sharedobject:

Plugin/Bundle ID

New Size (Kbytes)


Project Name

API Javadocs



(plugin) org.eclipse.ecf



This plugin is not required for other ECF API plugins (e.g. filetransfer, discovery, remoteservices, datashare), but is useful as an API...particularly for implementing component-based ECF providers.

NOTE: One consequence of this refactoring is that the shared object API interfaces and classes (ISharedObject, ISharedObjectContainer, etc) that were present in the org.eclipse.ecf.core package are now no longer in that package. These classes can, however, be found in the org.eclipse.ecf.core.sharedobject package, which is now in the org.eclipse.ecf.sharedobject plugin (the org.eclipse.ecf.core.sharedobject project). In most cases, adding the org.eclipse.ecf.sharedobject plugin to list of your plugin's dependencies and then having Eclipse "Add Import" or "Organize Imports" should fix with new package names.

ECF Core and API plugins Now Able to Run on CDC 1.0/Foundation 1.0 Execution Environments

The following plugins are now able to run on a minimum of the CDC 1.0/Foundation 1.0 execution environment:

  • org.eclipse.ecf.identity
  • org.eclipse.ecf
  • org.eclipse.ecf.sharedobject
  • org.eclipse.ecf.discovery
  • org.eclipse.ecf.datashare
  • org.eclipse.ecf.filetransfer
  • org.eclipse.ecf.presence
  • org.eclipse.ecf.remoteservice
See bug #149024.

Package Changes for ecf.core.identity

Package Changes for ecf.core,,, ecf.core.provider, ecf.core.util

Many of the classes previously in these packages have moved to the org.eclipse.ecf.sharedobject bundle. The classes are now in the following packages in that bundle: ecf.core.sharedobject,, ecf.core.sharedobject.provider,, and ecf.core.sharedobject.util. To use the classes it's now necessary to include (via Require-Bundle or Import-Package) from the org.eclipse.ecf.sharedobject bundle.

Extension Point Changes

Previously there were four extension points defined in the org.eclipse.ecf bundle: org.eclipse.ecf.namespace, org.eclipse.ecf.containerFactory, org.eclipse.ecf.connectionFactory, org.eclipse.ecf.startup, and org.eclipse.ecf.sharedObjectFactory. The following changes have been made to these extention points:

  1. org.eclipse.ecf.namespace
    1. Moved extension point to org.eclipse.ecf.identity bundle
    2. Changed id for extension point to org.eclipse.ecf.identity.namespace
    3. Simplified signature for superclass Namespace.createInstance()
  2. org.eclipse.ecf.containerFactory
    1. Simplified signature for factory interface IContainerInstantiator
  3. org.eclipse.ecf.start -- Unchanged
  4. org.eclipse.ecf.connectionFactory -- REMOVED
  5. org.eclipse.ecf.sharedObjectFactory
    1. Moved extension point to org.eclipse.ecf.sharedobject bundle
    2. Changed id for extension point to org.eclipse.ecf.sharedobject.sharedObjectFactory
    3. Simplified signature for factory interface ISharedObjectInstantiator

Added org.eclipse.ecf.filetransfer plugin, removed org.eclipse.ecf.fileshare plugin

For filetransfer, the plugin org.eclipse.ecf.filetransfer was created/added. Further, the org.eclipse.ecf.fileshare plugin was removed from the main distribution and will no longer be supported.

NEW ECF CONVENTION: Container adapter interfaces now use common naming

Previously, the container adapter interfaces in the various extension APIs (e.g. discovery) did not have a common naming convention. For example, org.eclipse.ecf.discovery.IDiscoveryContainer, or org.eclipse.ecf.datashare.IChannelContainer. Now, all of these adapter interfaces have the convention of I<type>ContainerAdapter.class. So, for example, org.eclipse.ecf.discovery.IDiscoveryContainer.class is now called org.eclipse.ecf.discovery.IDiscoveryContainerAdapter.class, and org.eclipse.ecf.datashare.IChannelContainer is now called org.eclipse.ecf.datashare.IChannelContainerAdapter. These interfaces are intended to be used as adapters for org.eclipse.ecf.core.IContainer instances, e.g.:

      IContainer container = ContainerFactory.getDefault().createContainer("type");
      IDiscoveryContainerAdapter discovery = 
      		(IDiscoveryContainerAdapter) container.getAdapter(IDiscoveryContainerAdapter.class);

Moved classes to *.internal* names and fixed other naming conventions

In accord with the Eclipse Platform naming conventions, a number of classes and interfaces previously exposed are now in internal packages with names of the form org.eclipse.ecf.internal.*. These packages are further marked as x-internal:=true in the Export-Packages section within MANIFEST.MF.

org.eclipse.ecf.core.util.ECFException now inherits from CoreException

org.eclipse.ecf.core.util.ECFException formerly inherited from java.lang.Exception. It now inherits from org.eclipse.core.runtime.CoreException. This should allow ECFException to run on the CDC 1.0/Foundation 1.0 execution environment, as that execution environment does not support java.lang.Exception constructors: Exception(Throwable) and Exception(String,Throwable)

Add 'removeListener' methods

Added 'removeListener' methods to and org.eclipse.ecf.presence.IPresenceContainer. See bug #160968.

Moved org.eclipse.ecf.presence.IInvitationListener

Moved (in org.eclipse.ecf.presence API) access to IInvitationListener to IChatRoomManager rather than IPresenceContainer. See bug #160137.

Allowed extending org.eclipse.ecf.provider.generic.ClientSOContainer for authentication

Streamlined handling of creating/passing in connect data for new kind of authentication. See bug #150398.

Added query methods to org.eclipse.ecf.core.ContainerTypeDescription

Two methods were added to org.eclipse.ecf.core.ContainerTypeDescription. These two methods are ContainerTypeDescription.getSupportedAdapterTypes(), and ContainerTypeDescription.getSupportedParameterTypes(). These two methods are available so that client code can inspect the adapter types and parameter types appropriate for a given IContainer instance before it is actually created. See bug #164154.

Removed URI references from discovery API

Removed references to class from org.eclipse.ecf.discovery plugin.

Changed method names in org.eclipse.ecf.presence API

Changed a number of method names in org.eclipse.ecf.presence API for clarity and consistency. For example, IPresenceContainerAdapter.removeSubscripionListener -> IPresenceContainerAdapter.removeRosterSubscriptionListener

Changed exception names

Exception class names from *InstantiationException to *CreateException. For example, IDInstantiation exception is now IDCreateException. ContainerInstantiationException is now ContainerCreateException.

Changed method signature for IContainer.addListener

The method signature for IContainer.addListener(IContainerListener listener, String filter) has changed to IContainer.addListener(IContainerListener listener)