What is an Enterprise Service Bus (ESB)?
Unfortunately, definitions vary. Widely. Microsoft has a somewhat amusing take on the subject, which quotes six sources with six different definitions, then moves on without providing a definition of its own! You know a topic is a gray area if Microsoft (wisely?) doesn't provide their own sound-bite summary for it.
To understand an ESB, review the history of application development via services. In the past decade, application development models have made a quantum leap. XML allowed applications to communicate without hard-coding for data formats. Web services used XML and related technologies such as SOAP to allow applications to communicate over networks, through firewalls. Service Oriented Architectures then captured the idea that applications could be written from the ground up with integration in mind, leveraging Web services, rather than adding hooks down the road.
An ESB takes this effort to the next level by providing a container where integration is performed. The container provides services to objects inside it, such as messaging, protocol handling, and configuration management. This offloads much of the redundant grunt work involved in writing and integration applications, allowing developers to focus on just the unique functionality they need. To some vendors, the container is conceptual - if you deploy message queue ABC and application server XYZ, you have an ESB already. To others, the ESB is a physical entity that itself performs real work.
Blackbird fits into the physical-entity category. It is designed to allow developers, with minimal code, to write and integrate applications. Developers create classes that are loaded and managed by Blackbird, and Blackbird provides facilities to connect to external resources, such as message queues, application ports (SOAP, SMTP, etc.), databases, and so on. Messaging is a critical part of an ESB (and of Blackbird) - it is how objects communicate with one another. Blackbird integrates with the popular, Open Source Apache ActiveMQ application, which provides robust, feature-rich messaging services. Because it is also used by Apache ServiceMix, it is easy for developers to integrate PHP and Java code projects by simply running Blackbird and ServiceMix on the same ActiveMQ installation.
An ESB is an important development tool first because it makes the initial development cycle easier, by providing services developers would otherwise have had to write for themselves. However, the real power is that, once an application is written with an ESB at its core, adding new functionality is orders of magnitude faster. They aren't suitable for all tasks - it would (probably) be silly to try to write a word processor in an ESB. However, any time data is exchanged between components, especially across multiple applications, an ESB can usually make the development cycle faster and open doors for future options.
Some examples may be the easiest way to illustrate what is possible if applications are developed around an ESB. We have written a number of use cases that highlight some common challenges, and how an ESB may fit into solving each.