Title: Hauptseminar Web Services Sprachen I: Water und JWIG
1Hauptseminar Web ServicesSprachen I Water und
JWIG
Andreas Töllich TU München, Lehrstuhl für
Informatik 12. Juni 2003, München
2Einführung 1000 Fragenzeichen
?
Plattform
SOAP, WSDL, UDDI
SOAP Clients
Interoperabilität
Parser
Programmiersprachen
Werkzeuge
ROI, TOC
3Einführung Lösungsansätze
- Water
- ObjektorientierteProgrammiersprache
- XML Basis
- radikaler Ansatz
- JWIG
- Framework
- Java Basis
- konservativer Ansatz
www.waterlang.org
www.jwig.org
4Übersicht
- Water
- Architektur, ConciseXML, Standards
- JWIG
- Architektur, Konzepte, Java
- Zusammenfassung
- Vergleich Water und JWIG
5Übersicht
- Water
- Architektur, ConciseXML, Standards
- JWIG
- Architektur, Konzepte, Java
- Zusammenfassung
- Vergleich Water und JWIG
6Water Einführung
- Geburtsort MIT
- Learn once, use anywhere
- Erweiterung von XML ConciseXML ? XML
- Einfluss von Scheme, Lisp, Smalltalk, JavaScript,
HTML und XML
7Water Architektur trad. Web Services
Web Service
JSP
Xalan
JAXR
JAXP
Axis
SOAP
WSDL
UDDI
XML
Java Script
XSLT
HTML
8Water 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
9Water Architektur
Water Server als Servlet
Water Server
http URI
Server i
Server i1
http URI
http URI
Water Runtime
Water Runtime
Client i
Client i1
10Water 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
11Water 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
12Water ConciseXML Objektmodellierung
Ambiguität
Möglichkeit 1 ltStudentgt ltnamegtMiguellt/namegt
ltsurnamegtEzquivelltsurnamegt ltagegt24lt/agegt lt/Stud
entgt
Möglichkeit 2 ltStudent nameMiguel
surnameEzquivel age24gt
13Water ConciseXML Beispiele
ltdefclass Student namestring surnamestring ageintgt ltdefmethod showgt ltH1gtltdo .name/gtlt/H1gt lt/gt ltdefmethod birthdaygt ltdo .age.ltplus 1/gt/gt lt/gt lt/defclassgt
Attribute
Methodendefinition
Klassendefinition
ltset a_Student ltStudent name"Miguel"
surname"Ezquivel" age24 /gt /gt
Instantiierung
lta_Studentgt.ltget namegt lth1gta_Student.showlt/h1gt a
_Student.birthday
Objektzugriff
14Water ConciseXML Sprachmerkmale
- Ausdrücke
- Flusskontrolle ltifgt, ltdogt, ltfor eachgt
- Boolsche Ausdrücke ltisgt, ltequalgt
- getter-, setter-Anweisungen ltsetgt, ltgetgt
- Anmerkungen als constraints
?relativ geringer Sprachumfang
15Water ConciseXML Beispiele
ltifgt cond1 action1 cond2 ltdogt
action2a action2b
lt/gt else
action3 lt/ifgt
if Abfrage
ltstudent nameMiguel age"24"/gt.ltget "name"/gt
get Anweisung
ltthing foo5/gt.ltequal ltthing foo5/gt /gt x
Vergleichsoperator
16Water Standards
XML
Water Transform
XSLT
Water Path
XPath
Water Protocol
SOAP
Water Web
WSDL
Water Registry
UDDI
Web Services
17Water Standards Water Web vs. SOAP
- Zugriff auf entfernte Ressourcen
- Ressourcen werden via URI adressiert
- Auch SOAP Nachrichten können erzeugt werden
- Definition eigener Protokolle möglich
ltset my_homepage www.ltweb http//www.toellich.ne
t/gt/gt my_homepage.ltrequest/gt
18Water 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
19Water Standards Water Path vs. XPath
- XML Teilbäume werden mit XPath adressiert
- Water Path Adressierung von Objekten
student.surname student.ltget_with_value
surname Miguel returnsallgt
- Konvertierung von XPath in URIs möglich
20Water 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
21Übersicht
- Water
- Architektur, ConciseXML, Standards, Web Services
- JWIG
- Architektur, Konzepte, Java
- Zusammenfassung
- Vergleich Water und JWIG
22JWIG Ü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
23JWIG Architektur
24JWIG 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
25JWIG Sessions
- Zentrale Bedeutung von Sessions
- Session Folge von Interaktionen zw. Client und
Server
Session code (server-seitiger Thread)
XHTML
XHTML
Client
26JWIG Sessions
Klasse Service
JWIG Anwendung
Innere Klasse Session Show() Receive() Exit()
Request, der Session startet
Thread
Interaktion mit Client
Innere Klasse Session
27JWIG 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
Java Code
gaps
gaps
XML template
28JWIG Template System Beispiel
29JWIG 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
SOAP-envelopes auf Gültigkeit - WSDL, UDDI etc. Java APIs und Tools
30JWIG statische Analyse
- Vorhandensein, richtige Verwendung der gaps
- Richtige Reihenfolge der Eingabefelder
- Gültigkeit von XHTML Dokumenten
31JWIG 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
32JWIG Zusammenfassung
- Keine neuer Sprache zu erlernen
- Nahtlose Integration in Java
- Neues Konzept für Sessions
- Vorbildcharakter analyzer
- Template System ? Trennung von Geschäfts- und
Präsentationslogik - MVC Pattern(Model XML, View templates,
Controller sessions)
33Übersicht
- Water
- Architektur, ConciseXML, Standards, Web Services
- JWIG
- Architektur, Konzepte, Java, Web Services
- Zusammenfassung
- Vergleich Water und JWIG
34Vergleich Water und JWIG
Radikaler Ansatz Entgegen dem Trend
Konservativer Ansatz Folgt als Java Framework dem
Trend
? Breitere Akzeptanz
All-in-one Philosophie ?Wenig zukunftsträchtig
Erweiterungen müssen vom Hersteller implementiert
werden (closed source)
Leichte Integration in bestehende
Systeme Profitiert von Entwicklungen in der Java
Welt
nur ein weiteres Framework
Revolutionärer Ansatz (REST)
35Vielen Dank für Ihre AufmerksamkeitFragen
?
36To be or not to be XML?
ltset the_date ltHTMLgt Today is
ltdatetime.today/gtlt/HTMLgt /gt