Tutorial Webentwicklung (mit JSF)

Diese Einführung zu meinem Tutorial "Webentwicklung mit JSF" gibt Ihnen einen Überblick über den geplanten Umfang. Das Tutorial werde ich entsprechend meinen jeweiligen zeitlichen Möglichkeiten erstellen. Änderungen in Umfang und Inhalt sind daher ausdrücklich möglich.

Webentwicklung – dies ist erst einmal ein sehr unkonkreter Begriff, der alles umfassen kann, was mit dem Internet zu tun hat, von einer einfachen HTML-Seite bis hin zu einer komplexen Anwendung. In diesem Tutorial bezieht sich dieser Begriff ganz konkret auf die Entwicklung von Applikationen, die via Browser nutzbar sind, mit den weiter unten genannten Technologien. Somit wird deutlich, dass es sich nicht um statische Internetseiten handelt, sondern um vollwertige Programme, die auf einem Server gehostet und an einem beliebigen Ort genutzt werden, freier Internetzugang vorausgesetzt. Dabei kann sich beispielsweise um eine Mitgliederverwaltung, ein Auskunftssystem, eine Kommunikationsplattform oder anderes handeln.

Um eine solche Applikation zu realisieren ist ein ganzes Bündel unterschiedlicher Technologien erforderlich. Zum einen benötigen die Browser darstellbare Webseiten, die von einem Server bereitgestellt werden. Zum anderen ist eine Programmiersprache erforderlich. Es wird aber nicht einfach ein lokal laufendes Programm erstellt, sondern eine Webapplikation. Dies erfordert in der Regel eine entsprechende Plattform oder Framework. Serverseitig muss der Entwickler das Rad nicht komplett neu erfinden. So wird als Ablaufumgebung im Folgenden ein Applikationsserver genutzt. Und was ist eine Applikation ohne Datenhaltung? Also werden eine Persistenzschicht sowie ein Datenbanksystem benötigt. Eine Webapplikation kommuniziert mit dem Anwender mittels Formularen und Dialogen. Die Validierung von Eingaben soll so schnell erfolgen, dass der Anwender flüssig arbeiten kann, ohne auf langwierige Reaktionen des Servers warten zu müssen. Somit wird ein Teil der Applikation, wie Eingabevalidierung, auf den Client verlagert.

In diesem Tutorial erfolgt die Webentwicklung mit diesen Technologien:

  • HTML (Hypertext Markup Language) mit CSS (Cascading Style Sheets) zur Darstellung im Browser
  • Java als serverseitige Programmiersprache
  • JavaServer Faces 2.0 als Webframework
  • Apache HTTP Server
  • Java EE 6 compliant Application Server
  • Java Persistence API (JPA) 2.0
  • SQL Datenbank (JavaDB, MySQL, PostgreSQL)
  • NoSQL Datenbank (CouchDB)
  • JavaScript zur clientseitigen Programmierung
  • AJAX als Technologie zum Update von Seiten
  • XML Transformation zum Erzeugen von PDF-Inhalten
  • WebServices zur Lösung spezieller Probleme

In einem Tutorial dürfen natürlich praktische Beispiele, Screenshots etc. nicht fehlen. Während die genannten Technologien mittels unterschiedlicher Entwicklungsumgebungen genutzt werden können, ist, um den Rahmen dieses Tutorials nicht zu sprengen, die Beschränkung auf eine bestimmte Umgebung erforderlich. Hier wurde NetBeans gewählt, da diese Umgebung alle erforderlichen Technologien "out of the box", also ohne weitere Konfiguration anbietet. Im Einführungsbeispiel wird aber gezeigt, wie dies alternativ mittels Eclipse erfolgen kann. Soweit Sie, lieber Leser, nicht mit NetBeans arbeiten möchten, können Sie die weitere Entwicklung entsprechend auf Eclipse oder eine andere Entwicklungsumgebung übertragen. Analog gilt dies auch für den Applikationsserver. NetBeans kommt mit GlassFish 3.x daher, der ohne weitere Konfiguration, Deployment etc. genutzt werden kann. Es wird aber gezeigt, wie Sie die Applikation losgelöst von NetBeans auf diesem Server installieren. Entsprechend können Sie jeden anderen JEE6 kompatiblen Server nutzen. Und viele Beispiele können Sie auch auf einem sogenannten Servlet Container wie Tomcat 7.x nachvollziehen.

Aufbau des Tutorials

