JAVA™ 2 Enterprise Edition Modellierung von Internet

Werbung
JAVA™ 2
Enterprise
Edition
Modellierung
von Internetanwendungen
Thorsten Möller
[email protected]
Betreuer: Mike Fischer
Hauptseminar - Neue JAVA Technologien
SS2001 – 10. Mai 2001
TU Dresden – Institut für Softwaretechnologie
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
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
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
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)
Applikationskomponente
Remote
System
Java Applet
(Browser)
Applikationskomponente
DB
Andere Clients
Applikationskomponente
XML
Dokumente
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
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
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
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
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
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
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
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
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
Modellierung von
Internetanwendungen (6)
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
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
„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
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
J2EE Implementierungen
Komerzielle CTS zertifizierte Implementierungen (Stand 04/01)
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
Werzeugunterstützung
Manage ment
Platform*
Sonstiges
?
Dynamo Security 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
HP Bluestone
?
HTTPS, SSL
Forté for Java,
MM UltraDev
ja, SNMPAdapter
alle m. JDK
1.2.2/1.3
SAP, PeopleSoft,
CICS Connector
HTTPS, SSL
Visual Age
Web, SNMP,
Tivoli
Visual Café,
JBuilder,
VisualAge
ja
2, 3, 4
Adaptive Runtime
Technology TM
EJB 2.0
IBM Websphere
?
UDDI, SOAP, WSDL
2, 3, 4, 5, Standard/advanced
6, 7, 8 u.a.
Edition
iPlanet
AppServer
?
HTTPS
SilverStream
AppServer
?
SSLv3
SilverStream
IDE
GUI
2, 3, 4, 5, 6
SAP, PeopleSoft,
Lotus Notes Conn.
SSL
PowerJ
GUI
2, 3, 4, 6
4 Editionen
Sybase
EAServer
HTTP 1.1
?
* 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
J2EE Implementierungen
Open Source bzw. kostenlose Implementierungen (Stand 04/01)
Projekt
EJB 1.1, JSP 1.1, Servlet 2.2,
JTS/JTA 1.01, JDBC 1.2, JNDI 1.2,
JMS 1.0.2
Sicherheit
WerzeugManage unterstützung ment
Platform*
Sonstiges
Enhydra
Enterprise
?
HTTPS, SSL
(?)
(?)
alle m. JDK
1.2.2/1.3
Betaversion
Jboss
?
HTTPS, SSL
JBuilder,
Visual Age
GUI
alle m. JDK
1.2.2/1.3
LGPL
SOAP
Macromedia
Jrun**
?
HTTPS, SSL
JRun Studio
Web
2, 3, 4,
5, 6
Allaire
ClusterCATS
Orion***
?
HTTPS, SSL
(?)
GUI
2, 3, 4,
5, 7,8
Clustering,
Load Balancing
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
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
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
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
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
Diskussion
26
Herunterladen