ambient-oriented programming &...

83
Software Languages Lab Brussels, Belgium Ambient-oriented Programming & AmbientTalk Tom Van Cutsem Stijn Mostinckx Elisa Gonzalez Boix Andoni Lombide Christophe Scholliers Wolfgang De Meuter donderdag 15 oktober 2009

Upload: others

Post on 31-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Software Languages LabBrussels, Belgium

Ambient-oriented Programming & AmbientTalk

Tom Van Cutsem Stijn Mostinckx Elisa Gonzalez BoixAndoni Lombide Christophe Scholliers Wolfgang De Meuter

donderdag 15 oktober 2009

Page 2: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Agenda

• Context: Mobile & Ubiquitous computing

• Approach: Ambient-oriented programming

• Tool: AmbientTalk

• Experiments: Demo applications

2

donderdag 15 oktober 2009

Page 3: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Mobile & Ubiquitous Computing

Context

donderdag 15 oktober 2009

Page 4: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Ubiquitous Computing

• Research vision postulated by Mark Weiser (1988, Xerox PARC)

4

donderdag 15 oktober 2009

Page 5: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Today’s Applications

Smart Homes/Domotics RFID Inventory Management

Tourism/City Guide Software Personal Area Networks

5

donderdag 15 oktober 2009

Page 6: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Issues

• Software Issues: • Context-awareness • Interaction with real world • Portability • New user interfaces • Standards • Distributed Applications

• Hardware Issues: • Miniaturisation • Device Autonomy • Interoperability • Processor Speed • Limited Memory • Integration • Cost

6

donderdag 15 oktober 2009

Page 7: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Issues

• Software Issues: • Context-awareness • Interaction with real world • Portability • New user interfaces • Standards • Distributed Applications

• Hardware Issues: • Miniaturisation • Device Autonomy • Interoperability • Processor Speed • Limited Memory • Integration • Cost

6

donderdag 15 oktober 2009

Page 8: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Mobile Ad Hoc Networks

Networks composed of mobile devices that communicate wirelessly

7

donderdag 15 oktober 2009

Page 9: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Mobile Ad Hoc Networks

Networks composed of mobile devices that communicate wirelessly

7

Zero Infrastructure

donderdag 15 oktober 2009

Page 10: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Mobile Ad Hoc Networks

Networks composed of mobile devices that communicate wirelessly

7

Volatile Connections

Zero Infrastructure

donderdag 15 oktober 2009

Page 11: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Ambient-oriented Programming

Approach

donderdag 15 oktober 2009

Page 12: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Observation #1: interaction with proximate peers9

Example: match making between proximate peers

offer

type = Concert Ticketticket.artist = “U2”

ticket.location = “Hyde Park”

demand

type = Concert Ticketticket.artist = “U2”ticket.location = *

donderdag 15 oktober 2009

Page 13: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Observation #1: interaction with proximate peers9

Example: match making between proximate peers

offer

type = Concert Ticketticket.artist = “U2”

ticket.location = “Hyde Park”

demand

type = Concert Ticketticket.artist = “U2”ticket.location = *

donderdag 15 oktober 2009

Page 14: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Observation #1: interaction with proximate peers9

Example: match making between proximate peers

offer

type = Concert Ticketticket.artist = “U2”

ticket.location = “Hyde Park”

demand

type = Concert Ticketticket.artist = “U2”ticket.location = *

No reliance on fixed, always-available server infrastructure

donderdag 15 oktober 2009

Page 15: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Observation #2: intermittent connectivity10

donderdag 15 oktober 2009

Page 16: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Observation #2: intermittent connectivity10

donderdag 15 oktober 2009

Page 17: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Observation #2: intermittent connectivity10

donderdag 15 oktober 2009

Page 18: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Observation #2: intermittent connectivity

Tolerate disconnections, because they occur frequently rather than exceptionally

10

donderdag 15 oktober 2009

Page 19: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Software concerns11

uMaMa

donderdag 15 oktober 2009

Page 20: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Software concerns11

uMaMa

Discovery

donderdag 15 oktober 2009

Page 21: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Software concerns11

uMaMa

Discovery Communication

donderdag 15 oktober 2009

Page 22: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Software concerns11

uMaMa

Discovery Communication Synchronisation

