+ All Categories
Home > Documents > AmbientTalk: Object-oriented Event-driven programming in...

AmbientTalk: Object-oriented Event-driven programming in...

Date post: 13-May-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
53
Tom Van Cutsem Stijn Mostinckx Elisa Gonzalez Boix Jessie Dedecker Wolfgang De Meuter Programming Technology Lab Vrije Universiteit Brussel Brussels, Belgium XXVI Intl. Conf. of the Chilean Computer Science Society, Iquique, Chile, Nov 2007 AmbientTalk: Object-oriented Event-driven programming in Mobile Ad hoc Networks
Transcript
Page 1: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Tom Van Cutsem Stijn Mostinckx Elisa Gonzalez Boix Jessie Dedecker Wolfgang De Meuter

Programming Technology LabVrije Universiteit Brussel

Brussels, Belgium

XXVI Intl. Conf. of the Chilean Computer Science Society, Iquique, Chile, Nov 2007

AmbientTalk: Object-orientedEvent-driven programming in

Mobile Ad hoc Networks

Page 2: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Context

2

Hardware

Software

Pervasive Computing (Mobile Networks)

Object-oriented programming languages

Page 3: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Context

2

Hardware

Software

Pervasive Computing (Mobile Networks)

Object-oriented programming languages

Page 4: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Mobile Ad hoc Networks

3

Page 5: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Mobile Ad hoc Networks

3

Volatile Connections

Page 6: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Mobile Ad hoc Networks

3

Volatile Connections

Scarce Infrastructure

Page 7: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Loose Coupling

4

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

Page 8: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Loose Coupling

4

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

Page 9: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Loose Coupling

4

asynchronous

send

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

Page 10: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Loose Coupling

4

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

Page 11: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Loose Coupling

4

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

Page 12: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Loose Coupling

4

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

Page 13: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Loose Coupling

4

asynchronous

receive

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

Page 14: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Loose Coupling

5

enables ad hoc anonymous collaborations

Decoupling communication in Space

Page 15: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Loose Coupling

5

enables ad hoc anonymous collaborations

Decoupling communication in Space

Page 16: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Loose Coupling

5

enables ad hoc anonymous collaborations

Decoupling communication in Space

provide service

Page 17: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Loose Coupling

5

enables ad hoc anonymous collaborations

Decoupling communication in Space

require serviceprovide service

Page 18: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Ubiquitous Flea Market

6

Example: buy/sell concert tickets to proximate peers

offer

demand

Page 19: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Ubiquitous Flea Market

6

Example: buy/sell concert tickets to proximate peers

offer

demand

Page 20: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

AmbientTalk: the language

• Distributed object-oriented language

• Event-driven concurrency based on actors [Agha86]

• Future-type asynchronous message sends

• Built-in publish/subscribe engine for service discovery of remote objects

7

Page 21: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

AmbientTalk: the project

• Started in 2005

• Small team: 3-6 people

• Interpreter

• Pure Java implementation

• Runs on J2ME/CDC phones

8

Page 22: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

def Item := object: { def category; def description; def ownerContactInfo; def init(c,d,o) { category := c; description := d; ownerContactInfo := o; } def getContactInfo() { ownerContactInfo } def placeSupply() {...} def placeDemand() {...}}

Objects

9

def ticket := Item.new(ConcertTicket,”...”,”...”);ticket.placeDemand();

• Prototype-based

• Objects are created:

• anonymously

• by cloning others

Page 23: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Extensible language

10

def fac(n) { (n = 0).ifTrue: { 1 } ifFalse: { n * fac(n-1) }}

• Block closures

• Keyworded messages

• Interfacing with JVM

Page 24: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Extensible language

10

def fac(n) { (n = 0).ifTrue: { 1 } ifFalse: { n * fac(n-1) }}

def Button := jlobby.java.awt.Button;def b := Button.new(”test”);b.addActionListener(object: { def actionPerformed(ae) { println(”button pressed”); }});

• Block closures

• Keyworded messages

• Interfacing with JVM

Page 25: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Event loop concurrency

11

Actor

Message queue Event loop

Based on E programming language [Miller05]

Page 26: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Event loop concurrency

11

Actor

Message queue Event loop

‘local’ object

Based on E programming language [Miller05]

Page 27: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Event loop concurrency

11

Actor

Message queue Event loop

‘local’ object

obj

