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