XOTcl an Object-Oriented Scripting Language Gustaf Neumann Uwe - - PowerPoint PPT Presentation

xotcl an object oriented scripting language
SMART_READER_LITE
LIVE PREVIEW

XOTcl an Object-Oriented Scripting Language Gustaf Neumann Uwe - - PowerPoint PPT Presentation

XOTcl an Object-Oriented Scripting Language Gustaf Neumann Uwe Zdun Department of Information Systems Specification of Software Systems Vienna University of Economics University of Essen Vienna, Austria Essen, Germany


slide-1
SLIDE 1

XOTcl– an Object-Oriented Scripting Language

Gustaf Neumann Uwe Zdun Department of Information Systems Specification of Software Systems Vienna University of Economics University of Essen Vienna, Austria Essen, Germany gustaf.neumann@wu-wien.ac.at uwe.zdun@uni-essen.de First European Tcl/Tk User Meeting, 15/16th June 2000

slide-2
SLIDE 2

XOTcl– an Object-Oriented Scripting Language June, 2000

Overview

◆ XOTcl = Extended Object Tcl ◆ XOTcl is freely available from:

http://nestroy.wi-inf.uni-essen.de/xotcl

◆ Outline: – Scripting and object-orientation, – XOTcl high-level language constructs, – Example: design pattern-based design of an XML interpreter, – xoComm HTTP implementation: performance comparison with Apache.

Gustaf Neumann, Uwe Zdun University of Essen Slide 1

slide-3
SLIDE 3

XOTcl– an Object-Oriented Scripting Language June, 2000

Tcl-Strengths

Important Ideas in Tcl: ◆ Fast & high-quality development through component-based approach ◆ 2 levels: “System Language” and “Glue Language” ◆ Flexibility through . . . – dynamic extensibility, – read/write introspection, – automatic type conversion. ◆ Component-Interface through Tcl-Commands ◆ Scripting language for glueing

Gustaf Neumann, Uwe Zdun University of Essen Slide 2

slide-4
SLIDE 4

XOTcl– an Object-Oriented Scripting Language June, 2000

Motivation for XOTcl

◆ Extend the Tcl-Ideas to the OO-level. ◆ Just “glueing” is not enough! Goals are . . . – Architectural support – Support for design patterns (e.g. adaptations, observers, facades, . . . ) – Support for composition (and decomposition) ◆ Provide flexibility rather than protection: – Introspection for all OO concepts – All object-class and class-class relationships are dynamically changeable – Structural (de)-composition through Dynamic Aggregation – Language support for high-level constructs through powerful interceptors (Filters and Per-Object Mixins)

Gustaf Neumann, Uwe Zdun University of Essen Slide 3

slide-5
SLIDE 5

XOTcl– an Object-Oriented Scripting Language June, 2000

Filters

◆ A filter is a special instance method registered for a class C. Every time an object of class C receives a message, the filter is invoked automatically. ◆ Three parts, each optional: – pre-part, – call to next, invokes:

  • filter-chain,
  • actual called method.

– post-part. ◆ Filter-inheritance.

a1 Class A

call result

  • pre-part

post-part

Filter_1 Filter_2 Filter_3 } filter-chain Class A

Gustaf Neumann, Uwe Zdun University of Essen Slide 4

slide-6
SLIDE 6

XOTcl– an Object-Oriented Scripting Language June, 2000

Example: Simple Filter

Class A A a1 A instproc Filter-1 args { puts "pre-part of Filter-1" next puts "post-part of Filter-1" } A filter Filter-1 a1 set x 1 ;# Class Definition ;# Instance a1 of A ;# Filter instance method ;# Filter registration ;# Method invocation

Applications: Trace facility, Composite Pattern, Proxy Pattern, Observers . . .

Gustaf Neumann, Uwe Zdun University of Essen Slide 5

slide-7
SLIDE 7

XOTcl– an Object-Oriented Scripting Language June, 2000

Per-Object Mixins

◆ A per-object mixin is a class which is mixed into the precedence order of an object in front of the precedence order implied by the class hierarchy.

Motivation: ◆ Model behavior of individual objects (decorator). ◆ Handle orthogonal aspects not only through multiple inheritance. ◆ Intrinsic vs. extrinsic behavior, similar to roles. Applications: timing, statistics, persistence, life-cycle, chain of responsibility, adapter

A Mix1 Object

next method invocation next

anObject

instance-of proc1 proc1 proc2 next . . . per-object mixin Gustaf Neumann, Uwe Zdun University of Essen Slide 6

slide-8
SLIDE 8

XOTcl– an Object-Oriented Scripting Language June, 2000

Example Code for Per-Object Mixins

Class A A instproc proc1 {} { puts [self class]; next } A instproc proc2 {} { puts [self class]; next } Class Mix1 Mix1 instproc proc1 {} { puts [self class]; next } A anObject anObject mixin Mix1 anObject proc1 anObject proc2 ;# Class definition ;# Method definition ;# Method definition ;# Class definition ;# Method definition ;# Instantiation of class A ;# Mixin registration ;# -> results in output "::Mix1 ::A" ;# -> results in output "::A"

Gustaf Neumann, Uwe Zdun University of Essen Slide 7

slide-9
SLIDE 9

XOTcl– an Object-Oriented Scripting Language June, 2000

Dynamic Object Aggregations and Nested Classes

◆ Nesting though namespaces: Classes and objects in XOTcl can contain

  • ther classes/objects.

→ Dynamic Object Aggregation resembles Part-of relationship in a dynamic and introspective fashion. → Nested Classes reduce interference of independently developed program structures. ◆ Class nesting and aggregation semantics are handled through XOTcl

  • bject system (including built-in methods for deep copy and deep move).

