JAVA™ 2 Enterprise Edition Modellierung von Internet

Werbung
JAVA™ 2
Enterprise
Edition
Modellierung
von Internetanwendungen
Thorsten Möller
[email protected] -dresden.de
Betreuer: Mike Fischer
Hauptseminar - Neue JAVA Technologien
SS2001 – 10. Mai 2001
TU Dresden – Institut für Softwaretechnologie
1
Vortragsgliederung
I.
II.
III.
IV.
V.
VI.
VII.
Einführung
J2EE – Architektur
J2EE – Technologien
J2EE – Einordnung / Vergleich
Modellierung von Internetanwendungen
J2EE – Implementierungen
J2EE in der Praxis
2
2
Einführung
Was ist J2EE?
Verschiedenste Spezifikationen, auf deren Grundlage
Softwareprodukte, insbesondere Internetanwendungen,
entwickelt werden können. Basis: J2SE
Warum wurde es entwickelt?
Internet schuf Bedarf für neue Anwendungstypen.
Folge: Entwicklung einer Vielzahl spezieller APIs.
Resultat: Divergenz
Also: Schaffung einer kohärenten Plattform, die die
einzelnen JAVA-Entwicklungsrichtungen (-APIs) integriert.
Entwicklung hin zu komponentenbasierten Anwendungen.
3
Satz viel zu kurz um die Frage nach dem Was vollständig beantworten zu
können. Ganzer Vortrag beantwortet letztlich Frage nach dem Was?
Basis J2SE: benötigt also immer eine J2SE Runtime
Divergenz: zunehmend fehlender Zusammenhalt, Lücken,
Sun stellte fest, dass JAVA mehr ist als die Summe seiner einzelnen Teile
und begann eine kohärente Plattform zu schaffen, die die einzelnen Teile
integriert.
3
Einführung – Historie/Zukunft
Wie alt ist J2EE?
Etwas mehr als 1 Jahr. Erste Version 1.0 im
Dezember 1999. Seit dem nur Enterprise Java
Beans mit „major“ Update.
Zukunft?
J2EE Version 1.3 voraussichtlich im Quartal 3/2001
Signifikante Änderungen: ereignisgesteuerter
Programmfortschritt, Interoperabilität zwischen
Containern, Konnektoren zu Legacy-Anwendungen,
verbesserte Persistenzschicht, erweiterter XML
Support, u.a.
4
Anmerkend muß man hinzufügen, daß einige der in der Spezifikation
enthaltenen APIs schon vor der Veröffentlichung von J2EE existierten, also
älter sind. Die Versionsnummer der ersten Version wurde in Anlehnung an
J2SE 1.2 gewählt.
Ereignisgesteuerter Programmfortschritt: Message Driven Beans,
application event listeners
Konnektoren zu legacy Anwendungen: z.B. zu Systemen wie SAP R/3,
People Soft, Baan
Verbesserte Persistenzschicht: EJB2.0 mit verbesserter container managed
persistence und objektrelationaler Abbildung
4
J2EE Architektur (1)
J2EE folgt dem Konzept der n-tier-Architekturen
? (physische) Trennung von Datenhaltung,
Anwendungs- und Darstellungsschicht (-logik)
? Anwendungslogik eher nach Funktionen
untergliedert als physisch
HTML FORM
(Browser)
Applikations komponente
Remote
System
Java Applet
(Browser)
Applikations komponente
DB
Andere Clients
Applikations komponente
XML
Dokumente
5
Bei 2-tier und 3-tier Architekturen findent man im allgemeinen eine
physische Trennung der Schichten vor, d.h. es existieren Clients
(Darstellungsschicht), Applikationsserver (Anwendungsschicht, im
englischen häufig auch „business logic“ genannt) und die
Datenhaltungsschicht.
Diese Architektur entspricht weitestgehend auch dem Model View
Controller (MVC) Konzept, mit den spezifischen Erweiterungen, daß
verschiedene View-Typen existieren können und nicht ein monolithischer
Controller existiert, sonder dieser funktionell aufgespalten sein kann.
Durch die funktionale Aufspaltung der Anwendungsschicht ergeben sich
eine Reihe von Vorteilen: Modularität hilft beim beherrschen von
komplexen Systemen, Wiederverwendung durch Objektorientierung und
genau spezifizierte Schnittstellen, Flexibilität, d.h. muß die Funktionalität
geändert oder erweitert werden, ist davon im Idealfall immer nur eine
Komponente betroffen.
5
J2EE Architektur (2)
zentraler Begriff: Container
Def.: Ein J2EE Container ist eine Java 1.2 Laufzeitumgebung für Anwendungskomponenten mit dem
Zweck, Zugriff auf die J2EE APIs (Dienste) zu
erhalten.
Web Container
EJB Container
Clients
Servlets
JSPs
Dienste
EJBs
Dienste
J2EE Applikatiosserver
6
Die J2EE Spezifikation enthält nicht nur die Typen Web- und EJBContainer, vielmehr sind zwei weitere Typen enthalten: ein AppletContainer für Java-Applets und einen Applikations-Client-Container für
Standard-Java-Anwendungen. Ihre Bedeutung ist jedoch untergeordnet.
Wichtig ist in diesem Zusammenhang auch, daß für Komponenten innerhalb
der Container gewisse Einschränkungen gelten. EJBeans dürfen nicht:
-Eigene Threads erzeugen bzw. nutzen
-Keine Netzwerksockets benutzen
-Das Package java.io benutzen, also z.B. direkt in Dateien schreiben oder
daraus lesen
-Native Klassen aufrufen
6
J2EE Dienste
Dienst / API
Java Database Connectivity (JDBC) 2.0 Extension
Typ
Container
(Erweiterung von JDBC 2.0, zusätzlich u.a. Verbindungs-Pooling,
Distributed Transactions)
Remote Method Invocation over Inter-ORB Protocol
(RMI-IIOP) 1.0
Enterprise Java Beans (EJB) 1.1
Container
Komponenten-Vertrag
Java Servlets 2.2
Container
Java Server Pages (JSP) 1.1
Container
Java Message Service (JMS) 1.0
Container
Java Naming and Directory Interface (JNDI) 1.2
Container
Java Transaction API (JTA) 1.0
deklarativ
Java Mail 1.1
Container
Weitere Dienste:
Life Cycle, Security, Load Balancing, Fail-Over
weitere Technologien:
Java Secure Socket Extension (JSSE), JavaIDL, XML
7
Die in der Tabelle aufgeführten Dienste sind Bestandteil der J2EE
Spezifikation. Zu beachten ist, daß es sich bei allen APIs um
Spezifikationen handelt, also insbesondere keine Implementierungen.
Deklarative Dienste werden nicht explizit aufgerufen, so wie beispielsweise
bei den Container-Diensten, sondern implizit. Für Transaktionen bedeutet
dies z.B. das der Container das Ausführen von Methoden in Transaktionen
einbettet, wenn für diese Methoden die Ausführung innerhalb einer
Transaktion deklariert wurde. Die Deklaration erfolgt innerhalb des
„Deployment Descriptor“.
7
Zusammenspiel von
Container und Diensten
Jede Komponente schließt mit dem Container einen „Vertrag“,
festgehalten im Deployment Descriptor.
? Deklarationen außerhalb von Komponenten
? Existieren für EJBs, Web Applikationen
<?xml version="1.0"?><!DOCTYPE application PUBLIC "-//Sun Microsystems,
Inc.//DTD J2EE Application 1.2//EN" "http://[...].dtd">
<application >
<display-name>Auch eine J2EE Applikation hat einen Namen</display-name>
<module><ejb>ejbs.jar</ejb></module>
<module>
<web>
<web-uri>refrigerator .war</web-uri>
<context-root>/refrigerator</context-root>
</web>
</module>
<security-role><role-name>editors </role-name></security -role>
</application>
8
8
J2EE Einordnung / Vergleich
Bekannteste Alternativen: CORBA, COM+
Alle verfolgen das Ziel, Entwickler von „Low-Level-Themen“ zu befreien. Entwickler soll sich auf Anwendungslogik konzentrieren können.
CORBA galt bis zum erscheinen von J2EE als der Standard für
Enterprise Systeme. Bedingt durch langwierige Standardisierungsprozesse hat Bedeutung zu Gunsten von J2EE nachgelassen. CORBA
ist aber nach wie vor „Erste Wahl“ in nicht Java Umgebungen.
COM+ ist geschlossener Standard von Microsoft. Verfügbar nur für
Windows 2000. Erreicht damit nicht den „Mainstream“.
Mit dem Microsoft Transaction Server wurde 1996 erstmals eine
Komponentenruntime verfügbar.
COM+ gilt als sehr performant.
9
Typische Low-Level-Themen: verteilte Programmierung,
Netzwerkprotokolle, Komponentenlokalisierung, Datenrepräsentation, ...
9
Modellierung v.
Internetanwendungen (1)
Problem: Bisher keine Beschreibungsmöglichkeit für
Interaktion und Beziehungen zwischen dynamischen
Webseiten und Anwendungslogik.
Ansatz: Erweiterung der UML durch die
Web Application Extensions
Nutzen Erweiterungsmöglichkeiten der UML um Webspezifische Elemente zu definieren, z.B.:
Formulare, aktive Seiten, Servlets, Skript Objekte,
u.a.
10
Das Thema Modellierung von Internetanwendungen soll auf den nächsten
Folien von zwei Seiten kurz beleuchtet werden: Erstens, Notationsformen
und Beschreibungsmöglichkeiten (auf Basis der UML) zur Bildung von
Modellen. Zweitens, Überlegungen bzgl. des Design die der Spezifik von
Enterprise Anwendungen gerecht werden.
Anzumerken ist auch noch, daß derzeit durch die UML keine direkte
Unterstützung für EJBs existiert, die deren spezifische Struktur und
Semantik darstellen kann. Es wird aber durch den „Sun Community
Process“ an einer Erweiterung gearbeitet.
Bei den Web Application Extensions handelt es sich bisher nur um einen
Vorschlag. Er wurde erstmals im Juli 1999 veröffentlicht und hat seit Ende
1999 keine Aktualisierungen erfahren; im übrigen ist die aktuellste Version
noch 0.91. Deshalb ist es meines Erachtens fraglich, ob er zu einem
Standard erhoben wird. Auch gibt es, zumindestens auf den Web-Seiten von
Rational keine Informationen, inwieweit zukünftige Versionen der UML
diesbezüglich Erweiterungen erfahren.
Erweiterungsmöglichkeiten die die UML bereitstellt, sind Stereotypen,
Constraints und Merkmale.
10
Modellierung von
Internetanwendungen (2)
Beispiel: statische Modellierung „Einkaufskorb“
checkout.html
DoCheckout
Session
1
+endSession()
<< link >>
1
<< redirect >>
<< build >>
orderSummary.html
buildOrderSummary.jsp
Cart
+getItemCount()
1 +checkout()
+addItem()
+removeItem()
+getItems()
+tax()
+shipping()
+total()
11
11
Modellierung von
Internetanwendungen (3)
Beispiel: dynamische Modellierung „Einkaufskorb“
checkout.html
DoCheckout
buildOrderSummary.jsp
: Session
orderSummary.html
: Cart
Check out
Call
endSession()
checkout()
Redirect
Write Content
Display
Confirm
12
Auffällig: Sequenzdiagramm enthält nicht nur Methodenaufrufe, so wie man
es bei Klassenobjekten gewohnt ist.
12
Modellierung von
Internetanwendungen (4)
J2EE Anwendungen von ihrem Wesen her verteilt:
? Gefahr, daß Kommunikation Berechnung dominiert
? Kommunikation bringt immer Overhead mit sich
? Netzwerkoperation kann fehlschlagen
? Meist synchrone Kommunikation
Also: Overhead minimieren!
Annäherung an dieses Ziel durch die:
„Kunst der optimalen Granularität.“
13
Overhead ergibt sich aber nicht nur durch Kommunikation, auch der
Container in dem die Komponenten „leben“ erzeugt Overhead.
Netzwerkoperation kann fehlschlagen: kostet zusätzliche Zeit.
Synchrone Kommunikation ist in diesem Kontext gleichzusetzen mit der
Tatsache, daß bei entfernten Methodenaufrufen, das aufrufende Objekt meist
untätig wartet, bis die Antwort auf die Anfrage vom entfernten Objekt
zurückkommt.
Das Wort Kunst mag machen Informatiker verunsichern, hat es doch wenig
mit ingenieurtechnischen Vorgehen gemein. In diesem Fall ist es aber
absolut angebracht, da es keine absoluten immer richtigen Regeln geben
kann, die hier zum Erfolg führen.
13
Modellierung von
Internetanwendungen (5)
Granularität:
Komponenten optimal in ihrer Größe gestalten.
Funktionalität optimal aufspalten.
Regeln (Vorschlag von IBM):
Anwendungslogik nicht in Entity EJBeans, als
Datenquelle ansehen!
Einführen von „Data Objects“, die serialisierbar
sind und Netzwerk traversieren
Spezielle Session EJBeans entwickeln, die als
Fassade für Clients agieren und über einen callby-value-Ansatz Data Objects liefern
14
14
Modellierung von
Internetanwendungen (6)
15
In diesem Diagramm ist dargestellt, wie der Designvorschlag von IBM sich
prinzipiell umsetzen läßt.
15
„How to build a complete
J2EE Application“ (1)
Bestandteile (Module) einer J2EE Applikation:
- Web Applikationen
- Enterprise Java Beans
- Client Applikationen
- Meta-Informationen
„Deployment Descriptor“
- Shared Libaries
Zusammengefügt (-gepackt) in ein Archiv/Datei mit der
Erweiterung .ear
16
Zweck der nächsten drei Folien ist darzustellen, wie die verschiedenen Teile
einer J2EE-Anwendung zusammengehören bzw. zusammengefügt werden
und welche Schritte erfolgen müssen, um letztlich eine ausführbare
Anwendung vorliegen zu haben.
Nicht jede J2EE Applikation muß notwendiger weise alle Bestandteile
enthalten. So ist es z.B. denkbar, daß keine Client-Applikationen enthalten
sind, wenn es sich um rein Web-basierte J2EE Anwendungen handelt.
Der Deployment Descriptor enthält umfangreiche Informationen, die
entweder mandatorischen oder andererseits optionalen Charakter besitzen.
Beispiele sind: Applikations-/Bean-/Klassen-/Verzeichnis-Name,
Beschreibungen, Zugriffsbeschränkungen, Transaktionsattribute,
Initialisierunswerte.
16
Struktur einer J2EE Applikation
Komponenten
EJB
EJB
Servlet
JSP
Client
Module
ejb-jar.xml
EJBs
Web Appl.
Client Appl.
(.jar)
(.war)
(.jar)
web.xml
J2EE Applikation (.ear)
application -client.xml
application.xml
17
17
„How to build a complete
J2EE Application“ (2)
Schritte zur startbereiten Anwendung:
1. Komponentenentwicklung
2. Komponenten zu Modulen zusammenfassen
3. Module zur Anwendung zusammenfügen
4. Anwendung auf Server installieren
2. bis 4. erfolgt sinnvoller weise Werkzeugunterstützt.
18
Schritte 2. bis 4. erfolgen sinnvoller weise Werkzeugunterstützt. Dies
können Werkzeuge sein, die im Applikationsserver enthalten sind oder über
Dritthersteller erhältlich sind. Die Werkzeuge wirken hauptsächlich
unterstützend bei der Erstellung des jeweiligen Deployment-Deskriptor und
beim Installieren der Applikation auf dem Server. Prinzipiell lassen sich
diese Schritte auch manuell durchführen, erfordern dann aber zwa ngsläufig
einen höheren Einarbeitungsaufwand.
18
J2EE in der Praxis
Sun J2EE Reference Implementation
Bestandteil der J2EE Distribution
Validierung der Spezifikationen, also Beweis daß
die Spezifikationen implementierbar sind.
Es wird kein Support geleistet, deshalb untersagt
Sun Einsatz und Weitervertrieb.
?
Nicht für Praxiseinsatz vorgesehen!
19
19
J2EE Implementierungen
Komerzielle CTS zertifizierte Implementierungen
Hersteller
ATG Dynamo
AppServer
BEA Web Logic
Server
EJB 1.1, JSP 1.1, Servlet 2.2, JTS/JTA Sicherheit
1.01, JDBC 1.2, JNDI 1.2, JMS 1.0.2
Werzeug unterstützung
(Stand 04/01)
Management
Platform*
Sonstiges
?
Dynamo Se curity API
(?)
(?)
1, 2, 3, 4, 5
-
?
ACLs, SSLv3
JBuilder,
Visual Age
Web
2, 3, 4, 5,
6, 7, 8 u.a.
BEA Cluster
Architecture
HTTP 1.1, EJB 2.0 (beta )
Borland
AppServer
?
HTTPS, SSL
JBuilder
Web, GUI
2, 3, 4, 5, 6
VisiBroker &
CORBA Integr.
Hitachi
Cosminexus
?
(?)
JBuilder
GUI
2, 3, 4
Object Transaction
Monitor
?
HTTPS, SSL
Forté for Java,
MM UltraDev
ja, SNMP Adapter
alle m. JDK
1.2.2/1.3
SAP, PeopleSoft,
CICS Connector
HTTPS, SSL
Visual Age
Web, SNMP,
Tivoli
?
HTTPS
Visual Café,
JBuilder,
VisualAge
ja
2, 3, 4
Adaptive Runtime
Technology TM
?
SSLv3
SilverStream
IDE
GUI
2, 3, 4, 5, 6
SAP, PeopleSoft,
Lotus Notes Conn.
SSL
PowerJ
GUI
2, 3, 4, 6
4 Editionen
HP Bluestone
EJB 2.0
IBM Websphere
?
UDDI, SOAP, WSDL
iPlanet
AppServer
SilverStream
AppServer
Sybase
EAServer
HTTP 1.1
?
2, 3, 4, 5, Standard/advanced
6, 7, 8 u.a.
Edition
* 1: Solaris Intel, 2: Solaris Sparc , 3: HP-UX 11.0, 4: Windows NT, 5: Linux, 6: IBM AIX 4.3.3, 7: IBM OS/400, 8: IBM OS/390
20
CTS: mehr als 5000 Tests, im wesentlichen Kompatibilitätstests die
spezielle API- Funktionen aufrufen und die Ergebnisse auswerten
UDDI - Universal Description, Discovery, and Integration
An XML-based specification for a registry, or catalog, of businesses and the
services they provide. It contains white pages (addresses and contacts),
yellow pages (industry classification) and green pages (desciption of
services). Led by Ariba, IBM, Microsoft and others, UDDI is designed to
enable software to automatically discover available services on the Web.
UDDI rides on top of the SOAP protocol, which invokes services on the
Web.
SOAP - Simple Object Access Protocol
A protocol from Microsoft, IBM and others for accessing services on the
Web. It employs XML syntax to send text commands across the Internet
using HTTP. Similar in purpose to the COM and CORBA distributed object
systems, but lighter weight and less programming intensive (at least
initially), SOAP is expected to become widely used to invoke services
throughout the Web. Because of its simple exchange mechanism, SOAP can
also be used to implement a messaging system. SOAP is supported in COM,
DCOM, Internet Explorer and Microsoft's Java implementation.
WSDL - Web Services Description Language
A common language to describe the capabilities of Web services.
20
J2EE Implementierungen
Open Source bzw. kostenlose Implementierungen
Projekt
EJB 1.1, JSP 1.1, Servlet 2.2,
JTS/JTA 1.01, JDBC 1.2, JNDI 1.2,
JMS 1.0.2
Enhydra
Enterprise
?
Jboss
?
Sicherheit
Orion***
(Stand 04/01)
Management
Platform*
Sonstiges
(?)
alle m. JDK
1.2.2/1.3
Betaversion
HTTPS, SSL
JBuilder,
Visual Age
GUI
alle m. JDK
1.2.2/1.3
LGPL
?
HTTPS, SSL
JRun Studio
Web
2, 3, 4,
5, 6
Allaire
ClusterCATS
?
HTTPS, SSL
(?)
GUI
2, 3, 4,
5, 7,8
Clustering,
Load Balancing
HTTPS, SSL
(?)
SOAP
Macromedia
Jrun**
Werzeug unterstützung
teilw. EJB 2.0, Servlet 2.3
*1: Solaris Intel, 2: Solaris Sparc , 3: HP-UX 11.0, 4: Windows NT, 5: Linux, 6: IBM AIX 4.3.3, 7: IBM OS/400, 8: FreeBSD 4 . x
** Zu Entwicklungszwecken kostenlos, aber mit Einschränkungen auf max. 3 gleichzeitige Verbindungen
*** für Entwicklungszwecke und nichtkommerzielle Anwendung kostenlos
Ausführliche Reviews von J2EE Applikationsservern unter:
http://www2.theserverside.com/reviews/index.jsp
21
Enhydra:
www.enhydra.org
JBoss:
www.jboss.org
Jrun:
Orion:
www.allaire.com/Products/JRun/
www.orionserver.com
21
Debuggen von
Serveranwendungen (1)
Probleme:
1. Anwenung auf entfernten Rechner (Server) gestartet
2. Anwendungen laufen über einen Langen Zeitraum
3. Gleicher Code verhält sich untersch. auf verschiedenen Systemen
Erster Lösungsansatz: „Do-It-Yourself“
System.out.println()
System.err.println()
Methode: Alles ausgeben was von Interesse sein könnte.
Bis zu gewissen Komplexitätsgrad so machbar, aber stößt schnell an
seine Grenzen, da Auswertung schlecht „online“ beobachtbar und
u.U. zu viele Informationen ausgewertet werden müssen. Zu langsam!
22
Zu 1.: Nur auf dem Server ist die Anwendung „so komplett wie möglich“,
auf lokalen Testrechnern hat man meist nur Teile der Anwendung im Test.
Zu 2.: Wie verhalten sich lang laufende Anwendungen bzgl.
Ressourcenbelastung, z.B. Speicherverbrauch.
Zu 3.: Server haben meist eine andere Hardwareausstattung (sie müssen
meist leistungsfähiger sein) als Entwicklungsrechner.
22
Debuggen von
Serveranwendungen (2)
Gesucht: „Remote Debugger“
Anforderungen:
- Entfernte Virtual Machine (VM) kontaktieren und dort gestartete
Anwendungen debuggen
- Entfernte VM und Anwendung starten und debuggen
- Gleichzeitig Verbindung zu mehreren entfernten VMs aufnehmen
Lösung: IBM Distributed Debugger
23
23
Zusammenfassung
J2EE ist auf gutem Weg um zu der Middleware Platform
der nächsten Jahre zu werden. Alle bedeutenden
Hersteller haben die Spezifikation umgesetzt und treiben
Entwicklung voran.
Zitate:
„J2EE is the standard for application-server middleware today.“
„If you don't have J2EE compliance, you'd better be Microsoft; if
you're not Microsoft, you better get J2EE compliance real quick.“
„We're definitely starting to use EJBs, although I will profess I don't
know what EJBs are - but I'm trying.“
24
24
Literaturverzeichnis
?
?
?
?
?
?
?
?
?
Building Web Applications with UML,
Jim Conallen; Addison Wesley 2000
Professional Java Server Programming J2EE Edition,
Allamaraju, Avedal, ...; wrox Press 2000
Modellierung von Internetanwendungen mit der UML,
Hartmut Kocher, OBJEKTspektrum 1/2001 S. 14-21
Java 2 Platform, Enterprise Edition;
http://java.sun.com/j2ee
Serving Up Java 2 Enterprise Edition;
http://www.informationweek.com/834/ooj2ee.htm
The State of The J2EE Application Server Market;
http://www2.theserverside.com/resources/StateOfTheServerSide.jsp
Swappable J2EE servers gain ground;
http://www.infoworld.com/articles/hn/xml/01/01/29/010129hnenabler.xml
A Debate at the Austin Foundation for Object-Oriented Technology (AFOOT)
http://www.flashline.com/content/debate.jsp?sid=989346667953-2367608627-151
Building Layered Architectures for EJB Systems
http://www7.software.ibm.com/vad.nsf/data/document4359?OpenDocument&p=1&
BCT=1&Footer=1
25
25
Diskussion
26
26
Herunterladen