| Autor: | Thomas Bayer Orientation in Objects GmbH | ![]() Thomas Bayer |
| Datum: | April 2002 |
Für die Realisierung von Web Anwendungen im J2EE Umfeld steht eine Reihe von Technologien für das Frontend zur Verfügung. Der folgende Text beschreibt kurz die Alternativen und grenzt sie ab.
Servlets stellen Java Klassen dar, die Anforderungen nach Web Seiten verarbeiten können. Das Schreiben dieser Klassen ist sehr technisch und nahe am Medium. Die Entwicklung von Web Seiten mit Servlets gleicht daher der Programmierung mit Assembler. Der Programmierer hat sich um fast alles selbst zu kümmern wie der Code in Beispiel 1 zeigt. Näher an der Technik geht es nur mit CGI Skripten.
Servlets sind für die Realisierung technischer Aufgaben das Mittel der Wahl. Typische Aufgaben für Servlets sind:
Das Erstellen von komplexen Web Anwendungen rein mit Servlets ist in vielen Fällen zu aufwändig und zu teuer.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class CafeServlet extends HttpServlet {
public void doPost(HttpServletRequest req,
HttpServletResponse res)
throwsServletException, IOException {
String bestellung = req.getParameter("Bestellung");
PrintWriter out = res.getWriter();
out.println("<head><body>");
out.println("<h2>Hier is Ihr "+bestellung+".<h2>");
out.println("</body></head>");
}
}Beispiel 1: Einfaches Servlet
Mit JavaServer Pages lassen sich schnell und einfach kleinere Web Anwendungen erstellen. Die Server Page ist eine um Java Code angereicherte HTML Seite. Der Entwickler kommt mit Ihnen schnell zu einem Ergebnis.
Mit JSP realisierte Web Anwendungen werden mit der Zeit unübersichtlich und schwer zu pflegen. In den Server Pages sind wie aus Beispiel 2 ersichtlich HTML und Java Code oft bunt gemischt. Abhilfe schafft die Verwendung von Helper Klassen und Taglibs. Eine Taglib ist eine Bibliothek mit Tags, die dem JSP Entwickler zur Verfügung stehen.
Eine weitere Trennung von Markup und Code kann durch die Verwendung von Server Pages in Verbindung mit einem Model View Controller Framework wie Apache Struts erzielt werden.
<html>
<body>
<% for( int i = 0; i < 10; i++) { %>
<%=i%>
<br/>
<% } %>
</body>
</html>
Beispiel 2: Einfache JSP Seite
XSP Seiten sind im Gegensatz zu normalen Server Pages XML Dokumente. In der XSP Seite kann anstatt von HTML Markup, eine Abstraktion in Form von selbstdefinierten Tags verwendet werden. Diese Tags können später an zentraler Stelle in HTML, WML oder PDF umgewandelt werden. Eine XSP Seite ist durch diese Trennung übersichtlicher und leichter zu warten.
XSP kann zusammen mit Helper Klassen, Tablibs und MVC Frameworks eingesetzt werden.
<?xml version="1.0"?>
<xsp:page language="java" xmlns:xsp="http://apache.org/xsp">
<page>
Jetzt ist es:
<xsp:expr>new Date()</xsp:expr>
<xsp:logic>
for( int i = 1; i &lt; 10; i++) {
<zahl>
<xsp:expr>i</xsp:expr>
</zahl>
}
</xsp:logic>
</page>
</xsp:page>Beispiel 3: Einfache XSP Seite
Die Idee des MVC Musters ist die Trennung von Anzeige (View), Daten (Model) und der Steuerung (Controller). Viele MVC Frameworks verwenden ein zentrales Servlet, den Front Controller, welches alle Anfragen entgegen nimmt. Der Front Controller ruft die zu einer Seite gehörende Funktionalität auf und übergibt schließlich an eine Server Page, die die Aufgabe des Views übernimmt.
Ein MVC Framework kann man selbst implementieren oder auf ein fertiges zurückgreifen. Für JSP steht beispielsweise Struts von der Apache Software Foundation zur Verfügung. Für XSP kann man das Framework Cocoon einsetzen, welches von sich aus Unterstützung für Actions mitbringt, und selbst als Front Controller agiert.
Beim hierarchischen MVC Ansatz gibt es wieder eine Aufteilung in Model View und Controller. Eine Web Seite kann ähnlich einer konventionellen GUI aus einzelnen Komponenten zusammengesetzt werden. Diese Komponenten können eine Hierarchie bilden. Eine Seite dient als Top Level Container und nimmt weitere Container und Panels auf. Beispielsweise eine Navigationsleiste. Die Navigationsleiste kann wiederum Komponenten in Form von Links und Schaltflächen besitzen. Ereignisse, wie der Klick auf einen Link, werden vom Controller der entsprechenden Komponente verarbeitet oder, falls die Komponente für dieses Ereignis nicht zuständig ist, an die nächst höhere Stufe in der Hierarchie weitergeleitet. In unserem Beispiel an das Panel mit der Navigationsleiste.
Diese Art der Webentwicklung abstrahiert stark von den technischen Gegebenheiten einer Web Anwendung. Der Entwickler muß sich nicht direk mit Sessions, Requests und HTML herumschlagen. Die Entwicklung erfolgt ähnlich der Entwicklung einer normalen graphischen Oberfläche mit einem GUI Framework wie Swing.
Folgende Faktoren sollte man bei Auswahl der richtigen Technologien einbeziehen:
Die folgende Tabelle stellt die Technologien nochmals gegenüber:
| Servlet | JSP | XSP | MVC | H-MVC | |
|---|---|---|---|---|---|
| Kompexität | mittel | niedrig | hoch | hoch | sehr hoch |
| Abstraktionsgrad | niedrig | mittel | hoch | hoch | sehr hoch |
| Reife | hoch | hoch | mittel | mittel | niedrig |
| Performance | hoch | hoch | mittel - schlecht | mittel | mittel |
| Anbindung von Backend Systemen über | APIs | Taglib | Taglib | Model | Model |
| Standardisierung | Finale Spezifikation | Finale Spezifikation | - | - | sehr frühe Phase |
| Typische Anwendung | Upload, Front Controller für MVC | Multichannel Anwendungen | Frontend für große mehrschichtige Anwendung | ||
| Notwendige Skills | HTML, HTTP, Java | HTML, (Java) | XML, XSLT, (Java) | HTML oder XML, Java | Java |
| Einstiegshürde | mittel | niedrig | hoch | hoch | hoch |
| Produktivität | gering | mittel | hoch | hoch | hoch |
Mit den Server Pages hat ein Trend eingesetzt, der den Programmierer von Web Anwendungen zunehmend von den low level Details befreit. Mit Hilfe von Tag Bibliotheken kann man mit Server Pages fast ohne HTML Kenntnisse entwickeln.
Zunehmend wird in Web Projekten eine Trennung von HTML und Logik durch die Verwendung von XML und XSLT vorgenommen. Die Trennung kann durch die Kombination eines Servlets mit einem XSLT Prozessor oder durch ein Framework realisiert werden. Ein Beispiel für ein Web Development Framework ist der Apache Cocoon mit XSP Unterstützung.
Zusammen mit graphischen GUI Editoren versprechen die hierarchischen Model View Controller HMVC Frameworks eine hohe Produktivität und eine saubere Trennung von Präsentation, Daten und Logik. Die Kombination von XSLT Filtern und HMVC Frameworks kann die Vorteile beider Ansätze vereinen.
Java Servlet Technologie Sun Microsystems
JavaServer Pages Sun Microsystems
Cocoon 2 Open Source Web Publishing Framework Apache Cocoon 2
Struts MVC Framework bei Jakarta
Expresso Web Application Development Framework
HMVC: The layered pattern for developing strong client tiers Artikel bei JavaWorld
Java Server Faces JSR 127 von Sun
Scope Open Source Implementation des Hierarchical Model-View-Controller (HMVC) Design Pattern
Tapestry Komponenten basiertes Web Anwendungs Framework
WebWork Pull HMVC Framework