Hauptseminar Web Services Sprachen I: Water und JWIG Andreas Töllich TU München, Lehrstuhl für Informatik 12. Juni 2003, München TUM Hauptseminar „Web Services“ – Water und JWIG Folie 1 Einführung: 1000 Fragenzeichen Plattform SOAP Clients Parser Werkzeuge TUM Hauptseminar „Web Services“ – Water und JWIG SOAP, WSDL, UDDI Interoperabilität Programmiersprachen ROI, TOC Folie 2 Einführung: Lösungsansätze Water Objektorientierte Programmiersprache XML Basis www.waterlang.org „radikaler Ansatz“… JWIG Framework www.jwig.org Java Basis „konservativer Ansatz“… TUM Hauptseminar „Web Services“ – Water und JWIG Folie 3 Übersicht Water Architektur, ConciseXML, Standards JWIG Architektur, Konzepte, Java Zusammenfassung Vergleich Water und JWIG TUM Hauptseminar „Web Services“ – Water und JWIG Folie 4 Übersicht Water Architektur, ConciseXML, Standards JWIG Architektur, Konzepte, Java Zusammenfassung Vergleich Water und JWIG TUM Hauptseminar „Web Services“ – Water und JWIG Folie 5 Water: Einführung Geburtsort MIT „Learn once, use anywhere“ Erweiterung von XML: ConciseXML XML Einfluss von Scheme, Lisp, Smalltalk, JavaScript, HTML und XML TUM Hauptseminar „Web Services“ – Water und JWIG Folie 6 Water: Architektur trad. Web Services Web Service JSP HTML Java Script JAXP Xalan Axis XML XSLT SOAP TUM Hauptseminar „Web Services“ – Water und JWIG JAXR WSDL UDDI Folie 7 Water: Web Services mit Water Gemeinsame Sprache über Schichten hinweg Keine APIs zw. algorithmischer- und Datensprache Bietet eigene „Standards“ zu SOAP und Co. Einheitliche Methode Programmlogik, Präsentation, Daten zu verarbeiten Abkehr vom MVC-Paradigma REST-Architektur TUM Hauptseminar „Web Services“ – Water und JWIG Folie 8 Water: Architektur Water Server als Servlet Water Server Server i http URI Server i+1 http URI Internet Intranet http URI Water Runtime Client i TUM Hauptseminar „Web Services“ – Water und JWIG Water Runtime Client i+1 Folie 9 Water: ConciseXML XML 1.0 ist reine Syntax Wie können damit dynamische Anwendungen entwickelt werden? Water = Erweiterung von XML ConciseXML Funktionalitäten Präsentation der Daten Manipulation der Daten Abbildung von Daten TUM Hauptseminar „Web Services“ – Water und JWIG Folie 10 Water: ConciseXML Objekt-orientierte Sprache Repräsentation Objekte Vor.: Eliminierung der Ambiguität von XML Konzepte der OOP Prototyp System Mehrfachvererbung Laufzeitvererbung XHTML Tags sind Water Objekte TUM Hauptseminar „Web Services“ – Water und JWIG Folie 11 Water: ConciseXML: Objektmodellierung Ambiguität Möglichkeit 1 <Student> <name>Miguel</name> <surname>Ezquivel<surname> <age>24</age> </Student> Möglichkeit 2 <Student name=“Miguel“ surname=“Ezquivel“ age=“24“> TUM Hauptseminar „Web Services“ – Water und JWIG Folie 12 Water: ConciseXML: Beispiele <defclass Student name=string surname=string age=int> <defmethod show> Attribute <H1><do .name/></H1> </> <defmethod birthday> Methodendefinition <do .age.<plus 1/>/> </> Klassendefinition </defclass> <set a_Student = <Student name="Miguel" surname="Ezquivel" age=24 /> /> Instantiierung <a_Student>.<get “name”> <h1>a_Student.show</h1> a_Student.birthday TUM Hauptseminar „Web Services“ – Water und JWIG Objektzugriff Folie 13 Water: ConciseXML: Sprachmerkmale Ausdrücke Flusskontrolle Boolsche Ausdrücke <if>, <do>, <for each> <is>, <equal> getter-, setter-Anweisungen <set>, <get> Anmerkungen als constraints relativ geringer Sprachumfang TUM Hauptseminar „Web Services“ – Water und JWIG Folie 14 Water: ConciseXML: Beispiele <if> cond1 cond2 else </if> action1 <do> action2a action2b </> action3 if Abfrage <student name=”Miguel” age="24"/>.<get "name"/> get Anweisung <thing foo=5/>.<equal <thing foo=5/> /> x TUM Hauptseminar „Web Services“ – Water und JWIG Vergleichsoperator Folie 15 Water: Standards Water XML XSLT Water Transform XPath Water Path SOAP Water Protocol WSDL Water Web UDDI Water Registry Web Services TUM Hauptseminar „Web Services“ – Water und JWIG Folie 16 Water: Standards: Water Web vs. SOAP Zugriff auf entfernte Ressourcen Ressourcen werden via URI adressiert <set my_homepage = www.<web http://www.toellich.net/>/> my_homepage.<request/> Auch SOAP Nachrichten können erzeugt werden Definition eigener Protokolle möglich TUM Hauptseminar „Web Services“ – Water und JWIG Folie 17 Water: Standards: Water Protocol vs. WSDL WSDL beschreibt Interface einer entfernten Ressource Jede Ressource ist ein Objekt, jedes Objekt ist Instanz einer Klasse Entwurf einer Klasse zu einer Ressource Angabe von Argumentennamen, Typen, Bedingungen in der Klassendefinition TUM Hauptseminar „Web Services“ – Water und JWIG Folie 18 Water: Standards: Water Path vs. XPath XML Teilbäume werden mit XPath adressiert Water Path: Adressierung von Objekten student.surname student.<get_with_value „surname“ „Miguel“ returns=’all’> Konvertierung von XPath in URIs möglich TUM Hauptseminar „Web Services“ – Water und JWIG Folie 19 Water: Zusammenfassung ConciseXML kein Bruch zw. Programmiersprache und Markup Keine APIs benötigt (vgl. Java) Vermischung von Daten, Präsentations- und Geschäftslogik Fehlen von „best practices“ und Unterstützung durch Community, Industrie TUM Hauptseminar „Web Services“ – Water und JWIG Folie 20 Übersicht Water Architektur, ConciseXML, Standards, Web Services JWIG Architektur, Konzepte, Java Zusammenfassung Vergleich Water und JWIG TUM Hauptseminar „Web Services“ – Water und JWIG Folie 21 JWIG: Übersicht Framework, Java-basiert, Java 1.2.x Forschungsprojekt des BRICS Forschungszentrums, Universität Aarhus Open Source, GNU Public License Übersetzer, Laufzeitsystem, Analysemodul Laufzeitsystem als DSO für Apache verfügbar TUM Hauptseminar „Web Services“ – Water und JWIG Folie 22 JWIG: Architektur TUM Hauptseminar „Web Services“ – Water und JWIG Folie 23 JWIG: Fokus JWIG adressiert zwei essentielle Aspekte bei der Entwicklung von Web Services und Anwendungen Dynamische Konstruktion von Dokumenten XML und XHTML Session Management HTTP zustandslos TUM Hauptseminar „Web Services“ – Water und JWIG Folie 24 JWIG: Sessions Zentrale Bedeutung von Sessions Session = Folge von Interaktionen zw. Client und Server Session code (server-seitiger Thread) Client XHTML TUM Hauptseminar „Web Services“ – Water und JWIG XHTML Folie 25 JWIG: Sessions Klasse Service JWIG Anwendung Innere Klasse Session Request, der Session startet Thread Show() Receive() Exit() Interaktion mit Client Innere Klasse Session TUM Hauptseminar „Web Services“ – Water und JWIG Folie 26 JWIG: Template System Ausgabe von JWIG Anwendungen: XHTML mittels template Sytem erzeugt Trennung von Geschäfts- und Präsentationslogik Laufzeit XML Ausdruck Zeichenfolgen gaps Vorlagen XML Ausdruck gaps Java Code gaps XML template TUM Hauptseminar „Web Services“ – Water und JWIG Folie 27 JWIG: Template System: Beispiel TUM Hauptseminar „Web Services“ – Water und JWIG Folie 28 JWIG: Sonstige Merkmale Garbage collector für nicht mehr benötigte Sessions Validierung von Formularfeldern mit Powerforms (Boolsche Logik, reguläre Ausdrücke) SOAP: ein analyzer überprüft erzeugte SOAPenvelopes auf Gültigkeit WSDL, UDDI etc.: Java APIs und Tools TUM Hauptseminar „Web Services“ – Water und JWIG Folie 29 JWIG: statische Analyse Vorhandensein, richtige Verwendung der gaps Richtige Reihenfolge der Eingabefelder Gültigkeit von XHTML Dokumenten TUM Hauptseminar „Web Services“ – Water und JWIG Folie 30 JWIG: Java Integration Keine Konkurrenz, sondern Erweiterung Java als ideale Basis (garbage collector, sandbox Modus, Unicode, RSA, classloader, threads etc.) JWIG Anwendungen werden vollständig in Java übersetzt TUM Hauptseminar „Web Services“ – Water und JWIG Folie 31 JWIG: Zusammenfassung Keine neuer Sprache zu erlernen Nahtlose Integration in Java Neues Konzept für Sessions Vorbildcharakter: analyzer Template System Trennung von Geschäftsund Präsentationslogik MVC Pattern (Model = XML, View = templates, Controller = sessions) TUM Hauptseminar „Web Services“ – Water und JWIG Folie 32 Übersicht Water Architektur, ConciseXML, Standards, Web Services JWIG Architektur, Konzepte, Java, Web Services Zusammenfassung Vergleich Water und JWIG TUM Hauptseminar „Web Services“ – Water und JWIG Folie 33 Vergleich: Water und JWIG Radikaler Ansatz Entgegen dem Trend Konservativer Ansatz Folgt als Java Framework dem Trend All-in-one Philosophie Wenig zukunftsträchtig Breitere Erweiterungen müssen vom Hersteller implementiert werden (closed source) Leichte Integration in bestehende Systeme Profitiert von Entwicklungen in der Java Welt Revolutionärer Ansatz (REST) „nur“ ein weiteres Framework TUM Hauptseminar „Web Services“ – Water und JWIG Akzeptanz Folie 34 Vielen Dank für Ihre Aufmerksamkeit Fragen TUM Hauptseminar „Web Services“ – Water und JWIG Folie 35 To be or not to be… XML? <set the_date= <HTML> Today is <datetime.today/></HTML> /> TUM Hauptseminar „Web Services“ – Water und JWIG Folie 36