Freie Integrations-Frameworks auf der Java-Plattform
Trotz der Vielzahl an Techniken, Protokollen und Datenformaten soll deren Integration idealerweise standardisiert modellierbar, effizient umsetzbar und automatisiert testbar sein. Im Java-Umfeld gibt es dafür mit Spring Integration, Mule ESB und Apache Camel drei quelloffene Integrations-Frameworks.
- Kai Wähner
Neben der Zunahme des Datenaustauschs zwischen und innerhalb eines Unternehmens oder einer Organisation steigt auch die Zahl der zu integrierenden Anwendungen stetig. Trotz der Vielzahl an Techniken, Protokollen und Datenformaten soll die Integration dieser Anwendungen idealerweise standardisiert modellierbar, effizient umsetzbar und automatisiert testbar sein. Im Java-Umfeld gibt es dafür mit Spring Integration, Mule ESB und Apache Camel drei quelloffene Integrations-Frameworks.
Spring Integration, Mule oder Camel lassen sich in nahezu jedem Integrationsprojekt im JVM-Umfeld (Java Virtual Machine) sinnvoll und effizient einsetzen. Welche Techniken, Transport- und Nachrichtenprotokolle der Entwickler einsetzt, spielt dabei keine Rolle. Mit den Frameworks können sie ihre Integrationsprojekte einheitlich und ohne redundanten "Boilerplate-Code" umsetzen.
Der Artikel stellt die drei Konkurrenten vor und zeigt ihre jeweiligen Vor- beziehungsweise Nachteile und sinnvollen Einsatzgebiete auf. Außerdem geht er auf die Frage ein, für welche Projekte besser doch ein mächtiger Enterprise Service Bus (ESB) eingesetzt werden sollte.
Gemeinsamkeiten
Die drei Frameworks implementieren die sogenannten Enterprise Integration Patterns (EIPs) [1] mit einer internen domänenspezifischen Sprache (Domain Specific Language, DSL). Die EIPs lassen sich nutzen, um Integrationsanforderungen in kleinere Fragmente zu zerteilen. Diese wiederum können Entwickler dann mit standardisierten Grafiken in verständlichen Ablaufdiagrammen modellieren. Mit den Patterns schließen die Frameworks dadurch die Lücke zwischen Modellierung und Implementierung. Andernfalls wäre das immer wieder mühsam per Hand neu umzusetzen. Zwischen den EIPs und der DSL der Frameworks besteht nahezu eine Eins-zu-eins-Beziehung.
Für den Vergleich der drei Integrations-Frameworks sind die folgenden Kriterien beziehungsweise Anforderungen zu betrachten:
- Open Source
- Basiskonzepte/Architektur
- Testbarkeit
- Deployment
- Verbreitung
- kommerzieller Support
- Tool-Unterstützung
- Fehlerbehandlung
- Monitoring
- Reife
- domänenspezifische Sprache
- Konnektoren Erweiterbarkeit
Da die drei Frameworks die EIPs implementieren, nutzen sie das sich daraus ableitende Konzept "Pipes and Filters", das verkürzt gesagt aus Nachrichten, Nachrichtenkanälen und Endpunkten besteht. Demnach wird eine Nachricht zwischen den Endpunkten verschickt, wobei der Nachrichtenkanal als Verbindung zwischen mehreren Endpunkten anzusehen ist. Die Endpunkte wiederum bieten Verbindungsmöglichkeiten wie FTP, File oder JMS (Java Messaging Service) nach außen an oder aber verarbeiten die Nachrichten intern weiter, um sie zum nächsten Endpunkt zu schicken. Dabei entspricht die Verarbeitung jeweils einem EIP wie Routing, Transformation oder Filtern.
Die drei Frameworks besitzen APIs mit unterschiedlichen Benennungen. Beispielsweise heißen die Verbindungsmöglichkeiten bei Spring Integration "Adapter", bei Mule "Konnektor" und bei Camel "Komponente" – im Folgenden wird der Begriff "Konnektor" verwendet. Abgesehen davon bieten die Produkte aber immer das gleiche Grundkonzept, egal welche Techniken zu integrieren sind.
Daneben bestehen zahlreiche weitere Gemeinsamkeiten. Die Integrations-Frameworks bestehen aus wenigen Bibliotheken und lassen sich dadurch ohne großen Aufwand in jedes Projekt integrieren. Dabei spielt es keine Rolle, ob es sich um eine reine Java-Anwendung, eine modulare OSGi-Umgebung, eine Installation in einem Webcontainer oder Anwendungsserver oder gar um eine Cloud-Anwendung handelt. Die Umsetzung von Integrationsanforderungen erfolgt immer auf die gleiche Weise: programmatisch durch die Nutzung der Bibliotheken.
Alle drei Produkte sind Open-Source-Frameworks und bieten die dafür gewohnten Merkmale, etwa Zugriff auf den Quellcode, einen Issue Tracker, Abstimmen über neue Funktionen, ein Forum und eine Mailingliste. Spring Integration und Camel stehen unter der Apache Licence, während Mule die Common Public Attribution License (CPAL) verwendet. Die Community erstellt Dokumentation und veröffentlicht Blogs und Tutorials. Leider besteht jedoch nur eine begrenzte Auswahl an Büchern: Für Spring Integration und Camel ist jeweils nur ein aktuelles Buch verfügbar, für Mule hingegen sind die Bücher mittlerweile überholt und daher kaum empfehlenswert. Bei allen ist kommerzieller Support verfügbar:
- Spring Integration durch SpringSource
- Mule ESB durch MuleSoft
- Camel durch Talend und FuseSource. (Dabei ist zu beachten, dass FuseSource von Red Hat erst kürzlich übernommen wurde. Auch JBoss setzt im neuen ESB "Switchyard" intern auf Camel.
Auch wichtige Enterprise-Features für die Nutzung in kritischen Projekten wie Fehlerbehandlung, Skalierbarkeit, Überwachung oder automatisierbare Tests unterstützen alle drei Frameworks. Ebenso ist allen eine gute IDE-Unterstützung gemein. Das ist nicht verwunderlich, schließlich handelt es sich "nur" um Java-Bibliotheken. Auch visuelle Designer, mit denen sich Integrationsszenarien modellieren lassen, sind für die drei Frameworks verfügbar. Der zugehörige Quellcode wird generiert. Die Tools für Mule und Camel bieten zusätzlich noch weitere Funktionen wie Live-Monitoring oder Performance-Analyse an.