Enterprise Tales: Apache TomEE

Lars Röwekamp und Matthias Weßendorf

Passend zur JavaOne 2011 war er da, der erste offizielle JavaEE-Web-Profile-Container der Apache Software Foundation, kurz Apache TomEE. Sichtlich erleichtert gab Projektleiter David Blevins (IBM) bekannt, dass der „neue“ Server das TCK bestanden hat. Doch was genau steckt hinter dem Apache-TomEE-Container?

Das Web Profile von JavaEE

Mit der Version 6 hat Java EE das Konzept des Profile eingeführt. Ein Profile ist eigentlich nichts anderes als eine Art Konfiguration für ein spezielles Anwendungsgebiet. Die Spezifikation des Profile bestimmt, welche Standards umgesetzt werden und welche nicht. Interessant dabei ist vor allem, dass ein Profil durchaus auch gezielt Standards hinzufügen kann, die in JavaEE nicht enthalten sind. Derzeit gibt es genau zwei solcher Profiles: Full Profile und Web Profile. Das Full Profile enthält sämtliche Standards, die in der JavaEE-6-Spezifikation aufgeführt werden. Das Web Profile hingegen enthält nur die Standards, die in der Regel ausreichen, um eine klassische Java-Web-Anwendung zu erstellen (Abb. 1). Stichwort: Weniger ist mehr! Der pragmatische Ansatz des Web Profile („Wähle das, was wichtig ist!) ist einer der wesentlichen Gründe, warum aktuell von vielen Anbietern ausschließlich dieses Profile und nicht auch das Full Profile angeboten wird. Prominente Beispiele sind JBoss AS7 oder der Resin-Container von Caucho. Der Apache TomEE befindet sich also in bester Gesellschaft.

Abb. 1: Übersicht der Standards
Was ist Apache TomEE genau?

Der TomEE Server entstammt dem Apache-OpenEJB-Projekt [1]. Genauer gesagt ist TomEE eine konsequente Weiterentwicklung des OpenEJB/Tomcat Integration Bundle [2], das seit Jahren von der Community angeboten wird. Der technische Fortschritt von EJB/EJB Lite, JPA und anderen (in der Vergangenheit) schwergewichtigen Standards haben dazu geführt, dass mehr und mehr Entwickler diese Komponenten innerhalb eines Apache Tomcat laufen lassen wollen. Die Idee, einen Web-Profile-Containers seitens des OpenEJB-Projekts anzubieten, lag nah, zumal man bereits eine funktionsfähige Tomcat-Integration besitzt. Innerhalb des Apache TomEE werden nur JavaEE-Komponenten von der Apache Software Foundation eingesetzt (Tabelle1).

Tabelle1: Apache-Komponenten im TomEE

CDI Apache OpenWebBeans
EJB Apache OpenEJB
Javamail Apache Geronimo JavaMail
JPA Apache OpenJPA
JSF Apache MyFaces
JSP Apache Tomcat
JSTL Apache Tomcat
JTA Apache Geronimo Transaction
Servlet Apache Tomcat

Neben dem einfachen Web-Profile-Container gibt es ebenfalls noch einen weitere Version des Servers: Apache TomEE plus. Diese Konfiguration bietet zusätzliche Komponenten an, die zwar im Allgemeinen ebenfalls in Enterprise-Projekten nützlich sind, sich aber nicht in der offiziellen Beschreibung des Web Profile befinden (Tabelle2).

Tabelle 2: Zusätzliche Komponenten

Connector Apache Geronimo Connector
JMS Apache ActiveMQ
Web Services Apache CXF
REST Apache CXF

Dass das JAX-RS API nicht im Web Profile von JavaEE 6 enthalten ist, hat viele Entwickler stark verwundert. Das ändert sich allerdings mit JavaEE 7. In der nächsten Generation wird REST ein fester Bestandteil des normalen Web Profiles.

Der 24 Megabyte große TomEE-Server ist bestens gerüstet für die Cloud. Das Entwicklerteam hat bei den ersten Cloud-Tests den Fokus auf Amazon Elastic Compute Cloud (Amazon EC2) gelegt. Weitere Plattformen werden folgen. Besonders interessant ist die Tatsache, dass für das Bestehen des TCKs keine Veränderungen an den Memory-Einstellungen des Tomcat vorgenommen werden mussten [3]. Als Basis für den TomEE dient also ein gewöhnlicher Tomcat. Von der Verfügbarkeit des TomEE wird in Zukunft auch der Tomcat als solches profitieren. In sehr vielen Spring-Projekten wird Tomcat schon lange als Server eingesetzt. Nun können auch endlich JavaEE-Projekte bedient werden.

Was ist mit Apache Geronimo?

Der eine oder andere wundert sich vielleicht, dass der Apache Geronimo keine Web-Profile-Implementierung anbietet. Das wird wohl auch in Zukunft mit hoher Wahrscheinlichkeit so bleiben. Der Geronimo Container konzentriert sich gerade auf das 3.0-Release. Es wird Full Profile compliant sein [4].

Fazit

Die Verfügbarkeit von Apache TomEE ist ein großer Erfolg für die JavaEE-Community und auch für die Apache Software Foundation, die seit Jahren hochwertige Java-Produkte veröffentlicht. War die OpenEJB/Tomcat-Integration in der Vergangenheit nur Kennern oder Fans bekannt, tritt TomEE jedoch weit breiter in Erscheinung. Die Tatsache, dass ein leichtgewichtiger und moderner JavaEE-Container auf Basis des Apache Tomcat 7 gebaut wurde, macht den Container für ein breites Publikum interessant. Noch handelt es sich hier um ein junges Projekt, allerdings sind die Zukunftsaussichten rosig. Wir sagen „Herzlichen Glückwunsch!“.

Lars Röwekamp ist Geschäftsführer der open knowledge GmbH und berät seit mehr als zehn Jahren Kunden in internationalen Projekten rund um das Thema Enterprise Computing (Twitter: @mobileLarson).Matthias Weßendorf arbeitet für die Firma Kaazing. Dort beschäftigt er sich mit WebSocket, HTML5 und weiteren Themen rund um das Next Generation Web. Er bloggt regelmäßig auf http://matthiaswessendorf.wordpress.com (Twitter: @mwessendorf).

Geschrieben von
Lars Röwekamp und Matthias Weßendorf
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.