Aufbau der Application Server
Im Java Community Process arbeiten Sun, RedHat, Oracle und viele andere Unternehmen an gemeinsamen Standards für die Java-Welt. Im Laufe der Jahre haben sich dabei sechs Java-EE-Spezifikationen herausgebildet - die letzte, Java EE 5, wurde im Mai 2006 veröffentlicht. Der Nachfolger Java EE 6 hatte einige Anlaufschwierigkeiten, wird nun aber wohl irgendwann in den nächsten zwei Jahren erscheinen. Java EE 5 definiert als Laufzeitumgebung eine gemeinsame Infrastruktur für alle Application-Server. Folgende Komponenten der Java-EE-Architektur haben sich dabei als besonders wichtig herauskristallisiert:
Der Web-Container
Jeder Application-Server muss einen Web-Container enthalten, in dem Java-Servlets oder JSP-Sites veröffentlicht werden können. Dieser Container muss besonders schnell und stabil sein, da er oft die einzige Schnittstelle einer Java-EE-Anwendung zur Außenwelt darstellt. Gleichzeitig sollte sich eine Web-Anwendung, die im Web-Container ausgeführt wird, in einem Cluster ebenso wohl fühlen und problemlos Threads für viele Anfragen verarbeiten. Neben reinen Servlets oder JSPs kommen auch Java Server Faces (JSF) zum Einsatz: Damit lassen sich, ähnlich wie mit den Swing-GUI-Elementen in Java SE, Web-Oberflächen aus Bausteinen zusammenklicken.
Umgang mit Javabeans
Die zweite wichtige Komponente neben dem Web-Container, an der sich jeder Application-Server messen lassen muss, sind die Enterprise Javabeans (EJB). Sie bilden die Geschäftslogik eines Unternehmens ab und sind quasi zentrale Bausteine, die zwischen Interface und Datenbank vermitteln. Ein guter Application-Server sollte für Javabeans die Möglichkeit bieten, diese direkt auf eine Datenbank zu mappen, ohne umfangreiches SQL schreiben zu müssen. So entsteht das Gefühl, mit einer Objektdatenbank zu arbeiten, obwohl im Hintergrund ein relationaler Datenbank-Server läuft. Auch die Java Persistence API definiert ein zentrales Gedächtnis für Java-Objekte, die in Datenbanken abgelegt werden.
Neben diesen beiden zentralen Komponenten gibt es eine ganze Reihe weiterer Standards, die mehr oder weniger gut für die diversen Java-EE-Projekte passen. Sinnvoll sind jedenfalls Web-Services - Java EE definiert hier einen Standard, über den Schnittstellen zu EJBs im Application-Server laufen können. Die JAX-Standards definieren, wie eine Java-EE-Umgebung mit XML-Dokumenten und XML-Diensten umgehen soll. Das Java Naming and Directory Interface (JNDI) arbeitet als zentraler Dienst im Application-Server, der anderen EE-Komponenten einen zentralen Namens- und Verzeichnisdienst anbietet. Im geschäftlichen Umfeld sind zu guter Letzt die Standards Java Mail und JMS (Java Message Service) noch wichtig.
Die Wartung
Von zentraler Bedeutung für Application-Server ist auch die Frage nach der Wartung: Jeder Server sollte nicht nur über Java Management Extensions (JMX) verfügen, über die EE-Anwendungen und Komponenten verwaltet werden. Ferner muss ein Application-Server ein gutes Web-Interface enthalten, mit dessen Hilfe sich die gesamte Laufzeitumgebung und alle Container pflegen lassen. Hilfreich für Programmierer sind Plug-ins, die (Web-)Anwendungen direkt aus der Entwicklungsumgebung in einen Container auf dem Server schieben - Application Deployment genannt.