Gustaf Neumann, Uwe Zdun University of Essen Slide 8

slide-10
SLIDE 10

XOTcl– an Object-Oriented Scripting Language June, 2000

Example Code: Nested Classes/Dynamic Object Aggregation

Class Agent Class Agent::Head Class Agent::Body Agent instproc init args { ::Agent::Head [self]::head ::Agent::Body [self]::body } Agent myAgent puts "Children: [myAgent info children]" myAgent::head destroy puts "Children: [myAgent info children]" ;# Class definition ;# Nested classes ;# Constructor aggregates two ;# objects dynamically ;# Object creation ;# Output: head body ;# Agent looses his head ;# Output: body

Gustaf Neumann, Uwe Zdun University of Essen Slide 9

slide-11
SLIDE 11

XOTcl– an Object-Oriented Scripting Language June, 2000

Further Functionalities provided in XOTcl

◆ Assertions reduce interface and reliability problems caused by dynamic typing: – Design by contract: invariants and pre-/post-conditions for methods, – per-class and object-specific assertions. ◆ Meta-Data enhances self-documentation of objects and classes. ◆ Automatic Name Creation with autoname. ◆ Abstract Classes, ◆ Parameters.

Gustaf Neumann, Uwe Zdun University of Essen Slide 10

slide-12
SLIDE 12

XOTcl– an Object-Oriented Scripting Language June, 2000

Example: XML Parser/Interpreter

◆ Constructs a composite object structure from XML documents ◆ OO-implementation using design patterns, based on TclXML, around 120 lines (including example visitors and reusable pattern) ◆ Changeability and Adaptability through: – dynamics, – introspection, – patterns in hot spots, – interceptors per-object and filter, ◆ Patterns:

Wrapper Facade, Builder, Composite, Interpreter, Visitor, Observer, . . .

◆ Extensibility through new visitors, observers

Gustaf Neumann, Uwe Zdun University of Essen Slide 11

slide-13
SLIDE 13

XOTcl– an Object-Oriented Scripting Language June, 2000

Partial Design of the XML Parser/Interpreter

AbstractNode XMLNode Client XMLParser may be used as per-object mixin TreeVisitor XMLVisitor VisitObserver PrintObserver TclXMLParser Functions TclXML NodeBuilder ...

Interpreter/Composite Wrapper Facade Visitor Per-Object Observer Builder

XMLBuilder Gustaf Neumann, Uwe Zdun University of Essen Slide 12

slide-14
SLIDE 14

XOTcl– an Object-Oriented Scripting Language June, 2000

Assessments

◆ size 73 lines (including two more visitors), ◆ + 22 lines for the Wrapper Facade and 25 lines for the Composite, ◆ Reuseable Composite implementation and reuseable TclXML wrapper, ◆ Changeability and Adaptability through: – dynamics, – introspection, – patterns in hot spots, – interceptors per-object and filter, ◆ Extensibility through new visitors.

Gustaf Neumann, Uwe Zdun University of Essen Slide 13

slide-15
SLIDE 15

XOTcl– an Object-Oriented Scripting Language June, 2000

Speed Comparison: XOTcl based HTTP Server vs. Apache

  • 10

20

Clients

−20

  • 20

40

60

80

100

Seconds

Single Processor 466MHz Celeron

10MBit Clients

  • 10

20

Clients

−20

  • 20

40 60

80

100

Seconds

Dual 200 MHz PPro Server 10MBit Clients

  • 10

20

Clients

−20

  • 20

40

60

80

100

Seconds

Single Processor 466MHz Celeron

Local Clients

XOTcl Server Apache 1.3.6 Ratio (Percent)

◆ Basic functionality of HTTP/1.1 in around 250-400 lines of XOTcl code ◆ 1-20 simultanoues client sessions issuing each 76 HTTP requests. → Modern CPUs are fast enough to execute even complex applications in

  • bject-oriented scripting language with sufficient speed.

Gustaf Neumann, Uwe Zdun University of Essen Slide 14

slide-16
SLIDE 16

XOTcl– an Object-Oriented Scripting Language June, 2000

Summary and Conclusions

◆ XOTcl provides high-level language constructs for software composition, ◆ tailored for the use with scripting applications: – dynamics, – (read/write) introspection, – flexible glueing of (preexisting) components. ◆ Combination of: scripting, object-orientation, and high-level language constructs ⇒ Flexible composition of software systems. ⇒ Coping with changes at runtime/design time.

Gustaf Neumann, Uwe Zdun University of Essen Slide 15

slide-17
SLIDE 17

XOTcl– an Object-Oriented Scripting Language June, 2000

More XOTcl Material

◆ Gustaf Neumann, Uwe Zdun: Filters as a Language Support for Design Patterns in Object-Oriented Scripting Languages, Proceedings of the 5th Conference on Object-Oriented Technologies and Systems (COOTS´99), San Diego, May 3-9, 1999. ◆ Gustaf Neumann, Uwe Zdun: Enhancing Object-Based System Composition through Per- Object Mixins, Proceedings of Asia-Pacific Software Engineering Conference (APSEC‘99), Takamatsu, Japan, December 6-10, 1999. ◆ Gustaf Neumann, Uwe Zdun: Towards the Usage of Dynamic Object Aggregations as a Form

  • f Composition, Proceedings of Symposium of Applied Computing (SAC‘00), Como, Italy,

March 19-21, 2000. ◆ Gustaf Neumann, Uwe Zdun: High-Level Design and Architecture of an HTTP-Based Infrastructure for Web Applications, Word Wide Web Journal, Baltzer, early 2000. ◆ More on http://www.xotcl.org, http://nestroy.wi-inf.uni-essen.de/xotcl

Gustaf Neumann, Uwe Zdun University of Essen Slide 16