obj.m()

Based on E programming language [Miller05]

Page 28: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Event loop concurrency

11

Actor

Message queue Event loop

‘local’ object ‘remote’ object

Based on E programming language [Miller05]

Page 29: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Event loop concurrency

11

Actor

Message queue Event loop

‘local’ object ‘remote’ object

obj

obj<-m()

Based on E programming language [Miller05]

Page 30: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Event loop concurrency

11

Actor

Message queue Event loop

‘local’ object ‘remote’ object

Actors cannot cause deadlock

No race conditions on objects

obj

obj<-m()

Based on E programming language [Miller05]

Page 31: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Futures

12

advertisement

def future := advertisement<-getContactInfo()

Page 32: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Futures

12

advertisement

def future := advertisement<-getContactInfo()

Page 33: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Futures

12

advertisement

def future := advertisement<-getContactInfo()

?future

Page 34: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Futures

12

advertisement

def future := advertisement<-getContactInfo()

?future

Page 35: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Futures

12

advertisement

def future := advertisement<-getContactInfo()

?future

Page 36: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

when: future becomes: { |contactInfo| println(“contact seller: “ + contactInfo)}

Futures

12

advertisement

def future := advertisement<-getContactInfo()

?future

Page 37: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

when: future becomes: { |contactInfo| println(“contact seller: “ + contactInfo)}

Futures

12

advertisement

def future := advertisement<-getContactInfo()

?future

contactInfo

Page 38: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

when: future becomes: { |contactInfo| println(“contact seller: “ + contactInfo)}

Futures

12

advertisement

def future := advertisement<-getContactInfo()

?future

contactInfo

Page 39: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

when: future becomes: { |contactInfo| println(“contact seller: “ + contactInfo)}

Futures

12

advertisement

def future := advertisement<-getContactInfo()

?future

contactInfo

Page 40: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Exporting objects

13

item

Page 41: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Exporting objects

13

item

deftype ConcertTicket;

def Item := object: { def category; // a type tag ... def placeSupply() { export: item as: category; }}

Page 42: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

def placeDemand() { whenever: category discovered: {|item| ... }}

Service Discovery

14

<closure>

Page 43: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

def placeDemand() { whenever: category discovered: {|item| ... }}

Service Discovery

14

<closure> item

Page 44: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

def placeDemand() { whenever: category discovered: {|item| ... }}

Service Discovery

14

<closure> item

Page 45: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

item<closure>

Failure handling

15

item<-getContactInfo()

Page 46: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

item<closure> remote ref

Failure handling

15

item<-getContactInfo()

Page 47: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

item<closure> remote ref

Failure handling

15

item<-getContactInfo()

Page 48: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

item<closure> remote ref

Failure handling

15

item<-getContactInfo()

Page 49: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

item<closure> remote ref

Failure handling

15

when: item disconnected: { println(“Item no longer available”)}

when: item reconnected: { println(“Item available again”)}

item<-getContactInfo()

Page 50: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

item<closure> remote ref

Failure handling

15

when: item disconnected: { println(“Item no longer available”)}

when: item reconnected: { println(“Item available again”)}

item<-getContactInfo()

Page 51: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

whenever: category discovered: { |item| when: item<-getContactInfo() becomes: { |contactInfo| println(“contact seller: “ + contactInfo) } when: item disconnected: { println(“Item no longer available”) }}

Events + Objects

• Block closures as first-class event-handlers

• preserve state (all lexically visible variables)

• can be arbitrarily nested

• Leads to less ‘inversion of control’

16

Page 52: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

whenever: category discovered: { |item| when: item<-getContactInfo() becomes: { |contactInfo| println(“contact seller: “ + contactInfo) } when: item disconnected: { println(“Item no longer available”) }}

Events + Objects

• Block closures as first-class event-handlers

• preserve state (all lexically visible variables)

• can be arbitrarily nested

• Leads to less ‘inversion of control’

16

Page 53: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-SCCC.pdf · AmbientTalk: Object-oriented Event-driven programming

Conclusion

• MANETs → loosely coupled collaboration

• AmbientTalk: event-driven OO language

• Buffered asynchronous messages: tolerate temporary network failures by default

• Built-in service discovery: no servers required

17

http://prog.vub.ac.be/amop

Volatile Connections → time & sync-decoupling

Scarce Infrastructure → space-decoupling


Recommended