21%

32%

donderdag 15 oktober 2009

Page 23: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Software concerns12

uMaMa

Discovery Communication Synchronisation

donderdag 15 oktober 2009

Page 24: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Software concerns12

uMaMa

Failure handlingDiscovery Communication Synchronisation

donderdag 15 oktober 2009

Page 25: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

AmbientTalk

Tool

donderdag 15 oktober 2009

Page 26: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

• Object-oriented scripting language

• Started in 2005

• Pure implementation

• Runs on J2ME/CDC phones

• Open source implementation

AmbientTalk: fact sheet14

code.google.com/p/ambienttalk

donderdag 15 oktober 2009

Page 27: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

How does AmbientTalk help?15

Volatile Connectionsnetwork connections are resilient to failures by default

Zero Infrastructure service discovery protocol built into the language

donderdag 15 oktober 2009

Page 28: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Object-oriented16

def makeSong(artist, title) { object: { def printArtist() { if: (artist == nil) then: { “unknown artist”; } else: { artist; } } }}

donderdag 15 oktober 2009

Page 29: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Object-oriented16

def makeSong(artist, title) { object: { def printArtist() { if: (artist == nil) then: { “unknown artist”; } else: { artist; } } }}

def song := makeSong(“U2”, “One”);song.printArtist();

donderdag 15 oktober 2009

Page 30: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency

• AmbientTalk programs are event loops

• They react to events from the outside world

• They communicate asynchronously

17

Event Event Queue

Event Loop Event Handler

donderdag 15 oktober 2009

Page 31: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Examples of event loops

• GUI Frameworks (e.g. Java AWT)

• Highly interactive applications (e.g. games)

• IPC in Operating Systems

• Discrete Event Modelling (e.g. simulations)

• Web servers

18

donderdag 15 oktober 2009

Page 32: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency in AmbientTalk19

donderdag 15 oktober 2009

Page 33: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency in AmbientTalk19

Event Loop

Message queue

donderdag 15 oktober 2009

Page 34: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency in AmbientTalk19

‘local’ object

donderdag 15 oktober 2009

Page 35: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency in AmbientTalk19

‘remote’ object

donderdag 15 oktober 2009

Page 36: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency in AmbientTalk20

donderdag 15 oktober 2009

Page 37: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency in AmbientTalk20

“do m immediately”

obj

obj.m()

donderdag 15 oktober 2009

Page 38: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency in AmbientTalk20

“do m eventually”

obj<-m()

donderdag 15 oktober 2009

Page 39: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency in AmbientTalk20

“do m eventually”

obj<-m()

donderdag 15 oktober 2009

Page 40: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency in AmbientTalk20

?

future

donderdag 15 oktober 2009

Page 41: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency in AmbientTalk20

?

future