Bei dem vorliegenden Werk handelt es sich um ein Tutorial. Das bedeutet nicht, dass Sie einfach eine Reihe von Screenshots mit wenig Text vorgesetzt bekommen, anhand derer Sie das Ganze praktisch nachvollziehen müssen. Vielmehr heißt dies, Sie erhalten Informationen aus der Praxis heraus. Mit soviel Screenshots, dass Sie das Ganze rein gedanklich nachvollziehen können. Es ist nicht erforderlich, dass Sie sich gleich vor Ihren Rechner setzen und in die Tasten hauen. Wer möchte, darf dies natürlich auch. Den Screenshots und Listings folgt jeweils eine ausführliche Erläuterung. Tutorial bedeutet hier also ausgehend vom praktischem Beispiel. Insofern unterscheidet es sich also von klassischen Büchern, die alles erklären und nur ein paar Beispiele einstreuen. Dieses Tutorial ist konkreter, ohne aber das theoretische Fundament auszulassen.

Dabei geht es ganz sachte los. Im ersten Beispiel wird gezeigt, wie Sie eine Webapplikation anlegen und ausführen. Dazu wird anfangs nur der generierte Code genutzt und aus der Entwicklungsumgebung gestartet. Sodann erfahren Sie, wie Sie die Applikation auf einem Applikationsserver – losgelöst von der Entwicklungsumgebung – bereitstellen. Dieses erste Besipiel wird anschließend mittels Eclipse nachgebaut. Im späteren Verlauf des Tutorials sei dies dem interessierten Leser selber überlassen.

Erst nach und nach kommt eigener Code zur Anwendung dazu. Es entsteht ein einfacher Rechner für einige Grundrechenarten. So klein dieses Besipiel ist, zeigt es bereits serverseitige Programmierung, Eingabevalidierung und Einbindung von Stylesheets. Dazu gehört dann u. a. auch das theoretische Fundament zum Lebenszyklus einer JSF-Anfrage. Weitere Anwendungen zeigen die Nutzung von JSF-Templates, mittels derer Sie einen (optischen) Rahmen für Ihre Anwendung schaffen können.

Die Mitgliederverwaltung eines Vereins ist die erste größere Anwendung. Sie soll nur für einen bestimmten Personenkreis zugänglich sein. Dabei wird unterschieden zwischen Personen, die einen Ausschnitt der Daten sichten dürfen und solchen, die sämtliche Daten sichten und editieren können. Hier sind also Persistenz und Authentisierung gefragt.

Die zweite größere Applikation stellt eine Fakturierung dar. Im Fallbeispiel sollen Rechnungen direkt beim Kunden erfasst und ausgedruckt werden können. Die Belege werden serverseitig als PDF erzeugt, so dass sie vor Ort auf einem beliebigen Drucker ausgegeben werden können. Dieses Beispiel geht davon aus, dass sich der Applikationsserver in einer DMZ (demilitarisierte Zone) befindet. Die Datenbank soll aber nicht an einer solch exponierten Stelle installiert werden, sondern sich im lokalen Netz befinden. Desweiteren ist ein direkter Zugriff von der DMZ auf den Datenbankport verboten. Der Zugriff erfolgt daher indirekt mittels einem weiteren Applikationsserver, der via Webservices angesprochen wird.

Als Brückenschlag zu anderen Webtechnologien wird schließlich gezeigt, wie diese Webservices von einer Dot.NET-Applikation angesprochen werden können. Desweiteren wird die alternative Datenspeicherung mittels CouchDB dargestellt.

Auch wenn es in diesem Tutorial speziell um Webapplikationen geht, so ist ein wesentlicher Bestandteil von Internetangeboten eine reine Information: Es werden statische oder dynamisch generierte Inhalte angezeigt. Dies beherrscht ein HTTP- (oder einfach Web-) Server in der Regel besser als ein Applikationsserver. Und so lernen Sie die Nutzung des Applikationsservers hinter einem HTTP-Server. Dabei nimmt der HTTP-Server die Anfragen aus dem Web entgegen, und entscheidet dann, ob er einfach Inhalte ausliefert oder aber die Anfrage an die Applikation weiterleitet.

Auch wenn dieses Tutorial mit einem kleinen Beispiel anfängt, so richtet es in erster Linie an Personen, die bereits über Programmierkenntnisse in Java verfügen. HTML und CSS gehören zwar in das Repertoire eines jeden Webentwicklers, aber gerade beim Einstieg in diesen Bereich verfügt nicht jeder Java-Entwickler über entsprechende Kenntnisse. Daher finden Sie zugehörige Informationen in kompakter Form eingestreut sowie Links auf vertiefende Informationen.

Der Schwerpunkt dieses Tutorials liegt auf der Entwicklung von Applikationen, nicht auf der Installation der Ablaufumgebung. Daher startet der praktische Teil auch nicht mit ausgedehnten Installationsanleitungen.

Am besten können Sie dieses Tutorial mittels NetBeans nachvollziehen. Diese Entwicklungsumgebung finden Sie unter http://netbeans.org/downloads/index.html. Wählen Sie dort entweder das Paket "Java" oder "All" und installieren dies gemäß Anleitung. Vorraussetzung ist ein installiertes Java JDK. Falls Sie dies noch nicht installiert haben solten, so finden Sie im Downloadbereich von NetBeans den passenden Link.