Как я уже неоднократно говорил, неправильно считать, что
Eclipse - это только
IDE.
Eclipse Foundation разрабатывают прежде всего качественную платформу для построения самых разных приложений. Основным компонентом платформы является
Equinox - реализация спецификации
OSGi R4. На базе
Equinox строятся другие компоненты, такие, как, например,
Eclipse Communication Framework, о котором мы сегодня и поговорим.
Не секрет, что большинство создаваемых сегодня приложений работают в сетевой среде. Особенно это характерно для т.н. Enterprise-приложений, для разработки которых в основном Java и используется. Естественно, что такие приложения нуждаются в средствах взаимодействия с локальной сетью и/или Интернетом. Писать такое взаимодействие самому довольно утомительно, поэтому для создания программ, основанных на
OSGi (в частности -
Eclipse RCP - приложений), был разработан
ECF.
ECF - это реализация концепции распределенных контейнеров, осуществляющих передачу данных по различным прикладным протоколам. Контейнеры могут обеспечивать связь с сохранением состояния (т.е. с сессией) и без сохранения. Поддерживается взаимодействие типа "точка-точка" (например, клиент - сервер) и типа "публикатор - подписчики". Само взаимодействие может быть как синхронным, так и асинхронным.
По сути,
ECF предоставляет единый
API к контейнерам, обеспечивающим различные протоколы связи, причем этот
API расширяемый и допускает использование возможностей, характерных для того или иного протокола. Обеспечивается такая возможность за счет того, что
API многоуровневый.
Единый
API позволяет не беспокоиться о том, что у нас находиться "на другой стороне" - в случае изменения протокола мы просто меняем создаваемый контейнер, остальной код (в идеале, конечно) менять не требуется. Вторым плюсом такой унификации является легкий переход от одной технологии (например,
Apache ActiveMQ, представленный в той же
IBM WebSphere) к другой (например,
Weblogic от
Oracle).
Что касается использования
ECF в чисто
OSGi-среде, то именно он содержит реализацию
Distributed OSGi (RFC 119) для
Equinox. Но давайте познакомимся с фреймворком поближе.