JEE – Was ist das? 12.03.07 Page 1TietoEnator © 2005
JEE – Was ist das?Montagsreihe, 12.03.2007
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Agenda – Teil 1 Java Plattform
Standard Edition
Enterprise Edition
– Mehrschicht-Architekturen
– Web-Container Servlets JavaServer Pages Tag-Libraries Struts JavaServer Faces Andere Frameworks
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Agenda – Teil 2
– EJB-Container
Frank Ilchmann
JEE – Was ist das? 12.03.07 Page 4TietoEnator © 2005
JEE – Was ist das?Java Platform
JEE – Was ist das? 12.03.07 Page 5TietoEnator © 2005
Java Platform
“The Java platform is the name for a bundle of related Programs … from Sun Microsystems which allow for developing and running programs written in the Java programming language.“
– http://en.wikipedia.org/wiki/Java_platform Die Java Platform ist ein Sammelbegriff von Sun für:
– die Programmiersprache Java– einer Vielzahl standardisierter APIs sowie deren Implementierung
in umfangreichen Klassenbibliotheken– einer Reihe von Programmen, wie Compiler, Virtueller Maschine,
u.ä.– …
JEE – Was ist das? 12.03.07 Page 6TietoEnator © 2005
Java Platform Editions (1)
Standard Edition Enterprise Edition Micro Edition
– http://java.sun.com/
JEE – Was ist das? 12.03.07 Page 7TietoEnator © 2005
Java Platform Editions (2)
“… Standard Edition … lets you develop and deploy Java applications on desktops and servers, as well as today's demanding Embedded and Real-Time environments. Java SE includes classes that support the development of Java Web Service and provides the foundation for Java Platform, Enterprise Edition (Java EE).”
– http://java.sun.com/javase “… Enterprise Edition … is the industry standard for developing
portable, robust, scalable and secure server-side Java applications. Building on the solid foundation of Java SE, Java EE provides web services, component model, management, and communications APIs that make it the industry standard for implementing enterprise class service-oriented architecture (SOA) and next generation web applications.”
– http://java.sun.com/javaee
JEE – Was ist das? 12.03.07 Page 8TietoEnator © 2005
Java Platform Editions (3)
„… Micro Edition … is the most ubiquitous application platform for mobile devices across... It provides a robust, flexible environment for applications running on a broad range of other embedded devices, such as mobile phones, PDAs, TV set-top boxes, and printers. The Java ME platform includes … a broad range of built-in network protocols, and extensive support for networked and offline applications .. Applications based on Java ME software are portable across a wide range of devices, yet leveraging each device's native capabilities.”
– http://java.sun.com/javame/index.jsp
2004 lag die Zahl der Handys mit Java-Unterstützung bei 1,5 Milliarden, Schätzungen für 2006 gehen von 2,5 Milliarden Geräten aus
– http://www.java-tutor.com/seminare/java-schulung/j2me-seminar.html Auf Java ME wird hier nicht weiter eingegangen.
JEE – Was ist das? 12.03.07 Page 9TietoEnator © 2005
History of Product Naming (1)
Dec.1999Java 2 EE,
J2EE
Java 2 Platform, Enterprise Edition 1.0
20001.2
Aug.20011.3
Nov.20031.4
May 2006Java EE,
JEE
Java Platform, Enterprise Edition
5Enterprise
1996 (1.0)JavaJava1.0 .. 1.1.x
J2SEJava 2 Platform, Standard Edition1.2 .. 1.4.2
Sept.20045
Dec.2006Java SE,
JSE
Java Platform, Standard Edition6Standard
YearAbbr.NamingVersionEdition
JEE – Was ist das? 12.03.07 Page 10TietoEnator © 2005
History of Product Naming (2)
History of naming scheme:– http://de.wikipedia.org/wiki/Java_Platform,_Standard_Edition– http://de.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition
Motivation for changing naming scheme:– http://java.sun.com/developer/technicalArticles/JavaOne2005/
java_naming_aag.pdf
JEE – Was ist das? 12.03.07 Page 11TietoEnator © 2005
Product- and Developer version
The version numbers 6 and 1.6.0 are used to identify this release of the Java Platform.
Version 6 is the product version, while 1.6.0 is the developer version.
Sun: “The number 6 is used to reflect the evolving level of maturity, stability, scalability and security of Java SE.”
http://java.sun.com/javase/6/webnotes/version-6.html
JEE – Was ist das? 12.03.07 Page 12TietoEnator © 2005
JEE – Was ist das?Standard Edition
JEE – Was ist das? 12.03.07 Page 13TietoEnator © 2005
Java SE 6 Platform at a Glance
JEE – Was ist das? 12.03.07 Page 14TietoEnator © 2005
JRE and JDK
“Sun Microsystems provides two principal software products in the Java Platform, Standard Edition (Java SE) family”:
Java SE Runtime Environment (JRE) Java SE Development Kit (JDK) http://java.sun.com/javase/6/docs/technotes/guides/index.html
JEE – Was ist das? 12.03.07 Page 15TietoEnator © 2005
Java SE Runtime Environment (JRE)
Java ist ein Zwitter zwischen Compiler- und Interpretersprache:– Quellcode wird vom Compiler in einen plattformunabhängigen
Bytecode übersetzt.– Bytecode wird von einem plattformabhängigen Interpreter, der
Java Virtual Machine (JVM), ausgeführt.– Sun-Slogan: „Write once run anywhere.“
Java-Programme sind keine echten Executables, sondern nur in einer „Virtuellen Maschine“ lauffähig, die den vom Compiler erzeugten Bytecode interpretiert.
“The JRE provides the libraries, Java virtual machine, and other components necessary for you to run applets and applications written in the Java programming language. This runtime environment can be redistributed with applications to make them free-standing.”
JEE – Was ist das? 12.03.07 Page 16TietoEnator © 2005
Java SE Development Kit (JDK)
“The JDK includes the JRE plus command-line development tools such as compilers and debuggers that are necessary or useful for developing applets and applications.”
JEE – Was ist das? 12.03.07 Page 17TietoEnator © 2005
Java Language - Eigenschaften
Allzweck-Sprache, die nicht auf bestimmte Einsatzgebiete beschränkt ist.
Stark objektorientiert. Streng typisierend.
– Aufwertung ab Java 5 durch Einführung von „Generics“. Multithreading-fähig. Exception-Handling. Pragmatisches „Sprachdesign“. … ORDiX: „Mit Java ist Programmentwicklung nach dem Stand der
Technik möglich.“
JEE – Was ist das? 12.03.07 Page 18TietoEnator © 2005
JEE – Was ist das?Enterprise Edition
JEE – Was ist das? 12.03.07 Page 19TietoEnator © 2005
JEE-Spezifikation
JEE ist eine Spezifikation für eine Softwarearchitektur zur transaktionsbasierten Ausführung von in Java programmierten Anwendungen
Salopp: “JEE ist Java auf Serverseite für Unternehmensanwendungen.”. JEE basiert auf der Java Platform, Standard Edition (Java SE). Definiert Softwarekomponenten und Dienste, die primär in der
Programmiersprache Java erstellt werden. Stellt einen allgemein akzeptierten Rahmen zur Verfügung, auf dessen Basis
aus modularen Komponenten verteilte, mehrschichtige Anwendungen entwickelt werden können.
Klar definierte Schnittstellen zwischen den Komponenten und Schichten sollen dafür sorgen, dass Softwarekomponenten unterschiedlicher Hersteller interoperabel sind und dass die verteilte Anwendung gut skalierbar ist.
JEE ist kein Produkt und oder fertiges System. Die aktuelle Version der JEE-Spezifikation ist die Version 5.0.
– http://java.sun.com/javaee/technologies/javaee5.jsp
JEE – Was ist das? 12.03.07 Page 20TietoEnator © 2005
Application-Server (1)
Implementierungen der JEE-Spezifikation heißen Application-Server (Anwendungsserver, JEE-Server).
Bietet eine Laufzeitumgebung für den Server-Teil einer Client-Server Anwendung.
Hersteller können sich von SUN ihre Konformität zur JEE-Spezifikation bestätigen lassen.
– „The J2EE Compatibility Test Suite (CTS) is available for the J2EE platform. The J2EE CTS contains over 5,000 tests for J2EE 1.4 and will contain more for later versions. This test suite tests compatibility by performing specific application functions and checking results. For example,...“
– “Look for the J2EE brand which signifies that the specific branded product has passed the Compatibility Test Suite (CTS) and is compatible.”
– http://java.sun.com/javaee/overview/faq/j2ee.jsp#compatibility
JEE – Was ist das? 12.03.07 Page 21TietoEnator © 2005
Application Server (2)
Wichtigste Aufgaben eine Application-Servers:– Thread- und Prozeßmanagement– Unterstützung von Clustering (Verbindung mehrerer Instanzen
eines JEE-Servers auf einem oder mehreren Rechnern)– Gleichmäßige Verteilung von Anfragen and verschiedene JEE-
Server-Instanzen– Verwaltung von Systemresource (CPU, Speicher)– Verwaltung und Überprüfung von Sicherheitsanforderungen– Integration von Middleware-Diensten (Messaging-, Namens-,
Verzeichnisdienst)
JEE – Was ist das? 12.03.07 Page 22TietoEnator © 2005
Application Server (3)
Anbieter für Application-Server gibt es wie Sand am Meer. Den besten Application-Server gibt es nicht. Einige (populäre) Application-Server:
Geronimo (Apache)Application Server 10g (Oracle)
JOnAS (ObjectWeb)Websphere (IBM)
JBoss (JBoss)Enterprise Server (Borland)
Java System Application Server bzw. Glassfish (SUN, Referenzimpl.d.JEE-Spez.)
WebLogic (BEA)
freikommerziell
JEE – Was ist das? 12.03.07 Page 23TietoEnator © 2005
JEE – Was ist das?Enterprise Edition
Mehrschicht-Architekturen
JEE – Was ist das? 12.03.07 Page 24TietoEnator © 2005
Schichtenmodelle
Je nach dem wie und wo Darstellung, Logik und Datenhaltung einer Anwendung implementiert sind, unterscheidet man zwischen:
– Zwei-Schichten-Modell– Drei-Schichten-Modell– Vier-Schichten-Modell
Sonderfall:– Zweieinhalb-Schichten-Modell
Begriff:– Schicht = tier– Mehrschicht-Modell = multitier model
JEE – Was ist das? 12.03.07 Page 25TietoEnator © 2005
Zwei-Schichten-Modell (Allgemein)
Vorteile:– Einfach.– Datenbank verwaltet gleichzeitigen Zugriff
mehrerer Benutzer. Nachteile:
– Änderung der Geschäftslogik erfodert Neuinstallation aller Clients.
– Jeder Client benötigt eigene Datenbank-Anbindung.
– Bei „unsauberer“ Programmierung verschmelzen Präsentations- und Geschätslogik.
Beispiel:– Java-Programm mit Swing-Oberfläche und
Datenbankanbindung über JDBC.
JEE – Was ist das? 12.03.07 Page 26TietoEnator © 2005
Drei-Schichten-Modell (Allgemein)
Vorteile:– Präsentations- und Geschäftslogik getrennt.– Application-Server verwaltet Datenbank-
Zugriffe. Nachteile:
– Weiterhin Client-Installation notwendig.– Geschäftslogik muss gleichzeitig Anfrage
mehrerer Clients bearbeiten.– Aufwändige Programmierung (Multi-
Threading, Multi-User). Beispiel:
– Java-Client mit Swing-Oberfläche, C++-Server, embedded SQL und CORBA zur Client-Server-Kommunikation.
JEE – Was ist das? 12.03.07 Page 27TietoEnator © 2005
Vier-Schichten-Modell (Allgemein)
Vorteile:– Keine Client-Installation (nur
Browser).– Änderungen zentral auf dem
Application-Server.– Präsentations- und Geschäftslogik
getrennt. Nachteile:
– Präsentations- und Geschäftslogik müssen gleichzeitig mehrere Anfragen bearbeiten.
– Aufwändige Programmierung (Multi-Threading, Multi-User).
– Eingeschränkter Benutzerkomfort durch Browser.
JEE – Was ist das? 12.03.07 Page 28TietoEnator © 2005
Umsetzung der Schichten-Modelle in die JEE-Architektur (Einführung JEE-Terminologie)
EIS ClientApplication
Client Web Client Web Client
Java Server Page (JSP)/Servlet
EJB
EISEISEISEnterpriseInformation
System (EIS)
JSP/Servlet
2-Schichten-Architektur
3-Schichten-Architektur
2 ½ -Schichten-Architektur
4-Schichten-Architektur
Client Layer
Web Layer (Präsentations- u. ggf. Geschäftslogik )
Business Layer(Geschäftslogik)
Data Layer(Datenspeicherung)
JDBC
RMI (IIOP, JRMP)
HTTP, HTTPS HTTP, HTTPS
Enterprise JavaBean (EJB)
Ap
plic
atio
n-S
erve
r
JEE – Was ist das? 12.03.07 Page 29TietoEnator © 2005
Sonderfall: Zweieinhalb-Schichten-Modell
Weder Zwei-Schichten-Modell, da Anwendung nicht auf Cleint läuft und weder Drei-Schichten-Modell, da Präsentations- und Geschäftslogik nicht getrennt.
Vorteile:– Keine Client-Installation (nur Browser).– Änderungen zentral auf dem Application-Server.
Nachteile:– Präsentations- und Geschäftslogik können nicht von anderen
Anwendungen wiederverwendet werden.– Weitere Nachteile wie bei Vier-Schicht-Modell.
JEE – Was ist das? 12.03.07 Page 30TietoEnator © 2005
Typische JEE - Architektur
JEE – Was ist das? 12.03.07 Page 31TietoEnator © 2005
JEE – Was ist das?Enterprise Edition
Web Container
JEE – Was ist das? 12.03.07 Page 32TietoEnator © 2005
Web-Container (1)
Stellen Laufzeitumgebung für Servlets bzw. darauf aufsetzende Komponenten, wie JavaServer Pages, … bereit:
– Verwalten Servlets während ihrer Lebensspanne.– Leiten HTTP-Anfragen eines Clients an ein Servlet und liefert
dessen HTTP-Anwtorten zurück Sun beschränkt sich auf die Spezifikation und überläßt die
Implementierung anderen Web-Container können direkt im Application-Server (IBM WebSphere,
BEA Weblogic Server, Borland AppServer) oder als eigenständiges, in den Application Server integrierbares Produkt (Apache Tomcat, Jetty), implementiert werden
JEE – Was ist das? 12.03.07 Page 33TietoEnator © 2005
Web-Container (2)
häufig kommunizieren Clients nicht direkt mit einem Web-Container, sondern über einen Web-Server als Vermittler
Vorteile:– Sicherheitsgewinn
Weil aus Internet immer erreichbar, ist ein Web-Server auf Sicherheit hin entworfen worden.
– Lastverteilung Statischer Inhalt (z.B. Bilder) werden direkt vom Web-Server ausgeliefert. Anfragen können auf mehrere Web-Container verteilt werden.
JEE – Was ist das? 12.03.07 Page 34TietoEnator © 2005
JEE – Was ist das?Enterprise Edition
Web Container
Servlets
JEE – Was ist das? 12.03.07 Page 35TietoEnator © 2005
Servlets
Vollwertige Java-Klassen, die einen Web-Container als Laufzeitumgebung benötigen.
– Stellen eine Alternative zum Common Gateway Interface (CGI), PHP oder Active Server Pages (ASP) von Microsoft dar.
Ein Servlet nimmt HTTP-Anfragen entgegen und generiert HTTP-Antworten mit dynamischen Inhalten, wie HTML-Seiten, Grafiken, etc.
Bei der Implementierung kann auf andere Java-API (JDBC, ...) zugegriffen werden.
Die Basisklasse HttpServlet stellt Standard-Implementierungen für diverse Service-Methoden (service(), doXxx(), …), die nach Bedarf überschrieben werden können.
Jeder HTTP-Request wird von der Servlet-Engine in einem eigenen Thread ausgeführt.
JEE – Was ist das? 12.03.07 Page 36TietoEnator © 2005
Servlets - Beispiel (1)
JEE – Was ist das? 12.03.07 Page 37TietoEnator © 2005
Servlets - Beispiel (2)
JEE – Was ist das? 12.03.07 Page 38TietoEnator © 2005
Servlets - Wichigste Methoden HTTP-Protkoll (1.1) unterscheidet zwischen verschiedenen
Request-Anfragen:
Keine Impl.UNLINK
Keine Impl.LINK
doOption()Abfrage zulässiger Request-Typen für spezifiziertes Dokument OPTION
doTrace()Zum Protokoll-Debugging TRACE
doDelete()Client fordert Löschen eines Dokuments auf dem Server an DELETE
doPut()Client fordert Ablage von Dokumenten auf Server an PUT
doHead()Client fordert nur den Response-Header, nicht jedoch das resultierende Dokument ab
HEAD
doPost()Anforderung einhält zusätzliche Daten vom Client, z.B. Formulare POST
doGet()Anforderung einer Ressource, z.B. einer Webseite GET
Servlet-MethodeVerwendungRequest
JEE – Was ist das? 12.03.07 Page 39TietoEnator © 2005
Servlets - Lebenszyklus
Servlet-
code
Servlet
Zeit
Servlet-
code
1.HTTP-Request/-Response
HTTP-Request/-Responses
2.initialisieren init()
3.Anfragen bearbeiten service(), doGet(), ...
4.zerstören destroy())
Web-Container
1.laden u. instanziieren
class-Datei vom:- lokalen Dateisystem- entfernten Dateisystem- Netzwerkservice
Kursiv: Servlet-Methoden
JEE – Was ist das? 12.03.07 Page 40TietoEnator © 2005
Servlets - Weiterführende Themen
Web Deployment Descriptor (web.xml) Übergabe von Konfigurationsparametern aus Web Deployment Descriptor an
init(javax.servlet.ServletConfig) Cookies (Klasse Cookie()), zum Speichern und Übertragen von
Zustandsinformationen zwischen Browser und Web-Container.– Typischer Anwendungsfall: Zuordnung von HTTP-Anfragen zu einer
Sitzung. Senden von Binärdaten(-strömen) an Client, z.B. für Grafiken. Einbinden und Weiterleiten externer Ressourcen (RequestDispatcher()) Überwachung aktiver Sitzungen (HttpSessionListener()) Manipulation des Servlet-Ein-/Ausgaben (Request/Response) durch Servlet-
Filter Tipp: Thomas Stark, „Java EE5 – Einstieg für Anspruchsvolle“, Addison-
Wesley
JEE – Was ist das? 12.03.07 Page 41TietoEnator © 2005
JEE – Was ist das?Enterprise Edition
Web Container
JavaServer Pages (JSP)
JEE – Was ist das? 12.03.07 Page 42TietoEnator © 2005
JavaServer Pages (1)
Da ca.99% von Web-Anfragen erwarten eine Antwort im HTML-Format. Mit Servlets kann dies eine recht mühevolle Aufabe sein, weshalb Sun die Servlet-Spezifikation um JavaServer Pages (JSP) ergänzte.
JSP sind ein Hilfsmttel, um die Erstellung der Java-Klassen in den Hintergund zu verlagern und den Fokus auf die grafischen Elemente und HTML zu legen.
JSP betten Fragmente von Java-Code in HTML-Seiten ein (bei Servlets dagegen wird HTML-Code in Java eingebettet).
Alle JSP-Anweisungen werden von den Symbolen <% bzw. %> umschlossen, um den Java-Quelltext vom restlichen Markup (z.B. HTML) zu unterscheiden.
JEE – Was ist das? 12.03.07 Page 43TietoEnator © 2005
JavaServer Pages - Beispiel
JEE – Was ist das? 12.03.07 Page 44TietoEnator © 2005
JavaServer Pages (2)
Wird JSP zum erstmalig aufgerufen, setzt ein Hintergrundprozess des Web-Containers die JSP in ein Ad-Hoc-Servlet um, kompiliert es in Java-Bytecode (javac) und überrgibt es an die Servlet-Engine zur Ausführung in einem eigenen Thread.
Analog den Servlets können JSPs auf Ressourcen des Servers (Datenbanken, Dateien) zugreifen. Daneben gibt es eine einfache Schnittstelle um auf fertige Java-Komponenten (Beans, Enterprise Java Beans (EJB)) zuzugreifen.
Trotz begrenzter Syntax lassen sich mit JSPs mächtige Anwendungen erzeugen.
JEE – Was ist das? 12.03.07 Page 45TietoEnator © 2005
Erzeugen eines Ad-Hoc-Servlets aus einer JSP
Quelle: Kursunterlagen ORDiX AG Zwischenschritt der Erzeugung „echten“ Servlet-Codes nicht dargestellt
JEE – Was ist das? 12.03.07 Page 46TietoEnator © 2005
Generierter Servlet-Code
JEE – Was ist das? 12.03.07 Page 47TietoEnator © 2005
JavaServer Pages - Bausteine
mehrere Anweisungen möglichHTML-Ausgaben über vordefiniertes Object out (print())
<% Java-Code %> Scriplets
nur eine Java-Anweisung zulässig (keine Semikolon am Ende erlaubt)nur String, primitiver Datentyp und Object (toString())
<%= Java-Ausdruck %> Ausdrücke
zur Definition globaler Variablen und MethodenCode wird nicht bei jedem Request ausgeführt; Variablenwerte bleiben z.B. über mehrere Requests erhaltenCode kann von JSP-Ausdrücken und –Scriptlets aufgerufen werden
<%! Java-Code %> Deklarationen
werden anders als HTML-Kommentare (< -- … -- >) nicht zum Client übertragen und sind daher unter Sicherheitsaspekten vorzuziehen
<%-- Kommentartext --%> Kommentare
JEE – Was ist das? 12.03.07 Page 48TietoEnator © 2005
JavaServer Pages - Lebenszyklus
ähnlich wie bei Servlets; falls JSP noch nicht kompiliert vorliegt, wird JSP-Servlet zunächst generiert und übersetzt
Initialisierung– einmalig nach dem Laden und vor
der Bearbeitung der ersten Anfrage– jspInit() kann überschrieben
werden– Abarbeitung der JSP-Deklarationen
Bearbeitung der HTTP-Requests Zerstörung
– eimalig nach dem Beenden der Web-Anwendung
– alle HTTP-Requests müssen abgeschlossen sein
– jspDestroy() kann überschrieben werden
JEE – Was ist das? 12.03.07 Page 49TietoEnator © 2005
JavaServer Pages - Weiterführende Themen
(Java-)Kontrollstrukturen– if-else, switch, for, while-do, do-while
vordefinierte (Java-)Variablen– out, request, response, session, application, config, pageContext, page
Direktiven– <%@ NameDerDirektive attribut=„Wert1“ … %> mit NameDerDirektive =
page, include, taglib Arbeiten mit Benutzer-Sessions
– Hinterlegen von Werten zwischen mehreren HTTP-Anfragen– Kodieren von URLs (jsessionid), wenn Cookies vom Client nicht
akzeptiert Auslagern der Geschäftslogik in JavaBeans (interessant, da getrennte
Entwicklung des Web-Design und der Datenverarbeitung möglich) JSP-Tags/Tag-Library (jsp:include, jsp:forward, jsp:getProperty,
jsp:setProperty, jsp:useBean, …)
JEE – Was ist das? 12.03.07 Page 50TietoEnator © 2005
Vergleich: Servlets - JavaServer Pages
Gemeinsamkeiten:
– plattformunabhängig, serverunabhängig– Unterstützung von Session-Konzepten– Zugriff auf gesamtes Java-API (z.B. über JDBC auf alle Datenbanken)
Unterschiede:
– Servlet Layout (HTML) muss in Applikationslogik erzeugt werden Nur für Web-Seiten mit geringem Anteil an HTML-Code oder zur Erzeugung
von Nicht-HTML-Daten geeignet
– JSP Direkte Verwendung von HTML-Tags Logik kann in JavaBeans ausgelagert werden Getrennte Entwicklung von Web-Design und Datenverarbeitung möglich
JEE – Was ist das? 12.03.07 Page 51TietoEnator © 2005
JEE – Was ist das?Enterprise Edition
Web Container
Tag-Libraries
JEE – Was ist das? 12.03.07 Page 52TietoEnator © 2005
Tag Libraries (1)
Servlet und JSP
– verbinden HTML und Java um dynamische Webseiten zu erstellen– dabei spielt Markup in Form von Tags eine große Rolle; es werden aber
auch immer grundlegende Java-Kentnisse benötigt Tag Libraries (Taglibs, Tag-Bibliotheken)
– gestatten die Implementierung eigener Tags, bei deren Verwendung in einer JSP (zusätzlich zu HTML-Tags) kein Java-Code mehr sichtbar ist
– dem Web-Designer sollen beliebige Java-Objekte (Tag-Handler) transparent zur Verfügung gestellt werden
– Ziel: Tags sollen JSPs von “lästigem” Java-Code befreien, der sie häufig aufbläht und unübersichtlich macht
– Taglibs sind über Projektgrenzen hinaus wiederverwendbar (portabel)
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Tag Libraries (2)
Es existieren viele frei verfügbare Tag-Bibliotheken, die einen riesigen Satz an vordefinierter Funktionalität bereitstellen:
– JSP StandardTag Library (JSTL) Manipulation von Datenbanken Lesen von XML-Dateien Internationalisierung http://java.sun.com/products/jsp/jstl/
– Struts Tag Library Umsetzung des Model-View-Controller-Prinzips für JSP
– Regexp Tag-Library Reguläre Ausdrücke für JSP
Sammlung von Tag-Bibliotheken des Jakarta Apache Project:– http://jakarta.apache.org/taglibs/
JEE – Was ist das? 12.03.07 Page 54TietoEnator © 2005
Tag Libraries – JSP mit Tag (Beispiel)
Einbinden des Tag Library Decriptors (TLD) in die JSP mittels taglib-Direktive
NamensraumURL des Tag Library Descriptors
Verwendung des <date>-Tags
Aufruf der JSP im Browser
Vom Web-Container ausgelieferte Seite
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Tag Libraries - Implementierung
Um Tags benötigt man einen– Tag-Handler
In Java implementiert. Der Web-Container ersetzt zur Laufzeit das Tag in der JSP durch die
Ausgabe des zugeordneten Tag-Handlers.– Tag Library Descriptor (TLD)
Der TLD teilt dem Web-Container mit, welcher Tag-Handler das Tag (im Beispiel <data>) implementiert.
– Web Deployment Descriptor (web.xml) Hier nicht weiter beschrieben.
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Tag Libraries - Tag Handler Methoden
<html>
</html>
… evtl. weitere Tags oder Text ...
<tag>
</tag>
… weitere Tags oder Text ...
… evtl. weitere Tags oder text ...
JSP
neues Tag
Tag-Rumpf
doStartTag()
doInitBody()
doAfterBody()
doEndTag()
JEE – Was ist das? 12.03.07 Page 57TietoEnator © 2005
Tag Libraries – Tag Handler (Beispiel)
Klasse TagSupport liefert Default-Impl. von doStartTag(), doInitBody(), doAfterBody() und doEndTag()
Nur Methode doStartTag() wird überschrieben
Ausgabe des Tags (erscheint in HTML)
Returnwerte steuern Verhalten des Web-Containers, z.B. ob Tag-Rumpf auszuwerten ist oder nicht
JEE – Was ist das? 12.03.07 Page 58TietoEnator © 2005
Tag Libraries – Tag Library Descriptor (Beispiel)
Verknüpfung des neuen Tags <date> mit der Implementierung des Tag-Handlers
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Tag Libraries – Weiterführende Themen Einbinden der Tag-Bibliothek (öffentliche URL, Web Deployment Descriptor) Attribute, z.B. <montagsreihe:date format=„dd.MM.yyyy HH:mM“ />
– Tag-Handler als JavaBean mit Getter- und Setter-Methoden für Tag-Attribute
Tag-Rumpf manipulieren (Klasse BodyTagSupport) Script-Variablen
– Zugriff aus demTag-Handler von in JSPs erzeugten Variablen Tag-Kontext (findAncestorWithClass)
– Traversieren in der Tag-Hierarchie Entscheidungen
– <montagsreihe:if condition=„<%= isParamSet %>“ > <montagsreihe:then>vorhanden.</ montagsreihe:then> <montagsreihe:else>nicht vorhanden.</ montagsreihe:else> </montagsreihe:if>
Vordefinierte Variablen in Tag-Handlern (pageContext)
JEE – Was ist das? 12.03.07 Page 60TietoEnator © 2005
JEE – Was ist das?Enterprise Edition
Web Container
Struts
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts ist ein (komplexes) Open-Source-Framework für die
Präsentationsschicht von Java-Webanwendungen, das dem „architektonischen Muster“ von Model-View-Controller (MVC) folgt
ist nicht Bestandteil der JEE-Spezifikation von Sun, sondern ein im Jahr 2000 gegründetes Projekt der Apache Software Foundation (ASF)
ist De-facto der Standard für in Java entwickelte Web-Applikationen beschleunigt die Entwicklung von Webanwendungen, indem es HTTP-
Anfragen in einem standardisierten Prozess verarbeitet bedient sich dabei standardisierter Technologien wie Servlets, JSP,
JavaBeans, Resource Bundles … heißt übersetzt soviel wie „Stütze“ oder „Strebe“ http://struts.apache.org/
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts - Was ist ein Framework?
bedeutet (Programm-)Gerüst, Rahmen oder Skelett und bildet eine (Laufzeit-)Plattform für Anwendungen
gibt eine Anwendungsarchitektur vor, an der der Entwickler konkrete Implementierungen registriert, die dann durch das Framework, d.h. nicht durch die Implementierung, gesteuert werden („Umkehr der Kontrolle“)
wenn das Registrieren der Klassen nicht fest im Programmcode verankert ist, sondern wird „von außen“ konfiguriert wird, so spricht man auch von Dependency Injection
definiert den Kontrollfluss der Anwendung (Workflow) und die Schnittstellen für die Klassen
werden mit dem Ziel einer Wiederverwendung „architektonischer Muster“ für bestimmte Anwendungsbereiche entwickelt
– ein Web-Framework ist demzufolge ein Framework für Web-Anwendungen, dass sich auf Web-Technologien stützt
http://de.wikipedia.org/wiki/Framework
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts – Warum ein Framework benutzen? Die JEE ist eine Sammlung abgestimmter Technologien (Spezifikation), mit
denen sich unternehmensweite Lösungen erstellen lassen. Wie man die JEE-Technologien anwendet, ist lediglich in der Dokumentation und in Entwurfsmustern von Sun beschrieben; JEE selbst stellt jedoch keine Software dar, die man einfach einsetzen könnte.
Die Architektur vieler Web-Frameworks basiert auf JEE-Patterns wie z. B. dem Front-Controller (ActionServlet). Web-Frameworks erleichtern den Einsatz von JEE-Patterns, bspw. in dem Muster nicht manuell implementiert, sondern über eine Datei konfiguriert werden (struts_config.xml).
Gleichnis: http://www.oio.de/webframeworks.htm – Servlets und JSP gleichen einem Spaten, mit dem Erde ausgehoben
werden kann. Ein Spaten beherrscht man in nur wenigen Minuten. Danach ist man in der Lage ganze Baugruben auszuheben. Der Spaten ist preiswert, einfach zu bedienen und benötigt kaum Wartung.
– Ein Framework gleicht einem Bagger. Baggerfahren ist schwierig und erfordert einige Tage zum Lernen und Üben. Bevor ein Bagger eingesetzt werden kann, muß er zum Einsatzort gebracht werden. Und von Zeit zu Zeit muss ein Bagger auch betankt werden. Die Arbeit mit einem Bagger geht im Vergleich zu einem Spaten dafür wesentlich zügiger.
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts - Model-View-Controller (MVC)
MVC teilt eine Applikation in drei Schichten– Datenpräsentation und Geschäftslogik (Model)– Darstellung und Interaktion mit dem Benutzer (View)– Vermittler zwischen beiden Schichten (Controller)
Ziel: lose Kopplung zwischen Model und View, was dadurch erreicht wird, dass beide nur über den Controller kommunizieren
Vorteil: – ein flexibles Programmdesign, um spätere Änderungen oder
Erweiterungen einfach zu halten und die Wiederverwendbarkeit der einzelnen Komponenten zu ermöglichen
– sorgt bei großen Anwendungen für eine gewisse Übersicht und Ordnung durch Reduzierung der Komplexität
http://de.wikipedia.org/wiki/Model_View_Controller
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts - MVC Model 1 Architektur
http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html
JSP nimmt HTTP-Anfragen selbst entgegen und gibt HTTP-Antworten direkt an Client zurück
kein Servlet involviert zwar Separierung von
Präsentation (JSP) und Datenhaltung (JavaBean), aber Scriptlets in JSP enthalten noch Anwendungslogik
unklare Arbeitsteilung zwischen Web-Designer (JSP) und Anwendungsentwicker (Java)
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts - MVC Model 2 Architektur Servlet
– nimmt HTTP-Anfragen entgegen
– ruft Geschäftslogik auf, die das Ergebnis in JavaBeans ablegt
– Anfrage im letzten Schritt an JSP weiter
JSP– nur noch für Präsentation
zuständig; enthält keine Anwendungslogik mehr
– liefert HTTP-Antwort an Client auf Basis der JavaBean-Daten aus
klare Arbeitsteilung zwischen Web-Designer (JSP) und Anwendungsentwicker (Java)
JEE – Was ist das? 12.03.07 TietoEnator © 2005
JavaBeans
sind Software-Komponenten für Java entwickelten sich aus der Notwendigkeit, GUI-Klassen (AWT, Swing)
einfach instanziieren (Reflections) und übertragen (RMI) zu können werden als Container zur Datenübertragung verwendet haben einen parameterlosen Konstruktor speichern persistente Daten in Form von Attributen (properties) und
kapseln darauf basierende Anwendungslogik Attribute bestehen aus nicht-öffentlicher Instanzvariablen (private) und
öffentlichen Zugriffsmethoden (Getter- und Setter-Methoden) Zugriffsmethoden haben immer die Form setXxx() und getXxx() bzw.
isXxx() bei booleschen Attributen sind serialisierbar (Serializable) kann aus anderen JavaBeans aufgebaut sein müssen der JavaBeans Spezifikation genügen http://java.sun.com/products/javabeans/
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts – Komponenten (1)
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts – Komponenten (2)
JavaServer Pages (JSP)– dienen ausschließlich der Darstellung und enthalten deshalb
keine JSP-Scriptlets und –Deklarationen– legen Daten unter Verwendung der Bean-Tag-Bibliothek in
JavaBeans ab– generieren HTML-Antworten
Tag-Bibliotheken– kapseln die in den JSPs benötigte Logik– Struts wird mit vielen bereits vordefinierten Tag-Bibliotheken
ausgeliefert
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts – Komponenten (3)
ActionServlet– genau ein Servlet (Controller)– nimmt HTTP-Anfragen entgegen und füllt ActionForm mit HTTP-
Parametern– leitete HTTP-Anfragen an Action weiter– nimmt ActionForward von Action entgegen und leitet an nächste
Action bzw. JSP weiter– Forwarding wird durch Deklarationen in der struts_config.xml
gesteuert– Authentifizierung, Authorisierung– Logging– …
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts – Komponenten (4) ActionForm (auch FormBean)
– spezielle JavaBean, die alle benötigten Daten für die JSP und die Action enthält
– ist die Schnittstelle zwischen JSP und Action und wird über die struts-config.xml mit einem Formular in der JSP verknüpft
– wenn das Formular abgeschickt wird, wird die Bean durch das ActionServlet (noch bevor die Action ausgeführt wird) über die Setter-Methoden mit den entsprechenden Eingabewerten gefüttert
– die Übertragung der Daten übernimmt das Framework Action
– enthalten die (Geschäfts-)Logik– greifen auf Backend-Komponenten, wie etwa Datenbanken zu– lesen die in den ActionForms gesammelten Daten aus und schreiben ihre
Daten dorthin zurück– gibt eine ActionForward für die weitere Navigation zurück – der Forward hat einen bestimmten Namen über den das ActionServlet
anhand der struts-config.xml entscheidet, zu welcher Seite weitergeleitet werden soll
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts – Komponenten (5) ActionForward
– realisieren lose Kopplung zwischen JSPs und Anwendungslogik– einzelne Komponenten werden ausgetauscht, in dem das Ziel des
ActionForward umkonfiguriert wird Konfigurationsdatei struts-config.xml
– „Herz“ jeder Struts-Applikation, in der den Komponenten Aufgaben zugeteilt werden und der Workflow definiert wird
Ressourcen– Struts-Anwendungen enthalten i.d.R. keinen Text: alle
Zeichenketten werden über Ressouce-Dateien verwaltet und erst zur Laufzeit integriert
– Vorteile: Überarbeitung von Texten, ohne JSP zu editieren Gemeinsame benutzung von bezeichnungen über JSPs hinweg Unterstützung von Mehrsprachigkeit
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts - Ablauf eines Request (1)
ActionServlet(Controller)
ActionForm(Bean)
Action(Servlet steuertBusiness Logic)
BusinessLogic Bean
(Model)
JSP Form(View)
struts_config.xm l
javajavajavajavajava
javajavajavajavajavajavajavajavajavajava
javajavajavajavajavaJSP
Servlet Container
Struts Framew ork
1
7
5
3
4
2
6
HTTP-Request
Dataflow
Contentflow
HTTP-Response
blau - Bestandte il des Fram eworksgelb - von der Fram ework-Spezifikation geforderte E lem entegrün – n icht Bestandte il der Fram ework-Spezifikation
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Struts - Ablauf eines Requests (2)
1. Der vom Client gesendete Request wird vom ActionServlet entgegen genommen.
2. Das ActionServlet überträgt die Daten des Requests in die ActionForm, welche diese ggf. validiert.
3. Anschließend übergibt das ActionServlet das gefüllte ActionForm an die zugehörige Action.
4. Die Action kann die Daten der Form auch verwenden, um auf in JavaBeans implementierte Geschäftslogik zuzugreifen.
5. Anschließen wird über die Konfigurationsdatei struts_config.xml bestimnmt, welche JSP zur Darstellung des Ergebnisses verwendet werden soll.
6. Die JSP hat nun ihrerseits die Möglichkeit, auf die Daten der ActionForm und darin enthaltener Business-Logik Beans zuzugreifen, …
7. … um schließlich das Ergebnis darzustellen und die Kontrolle an den Client zurückzugeben.
JEE – Was ist das? 12.03.07 Page 75TietoEnator © 2005
JEE – Was ist das?Enterprise Edition
Web Container
JavaServer Faces (JSF)
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Faces
ein Web-Framework, das Bestandteil der JEE-Spezifikation ist als Antwort von Sun auf den Erfolg von Apache Struts zu verstehen konzeptionell eine Mischung aus Struts und Java-Swing es existieren zwei unabhängige Implementierungen der Spezifikation
– Referenzimplementierung von Sun http://java.sun.com/javaee/javaserverfaces/
– MyFaces-Implementierung der Apache Software Foundation http://myfaces.apache.org/
hat das Potenzial Struts zu verdrängen, da es aus dessen Fehlern lernen konnte (Spezifikation 1.1 wurde im Mai 2004 veröffentlicht)
Struts-Anwendungen können nach JSF-Anwendungen migriert werden
– http://struts.apache.org/1.x/struts-faces/
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Faces - Grundidee (1) stellen GUI-Komponenten für Buttons, Labels, Eingabefelder,
Checkboxen, etc. in Form von JSP-Tags zur Verfügung;– Faces Tag-Bibliothek: entält Core-Tags des Frameworks– HTML Tag-Bibliothek: enthält Faces-Pedants von HTML
Erweiterungen zu komplexeren Elementen wie Tabellen, Bäume, … sind möglich
die GUI-Komponeten sind für jede JSP als Baumstruktur am Server vorhanden (Analogie zu Java-Swing)
– für jedes Oberflächenelement gibt es im Hintergrund eine korrespondierendes UIComponent-Objekt, wie UIInput, UICommand, …
– Container-Komponenten, wie UIPanel, sorgen eigenständig für das Layout iher Sub-Komponenten
– die zu den GUI-Komponenten korrespondierenden Objekte können den Zustand des GUI-Elements, z.B. Eingabedaten, speichern
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Faces - Grundidee (2)
zur Darstellung der GUI-Komponeten werden diese über einen separaten Renderer serverseitig in HTML umgewandelt
der Renderer kann ausgetauscht werden; jedem GUI-Element kann sogar ein eigener Renderer zugewiesen werden
Kommunikation zwischen GUI-Elementen und verarbeitenden Funktionen findet über Event/Listener-Konzept statt
jeder GUI-Komponente kann ein Validator zugeordnet werden, der das Format eingegebener Daten prüft
Dialogabläufe werden in der Datei face-config.xml spezifiziert
– http://www.sigs.de/publications/js/2004/04/beneken_JS_04_04.pdf
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Faces - Grundidee (3)
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Faces - Ablauf eines Requests (1)
FacesServlet(Controller)
faces_config.xm l
JSP Form(View)
JSP
javajavajavajavajava
JSF-Tags
ActionListener
javajavajavajavajava
JavaBean(Model)
java
HTTP-Request
HTTP-Response
Events
Daten
Request-/Response-Daten
erzeugt
forw ard
benutzt
Servlet Container
JSF Framew ork
1
2
3 41
5
blau - Bestandte il des Fram eworksgelb - von der Fram ework-Spezifika tion geforderte E lem entegrün – n icht Bestandte il der Fram ework-Spezifikation
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Faces - Ablauf eines Requests (2)
1. Der vom Client gesendete Request wird vom FacesServlet entgegen genommen.
2. Das FacesServlet leitet den Request an die dafür konfigirierte JSP weiter.
3. Die JSP verwendet die JSF Tag Library und baut für jede JSP einen eigenen GUI-Komponentenbaum auf. Die Daten aus dem Request werden auf dem Komponentenbaum abgebildet.
4. Die Daten aus dem Komponentenbaum werden ihrerseits auf JavaBeans abgebildet.
5. Werden an der Oberfläche Buttons (oder vergleichbare Elemente) betätigt, werden über einen Event-Mechanismus die ActionListener aufgerufen, die an dem Element angemeldet sind.
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Faces - Weiterführende Themen
JSF Request Processing Lifecycle– Restore View, Apply Request Values, Process Validations,
Update Model Values, Invoke Application, Render Response Renderer Validatoren Events und Listener Dialogablauf
– Workflow in face-config.xml spezifizieren Datenaustausch mit JavaBeans
– Datenbindungssyntax Internationalisierung
JEE – Was ist das? 12.03.07 Page 83TietoEnator © 2005
JEE – Was ist das?Enterprise Edition
Web Container
Andere Frameworks
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Andere FrameworksRuby on Rails (1)
„Ruby on Rails“, kurz auch nur „Rails“ oder RoR im Sommer 2004 veröffentlicht; seit dem gibt es einen „Hype“ um RoR ist als Gegenstück zu schwergewichtigen Web-Frameworks zu
verstehen MVC-Framework DRY – „Don‘t repeat youself“
– Wissen zentral an einer Stelle halten, um Redundanz zu vermeiden
– angeblich enthalten Ruby-Programme und damit auch RoR-Anwendungen weniger Redundanz als Java-Programme
„scaffholding“ (Gerüstbau)– mit wenigen Kommandos wird Grundgerüst einer RoR-
Anwendung erstellt
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Andere FrameworksRuby on Rails (2)
• „Convention over configuration“
• Zuordnung der RoR-Komponenten über Namensgleichheit statt in aufwändigen XML-Konfigurationsdateien
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Andere FrameworksRuby on Rails (3)
• rechts: Zuordnung JEE- zu RoR-Welt
• Zukunft muss zeigen, ob RoR JEE verdrängen kann oder nur eine weitere Nischenlösung, insbesondere für kleinere Web-Anwendungen, wird.
• http://www.rubyonrails.org/
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Andere FrameworksGroovy on Grails Groovy
– ist Skriptsprache mit Java-ähnlicher Syntax, die um dynamische Elemente angereichert wurde
– wird vor Ausführung in Java-Bytecode übersetzt und ist daher in einer JVM lauffähig ist
Groovy on Grails– wird mit dem Ziel entwickelt, viele Effekte von “Ruby on Rails” auf
die JEE-Plattform zu übertragen– leichte Einarbeitung durch einheitliche Vorgaben (“convention
over configuration”)– teilautomatiserte Erstellung von Artefakten aus Vorlagen
(“scaffholding”)– Eingestzte Technologien und Produkte: Java EE, Groovy, Spring,
Hibernate, Sitemash, Prototype, Dojo, Junit, Canoo WebTest http://grails.org/
JEE – Was ist das? 12.03.07 TietoEnator © 2005
Andere Frameworks
Web-Frameworks gibt es wie “Sand am Meer” http://java-source.net/open-source/web-frameworks
– Spring– Tapestry– Cocoon
– … und viele andere mehr
JEE – Was ist das? 12.03.07 TietoEnator © 2005
JEE – Was ist das?
Ende Teil 1