when: future becomes: { |value| // process reply}

donderdag 15 oktober 2009

Page 42: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Event Loop Concurrency in AmbientTalk20

?

future

when: future becomes: { |value| // process reply}

donderdag 15 oktober 2009

Page 43: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Exporting & discovering objects21

mplayer

donderdag 15 oktober 2009

Page 44: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Exporting & discovering objects21

mplayer

deftype MusicPlayer deftype MusicPlayer

donderdag 15 oktober 2009

Page 45: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Exporting & discovering objects21

mplayer

export: mplayer as: MusicPlayer

deftype MusicPlayer deftype MusicPlayer

donderdag 15 oktober 2009

Page 46: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Exporting & discovering objects21

mplayer

export: mplayer as: MusicPlayer

whenever: MusicPlayer discovered: { |mplayer| // open a session}

deftype MusicPlayer deftype MusicPlayer

donderdag 15 oktober 2009

Page 47: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Exporting & discovering objects21

mplayer

export: mplayer as: MusicPlayer

whenever: MusicPlayer discovered: { |mplayer| // open a session}

deftype MusicPlayer deftype MusicPlayer

donderdag 15 oktober 2009

Page 48: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Far References22

session

uploadSong

donderdag 15 oktober 2009

Page 49: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Far References22

session

uploadSong

donderdag 15 oktober 2009

Page 50: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Far References22

session

uploadSong

donderdag 15 oktober 2009

Page 51: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Far References22

session

donderdag 15 oktober 2009

Page 52: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Far References22

session

donderdag 15 oktober 2009

Page 53: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Far References22

session

donderdag 15 oktober 2009

Page 54: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Far References22

session

when: session<-uploadSong(s)@Due(timeout) becomes: { |ack| // continue exchange} catch: TimeoutException using: { |e| // stop exchange}

donderdag 15 oktober 2009

Page 55: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Leasing23

Connected(messages are

forwarded)

Disconnected(messages are

buffered)

Expired(messages are

dropped)

reconnect

expireexpire

disconnect

session

lease: 10.minutes

donderdag 15 oktober 2009

Page 56: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Reacting to failures24

Connected(messages are

forwarded)

Disconnected(messages are

buffered)

Expired(messages are

dropped)

reconnect

expireexpire

disconnect

session

lease: 10.minutes

donderdag 15 oktober 2009

Page 57: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Reacting to failures24

Connected(messages are

forwarded)

Disconnected(messages are

buffered)

Expired(messages are

dropped)

reconnect

expireexpire

disconnect

when: session disconnected: { // pause transmission}

session

lease: 10.minutes

donderdag 15 oktober 2009

Page 58: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Reacting to failures24

Connected(messages are

forwarded)

Disconnected(messages are

buffered)

Expired(messages are

dropped)

reconnect

expireexpire

disconnect

when: session disconnected: { // pause transmission}when: session reconnected: { // resume transmission}

session

lease: 10.minutes

donderdag 15 oktober 2009

Page 59: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Reacting to failures24

Connected(messages are

forwarded)

Disconnected(messages are

buffered)

Expired(messages are

dropped)

reconnect

expireexpire

disconnect

when: session disconnected: { // pause transmission}when: session reconnected: { // resume transmission}when: session expired: { // stop transmission}

session

lease: 10.minutes

donderdag 15 oktober 2009

Page 60: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Reacting to failures24

Connected(messages are

forwarded)

Disconnected(messages are

buffered)

Expired(messages are

dropped)

reconnect

expireexpire

disconnect

when: session disconnected: { // pause transmission}when: session reconnected: { // resume transmission}when: session expired: { // stop transmission}

when: session expired: { // clean up resources}

session

lease: 10.minutes

donderdag 15 oktober 2009

Page 61: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

when: type discovered: { |obj| ... }

when: obj disconnected: { ... }

when: obj reconnected: { ... }

when: obj expired: { ... }

when: 5.minutes elapsed: { ... }

when: future becomes: { |result| ... }

whenever: type discovered: { |obj| ... }

whenever: obj disconnected: { ... }

whenever: obj reconnected: { ... }

whenever: 5.minutes elapsed: { ... }

Event Notifications25

donderdag 15 oktober 2009

Page 62: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Discovery

when: type discovered: { |obj| ... }

when: obj disconnected: { ... }

when: obj reconnected: { ... }

when: obj expired: { ... }

when: 5.minutes elapsed: { ... }

when: future becomes: { |result| ... }

whenever: type discovered: { |obj| ... }

whenever: obj disconnected: { ... }

whenever: obj reconnected: { ... }

whenever: 5.minutes elapsed: { ... }

Event Notifications25

donderdag 15 oktober 2009

Page 63: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Failure Handling

when: type discovered: { |obj| ... }

when: obj disconnected: { ... }

when: obj reconnected: { ... }

when: obj expired: { ... }

when: 5.minutes elapsed: { ... }

when: future becomes: { |result| ... }

whenever: type discovered: { |obj| ... }

whenever: obj disconnected: { ... }

whenever: obj reconnected: { ... }

whenever: 5.minutes elapsed: { ... }

Event Notifications25

donderdag 15 oktober 2009

Page 64: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Synchronisation

when: type discovered: { |obj| ... }

when: obj disconnected: { ... }

when: obj reconnected: { ... }

when: obj expired: { ... }

when: 5.minutes elapsed: { ... }

when: future becomes: { |result| ... }

whenever: type discovered: { |obj| ... }

whenever: obj disconnected: { ... }

whenever: obj reconnected: { ... }

whenever: 5.minutes elapsed: { ... }

Event Notifications25

donderdag 15 oktober 2009

Page 65: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

AmbientTalk Program

Language Interoperability

• Scripting language on top of the JVM, cfr. JRuby, Jython, Groovy, ...

• AmbientTalk can use Java libraries, Java can use AmbientTalk scripts

26

Java Virtual Machine

AmbientTalk VM Interop. Layer

donderdag 15 oktober 2009

Page 66: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Batteries Included27

def Button := jlobby.java.awt.Button;def button := Button.new(“Click Me”);button.addActionListener(object: { def actionPerformed(actionEvent) { println(“button clicked”); }});button.setVisible(true);

donderdag 15 oktober 2009

Page 67: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Reflection

• AmbientTalk code can introspect and change behavior of objects and actors

28

def makeSong(artist, title) { object: { def printArtist() { if: (artist == nil) then: { “unknown artist”; } else: { artist; } } }}

def song := makeSong(“U2”, “One”);song.printArtist();

donderdag 15 oktober 2009

Page 68: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Reflection

• AmbientTalk code can introspect and change behavior of objects and actors

28

def mirrorOnSong := (reflect: song);

mirrorOnSong.invoke(song, createInvocation(`printArtist, []));

mirrorOnSong.listSlots();

mirrorOnSong.addSlot(slot);

...

def makeSong(artist, title) { object: { def printArtist() { if: (artist == nil) then: { “unknown artist”; } else: { artist; } } }}

def song := makeSong(“U2”, “One”);song.printArtist();

donderdag 15 oktober 2009

Page 69: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Implementation

• Interactive interpreter

• ± 17.000 SLOC of

• UDP & TCP/IP over WLAN

• Runs on top of J2ME/CDC

• QTek 9090 SmartPhones

• HTC Touch Cruise SmartPhones

• iPhone [in progress]

• Android G1 [in progress]

29

donderdag 15 oktober 2009

Page 70: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Demo Applications

Experiments

donderdag 15 oktober 2009

Page 71: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Case: Musical Match Maker

• Demo

31

donderdag 15 oktober 2009

Page 72: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Experimental Results32

donderdag 15 oktober 2009

Page 73: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Experimental Results33

donderdag 15 oktober 2009

Page 74: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Causes

• Explicit encoding of

• buffered, asynchronous communication using threads

• remote messages using objects

• timeouts using timer threads

• event notifications (lease expiration & renewal, calls & callbacks) using listeners + event loop threads

• Java RMI does not deal with service discovery

34

donderdag 15 oktober 2009

Page 75: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Case: Instant Messenger

• Demo

35

donderdag 15 oktober 2009

Page 76: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Chat: Java vs AmbientTalk (LoC)36

donderdag 15 oktober 2009

Page 77: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Chat: Java vs AmbientTalk (%)37

donderdag 15 oktober 2009

Page 78: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

A simple application but...

... we do not need to explicitly manage:

• threads & locks

• low-level socket connections

• stubs, skeletons

• name server or lookup service

• timeouts, leasing

38

donderdag 15 oktober 2009

Page 79: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

• Implementation of the Morphic UI framework from Self

• Demo: PortalPong

AmbientMorphic39

donderdag 15 oktober 2009

Page 80: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Conclusion

• Mobile ad hoc networks:

• Ambient-oriented programming:

• AmbientTalk:

• Scripting language on top of the JVM

• Reactive, event-driven programs

• Applications: chat, match maker, multiplayer game

40

donderdag 15 oktober 2009

Page 81: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Conclusion

• Mobile ad hoc networks:

• Ambient-oriented programming:

• AmbientTalk:

• Scripting language on top of the JVM

• Reactive, event-driven programs

• Applications: chat, match maker, multiplayer game

40

Volatile ConnectionsZero Infrastructure

donderdag 15 oktober 2009

Page 82: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Conclusion

• Mobile ad hoc networks:

• Ambient-oriented programming:

• AmbientTalk:

• Scripting language on top of the JVM

• Reactive, event-driven programs

• Applications: chat, match maker, multiplayer game

40

Volatile ConnectionsZero Infrastructure

Tolerate disconnectionsPeer-to-peer

donderdag 15 oktober 2009

Page 83: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming & AmbientTalk ... listeners + event loop threads

Don’t program the hardware of the future with the software of the past

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

donderdag 15 oktober 2009