What is an ESB?

What does the term ESB- Enterprise Service Bus- actually
mean? That question has been the topic
of an ongoing debate for several years now that doesn't seem to have any sign
of stopping. When I first read about
ESBs in 2003, I didn't expect to still be trying to understand them more than
four years later. In comparison, there
have been other technologies that in the same time frame were introduced,
developed, matured, and obsolete.
However, it has felt like the definitions are getting closer in spirit
if not words. Here is a current
selection that I could find (using search to find the pages that were most
referenced but possibly not most recent).

BEA defines the
ESB
:

At the highest
level, an ESB provides common communication and integration services for
composite applications and shared services in an SOA.

IBM
defines the ESB
:

An enterprise service bus (ESB) is a pattern of middleware
that unifies and connects services, applications and resources within a
business.

Oracle
defines the ESB
:

It provides a much-needed intermediary layer that
facilitates data delivery, service access, service reuse, and service
management of an enterprise SOA implementation.

Sonic
defines the ESB
:

An ESB is software infrastructure that simplifies the
integration and flexible reuse of business components within a service-oriented
architecture.

Tibco
defines the ESB
:

An enterprise service bus (ESB) is a standards-based
communication layer in a service-oriented architecture (SOA) that enables
services to be used across multiple communication protocols.

Microsoft has a site
that is being put together to provide ESB
guidance
but dodges the question of definition (the site plays up the ESB
means different things to different people angle).

At the end of the
day though, the clearest definition of what companies think ESB means comes
from looking at the products that they build.