Free integration frameworks on the Java platform
by Kai Wähner
In addition to the increased data traffic between and within companies and organisations, the number of applications to be integrated has also been rising steadily. Despite the multitude of technologies, protocols and data formats, the integration of these applications should ideally allow standardised modelling, efficient implementation and automated testing. Spring Integration, Mule ESB and Apache Camel are three open source integration frameworks that provide this functionality in the Java world.
Spring Integration, Mule and Camel can be used meaningfully and efficiently in almost any JVM (Java Virtual Machine) integration project, irrespective of the developers' choice of technologies, transport protocols and messaging protocols. Developers can use a framework to implement their integration projects uniformly and without redundant "boilerplate" code.
This article introduces the three competitors and highlights their different advantages and disadvantages as well as recommended areas of use. It also discusses the question of which projects should be developed using a more powerful Enterprise Service Bus (ESB).
The three frameworks implement what are called "Enterprise Integration Patterns" (EIPs) using an internal domain-specific language (DSL). EIPs can be used to split a project's integration requirements into smaller fragments. Developers can then model these fragments using standardised graphics in easily comprehensible flow charts. The patterns therefore allow the frameworks to close the gap between modelling and implementation. Otherwise, developers would need to redo this manually from scratch every time. An almost one-to-one relationship exists between the EIPs and the frameworks' DSL.
To compare the three integration frameworks, the following criteria and requirements must be considered:
- Open source
- Basic concepts/architecture
- Commercial support
- Tool support
- Error handling
- Domain-specific language
- Connector extensibility
Because the three frameworks implement EIPs, they make use of the "pipes and filters" concept that is derived from them and, in simple terms, consists of messages, messaging channels and endpoints. Messages are sent between the endpoints, and the messaging channel is the pathway between multiple endpoints. The endpoints, in turn, offer external connection options such as FTP, File or JMS (Java Messaging Service) or internally process the messages to send them to the next endpoint. Each processing step corresponds to an EIP such as routing, transformation or filtering.
The three frameworks' APIs have different names. For example, the connectivity options are called "adapters" in Spring Integration, "connectors" in Mule and "components" in Camel – we will use "connector" in the text below. Apart from that, the products offer the same basic concept regardless of the technologies that are being integrated.
Numerous other common aspects exist. The integration frameworks consist of a few libraries and can, therefore, be integrated into any project without much effort, whether it is a pure Java application, a modular OSGi environment, an installation in a web container or application server or even a cloud application. The integration requirements are always implemented in the same way: programmatically via the libraries.
All three products are open source frameworks and offer the usual characteristics for such software including source code access, an issue tracker, a voting system for new features, a forum and a mailing list. Spring Integration and Camel are released under the Apache Licence, while Mule uses the Common Public Attribution Licence (CPAL). The community creates documentation and publishes blogs and tutorials. Unfortunately, there are only a limited number of books: only one current book each are available for Spring Integration and Camel, and the books for Mule are out of date and therefore hardly recommendable. All products offer commercial support:
1 Note that FuseSource was taken over by Red Hat only recently. JBoss internally uses Camel in its new "SwitchYard" ESB.
All three frameworks support important enterprise features for critical projects, such as troubleshooting, scalability, monitoring and automated testing. They also offer good IDE support, which is hardly surprising – after all, they are "only" Java libraries. Visual designers that allow developers to model integration scenarios are also available for all three frameworks. The necessary source code will be generated. The tools for Mule and Camel offer additional features such as live monitoring and performance analyses.