ambient-oriented programming &...
TRANSCRIPT
![Page 1: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/1.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/2.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/3.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/4.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/5.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/6.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/7.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/8.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/9.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/10.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/11.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/12.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/13.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/14.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/15.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/16.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/17.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/18.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/19.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/20.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/21.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/22.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/23.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/24.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/25.jpg)
AmbientTalk
Tool
donderdag 15 oktober 2009
![Page 26: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/26.jpg)
• 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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/27.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/28.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/29.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/30.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/31.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/32.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/33.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/34.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/35.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/36.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/37.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/38.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/39.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/40.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/41.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/42.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/43.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/44.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/45.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/46.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/47.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/48.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/49.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/50.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/51.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/52.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/53.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/54.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/55.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/56.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/57.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/58.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/59.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/60.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/61.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/62.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/63.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/64.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/65.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/66.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/67.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/68.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/69.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/70.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/71.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/72.jpg)
Experimental Results32
donderdag 15 oktober 2009
![Page 73: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/73.jpg)
Experimental Results33
donderdag 15 oktober 2009
![Page 74: Ambient-oriented Programming & AmbientTalksoft.vub.ac.be/~tvcutsem/talks/presentations/AmOP_Tokyo.pdf · Ambient-oriented Programming ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/74.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/75.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/76.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/77.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/78.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/79.jpg)
• 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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/80.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/81.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/82.jpg)
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 ... • low-level socket ... leasing 38 donderdag](https://reader031.vdocument.in/reader031/viewer/2022022806/5cc86b9e88c993fb628dd049/html5/thumbnails/83.jpg)
Don’t program the hardware of the future with the software of the past
http://prog.vub.ac.be/amop
donderdag 15 oktober 2009