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

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

Date post: 13-Oct-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
60
AmbientTalk: Object-oriented Event-driven programming in Mobile Ad hoc Networks Tom Van Cutsem Programming Technology Lab Vrije Universiteit Brussel Brussels, Belgium LAMP - EPFL, July 25th 2007, Lausanne
Transcript
Page 1: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

AmbientTalk: Object-orientedEvent-driven programming in

Mobile Ad hoc Networks

Tom Van Cutsem

Programming Technology LabVrije Universiteit Brussel

Brussels, Belgium

LAMP - EPFL, July 25th 2007, Lausanne

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

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-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

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-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

Mobile Ad hoc Networks

3

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

Mobile Ad hoc Networks

3

Intermittent Connectivity

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

Mobile Ad hoc Networks

3

Intermittent Connectivity

Scarce Infrastructure

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

Loose Coupling

4

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

[Eugster et al. 03]

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

Loose Coupling

4

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

[Eugster et al. 03]

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

Loose Coupling

4

asynchronous

send

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

[Eugster et al. 03]

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

Loose Coupling

4

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

[Eugster et al. 03]

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

Loose Coupling

4

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

[Eugster et al. 03]

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

Loose Coupling

4

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

[Eugster et al. 03]

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

Loose Coupling

4

asynchronous

receive

reduces impact of volatile connections

Decoupling communication in Time & Synchronisation

[Eugster et al. 03]

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

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-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

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-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

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-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

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-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

Example: music player

6

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

Example: music player

6

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

Example: music player

6

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

Example: music player

6

21%

32%

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

AmbientTalk: the language

• Distributed prototype-based 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 23: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

AmbientTalk: the project

• Started in 2005

• Small team: 3-6 people

• Interpreter (not optimised)

• Pure Java implementation

• Runs on J2ME/CDC phones

8

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

def Window := object: { def title := “Untitled”; def init(t) { title := t; super := ClosedWindow; } def show() { super := OpenWindow; }

def OpenWindow := object: { def draw() { ... } } def ClosedWindow := object: { def draw() { ... } }}

Objects

9

def w := Window.new(”Test”);w.draw();

• Prototypes

• Delegation

• Trait composition

• First-class delegation

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

Extensible language

10

def fac(n) { if: (n = 0) then: { 1 } else: { n * fac(n-1) }}

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

Extensible language

10

def fac(n) { if: (n = 0) then: { 1 } else: { n * fac(n-1) }}

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

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

Extensible language

10

def fac(n) { if: (n = 0) then: { 1 } else: { n * fac(n-1) }}

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

• Block closures

• Keyworded messages

• Interfacing with JVM

• Reflection

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

Event loop concurrency

11

Actor

Message queue Event loop

Based on E programming language [Miller05]

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

Event loop concurrency

11

Actor

Message queue Event loop

‘local’ object

Based on E programming language [Miller05]

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

Event loop concurrency

11

Actor

Message queue Event loop

‘local’ object

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-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

Event loop concurrency

11

Actor

Message queue Event loop

‘local’ object ‘remote’ object

Based on E programming language [Miller05]

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

Event loop concurrency

11

Actor

Message queue Event loop

‘local’ object ‘remote’ object

obj

obj<-m()

Based on E programming language [Miller05]

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

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 34: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

Futures

12

mplayer

def future := mplayer<-numSongsInLibrary()

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

Futures

12

mplayer

def future := mplayer<-numSongsInLibrary()

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

Futures

12

mplayer

def future := mplayer<-numSongsInLibrary()

?future

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

Futures

12

mplayer

def future := mplayer<-numSongsInLibrary()

?future

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

Futures

12

mplayer

def future := mplayer<-numSongsInLibrary()

?future

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

when: future becomes: { |num| system.println(“user shares “+ num + “ songs.”)}

Futures

12

mplayer

def future := mplayer<-numSongsInLibrary()

?future

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

when: future becomes: { |num| system.println(“user shares “+ num + “ songs.”)}

Futures

12

mplayer

def future := mplayer<-numSongsInLibrary()

?future

num

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

Exporting objects

13

deftype MusicPlayer;

def interface := object: { def openSession() { ... }}

export: interface as: MusicPlayer;

interface

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

Exporting objects

13

deftype MusicPlayer;

def interface := object: { def openSession() { ... }}

