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