J2EE-Umgebung samt Ökosystem
Artikel erschienen in Swiss IT Magazine 2008/22
D ie J2EE-Umgebung dient zur Entwicklung verteilter Geschäftsanwendungen. Ein J2EE-Applikationsserver stellt dabei die Laufzeitumgebung für Softwarekomponenten (dies umfasst Lifecycle Management und Deployment) sowie verschiedene Services (Transaktionen, Security, Namens- und Verzeichnisdienste, Persistenz-Mechanismen) zur Verfügung. Weiter wird ein Web-Container angeboten, der Unterstützung für Servlets und Java Server Faces bietet. Das Komponentenframework ist explizit auf verteilte Komponenten ausgelegt und bietet entsprechende Remoting-Methoden und Schnittstellen zu Messaging Middleware (JMS) sowie Webservices an. Das Management von Komponenten erfolgt über die standardisierte Java Management Extension.
Ein grosser Vorteil der Jave 2 Enterprise Edition gegenüber beispielsweise .Net von Microsoft ist die Tatsache, dass J2EE ein offener Standard ist, der von vielen verschiedenen Anbietern, Open Source wie proprietär, implementiert wird. Dadurch ist auch eine Austauschbarkeit des Middleware-Anbieters leichter möglich: Es gibt tatsächlich eine grosse Anzahl an J2EE-Applikationsservern, darunter einige bekannte proprietäre Varianten wie Websphere von IBM oder Weblogic von Bea beziehungsweise Oracle. Im Open-Source-Umfeld sind vor allem JBoss sowie das Glassfish-Projekt (Sun) und Geronimo (Apache) zu nennen.
Im Open-Source-Umfeld dominierte bisher sicherlich die «Produktlinie» von JBoss, dies aber vielleicht nicht mehr ganz zu Recht: Denn mit Glassfish gibt es eine sehr leistungsfähige Alternative. Glassfish ist ein Applikationsserver, der von Sun initiiert und zum Grossteil auch implementiert wurde. Zunächst war Glassfish im wesentlichen die Referenzimplementation des J2EE-5-Standards, hat sich aber mittlerweile auch zu einem sehr leistungsfähigen Produktionssystem entwickelt, bei dem man immer von der Unterstützung der aktuellen J2EE-Standards profitiert. Glassfish kann in einem von zwei Lizenzmodellen verwendet werden: als Open-Source-Produkt unter der CDDL (Common Development and Distribution License) sowie in einer kommerziellen Variante von Sun, die entsprechenden Support beinhaltet.
Die wesentlichen Persistenz-Komponenten in Glassfish, die die Java Persistence API (JPA) implementieren, werden in den Produktionsversionen durch das Toplink-Framework bereitgestellt. Toplink war früher ein proprietäres Produkt der Firma Oracle und wurde dann der Open-Source-Community um Glassfish zur Verfügung gestellt.
Erst kürzlich wurde eine neue Version von Glassfish angekündigt, von der eine «Prelude»-Version bereits zum Download zur Verfügung steht. Diese Version ist der erste Applikationsserver, der Support für Java EE Version 6 anbietet. Die wesentliche architektonische Neuerung ist die Tatsache, dass die neue Version auf Basis von OSGi implementiert wurde. OSGi ist ein Komponentenmodell, das sich zur Zeit sehr grosser Beliebtheit erfreut und stellt unter anderem die Basis von Eclipse dar. OSGi erleichtert es, verschiedene Module innerhalb einer Laufzeitumgebung (wie einer Entwicklungsumgebung oder eines Applikationsservers) zu laden und voneinander zu trennen und dabei genau zu definieren, wie diese Module miteinander interagieren dürfen.
Weiter wird eine verbesserte Unterstützung für die heute sehr beliebten Scripting-Umgebungen angeboten. Konkret werden jRuby und Groovy unterstützt. Bei Groovy handelt es sich um eine Scriptsprache, die im Java-Umfeld sehr beliebt ist, weil sie im wesentlichen auf der Java-Syntax basiert und sich sehr gut in Java-Projekte integrieren lässt. Ruby und das darauf basierende Rails Framework müssen kaum näher vorgestellt werden. jRuby ist eine Implementierung der Scriptsprache Ruby, die in einer Java Virtual Machine läuft. Das bedeutet, dass man Ruby-Scripts sowie ganze Rails-Anwendungen innerhalb von Glassfish laufen lassen kann. Dies kann in der Praxis einige Vorteile haben:
Wie bei den meisten Applikationsservern ist auch Glassfish kein «Standalone»-Produkt. Neben den beschriebenen Kernfunktionen existieren eine Reihe von (Open-Source-)Projekten, die im Umfeld von Glassfish zu nennen sind (siehe Grafik); teilweise bieten sie Erweiterungen der Basisfunktionalität an, teilweise handelt es sich um spezialisierte Bibliotheken oder Produkte, die gut mit Glassfish zusammenarbeiten.
Im engeren Umfeld findet man Grizzly (Unterstützung der Skalierung) und das schon oben erwähnte Scripting. Grosse Enterprise-Anwendungen kommunizieren häufig über Messaging Middleware auf der Basis des Java-Messaging-Service-Standards. Ein Subprojekt von Glassfish ist der OpenMQ Message Broker, der als Konkurrenzprodukt zu Apache ActiveMQ gesehen werden kann (siehe InfoWeek 14/2007, auch online).
Der Glassfish-Applikationsserver mit dem «Glassfish-Universum» an Projekten und Subprojekten ist – wie jeder moderne J2EE-Applikationsserver – keine ganz einfach zu verstehende Angelegenheit. Wer also einen schnellen Web-Prototypen entwickeln möchte, ist hier vielleicht nicht richtig aufgehoben. Als Infrastruktur für komplexe Geschäftsanwendungen bieten sich Glassfish und JBoss als J2EE-Umgebung im Open-Source-Umfeld an. Beide Projekte können in vielen Punkten mit sehr teuren proprietären Produkten mithalten. Glassfish hat gegenüber einigen Konkurrenten den Vorteil, dass es sich um die Sun-Referenzimplementierung des J2EE-Standards handelt; damit hat man in den Previews immer die Möglichkeit, die neuesten Standards und deren Auswirkung auf Anwendung zu testen.
Besonders in den letzten Jahren hat die Glassfish-Umgebung sehr an Bedeutung gewonnen. Sun hat einige Ressourcen in diese Projekte gesteckt und gleichzeitig eine starke Open-Source-Politik betrieben, sodass man jetzt viele Projekte findet, die auch über eine nennenswerte Community verfügen. In Summe findet man im Umfeld von Sun eine reichhaltige Sammlung von Projekten, beginnend mit der MySQL-Datenbank über Scripting-Umgebungen, AJAX- und SIP-Frameworks und Cluster-Software bis zu der IDE Netbeans. Diese Projekte sind nicht nur als Open-Source-Projekte betrieben, sondern man bekommt auch bei Bedarf kommerziellen Support von Sun. Damit findet man hier ein Projekt-Portfolio, das sicher einen Blick wert ist!
Alexander Schatten (alexander@schatten.info) ist Assistent am Institut für Softwaretechnik und interaktive Systeme der Technischen Universität Wien.