export: interface as: MusicPlayer;

interface

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

Ambient References

14

def mplayerFuture := ambient: MusicPlayer;

• Initiates service discovery

• Immediately returns future for object to be discovered

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

Ambient References

14

def mplayerFuture := ambient: MusicPlayer;

mplayerFuture

?

• Initiates service discovery

• Immediately returns future for object to be discovered

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

Ambient References

15

mplayerFuture

?

def mplayerFuture := ambient: MusicPlayer;

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

Ambient References

15

mplayerFuture

?

def mplayerFuture := ambient: MusicPlayer;

def sessionFuture := mplayerFuture<-openSession();

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

Ambient References

15

mplayerFuture

?

def mplayerFuture := ambient: MusicPlayer;

def sessionFuture := mplayerFuture<-openSession();

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

when: mplayerFuture becomes: { |ambientRef| println(“music player found”)}

Ambient References

15

mplayerFuture

?

def mplayerFuture := ambient: MusicPlayer;

def sessionFuture := mplayerFuture<-openSession();

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

when: mplayerFuture becomes: { |ambientRef| println(“music player found”)}

Ambient References

15

interface

mplayerFuture

?

def mplayerFuture := ambient: MusicPlayer;

def sessionFuture := mplayerFuture<-openSession();

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

when: mplayerFuture becomes: { |ambientRef| println(“music player found”)}

Ambient References

15

interface

mplayerFuture

?

def mplayerFuture := ambient: MusicPlayer;

ambientRef

def sessionFuture := mplayerFuture<-openSession();

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

when: mplayerFuture becomes: { |ambientRef| println(“music player found”)}

Ambient References

15

interface

mplayerFuture

?

def mplayerFuture := ambient: MusicPlayer;

ambientRef

def sessionFuture := mplayerFuture<-openSession();

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

when: mplayerFuture becomes: { |ambientRef| println(“music player found”)}

Ambient References

15

interface

mplayerFuture

?

def mplayerFuture := ambient: MusicPlayer;

ambientRef

def sessionFuture := mplayerFuture<-openSession();

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

Ambient References

15

interface

mplayerFuture

?

def mplayerFuture := ambient: MusicPlayer;

ambientRef

def sessionFuture := mplayerFuture<-openSession();

Bound

Unbound Connected

Disconnected

Page 54: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

• Event handlers on ambient references:

Failure handling

16

when: ambientRef disconnects: { println(“music player disconnected”)}

interface

mplayerFuture

?

ambientRef

when: ambientRef reconnects: { println(“music player reconnected”)}

Page 55: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

• Event handlers on ambient references:

Failure handling

16

when: ambientRef disconnects: { println(“music player disconnected”)}

interface

mplayerFuture

?

ambientRef

when: ambientRef reconnects: { println(“music player reconnected”)}

Page 56: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

• Event handlers on ambient references:

Failure handling

16

when: ambientRef disconnects: { println(“music player disconnected”)}

interface

mplayerFuture

?

ambientRef

when: ambientRef reconnects: { println(“music player reconnected”)}

Page 57: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

Failure Handling

• Leased references which eventually expire

• Futures + timeouts

17

when: o<-m()@Timeout(minutes(10)) becomes: { |v| // process return value} catch: TimeoutException using: { |e| // deal with timeout}

Page 58: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

Variations

• Past experiments:

• ambient ‘omni’-references: broadcasting

• content-based discovery

• Future experiments:

• Customisable message delivery guarantees

• First-class proximity: restrict spatial scope of ambient references

18

Page 59: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

Lessons Learned

• AmbientTalk = OO + Events:

• Block closures as nested event handlers

• Futures: non-blocking synchronisation

• Buffered asynchronous messaging abstracts over intermittent connectivity

• Ambient references: space-decoupled remote object references

19

Page 60: AmbientTalk: Object-oriented Event-driven programming in ...soft.vub.ac.be/~tvcutsem/talks/presentations/AmbientTalk2-EPFL.pdf · Event-driven programming in Mobile Ad hoc Networks

Conclusion

• MANETs: loosely coupled collaboration

• AmbientTalk: actor-based OO language

• Deal with universal MANET characteristics at the language level:

20

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

Intermittent Connectivity: time & sync-decoupled references

Scarce Infrastructure: space-decoupled references


Recommended