Top

Distributed Programming in Mozart - A Tutorial Introduction

Peter Van Roy, Seif Haridi, Per Brand and Raphael Collet

This tutorial shows how to write efficient and robust distributed applications with the Mozart programming system. We first present and motivate the distribution model and the basic primitives needed for building distributed applications. We then progressively introduce examples of distributed applications to illustrate servers, agents, mobility, collaborative tools, fault tolerance, and security.

The tutorial is suitable for Oz programmers who want to be able to quickly start writing distributed programs. The document is deliberately informal and thus complements the other Oz tutorials and the research papers on distribution in Oz.

The Mozart programming system has been developed by researchers from DFKI (the German Research Center for Artificial Intelligence), SICS (the Swedish Institute of Computer Science), the University of the Saarland, UCL (the Université catholique de Louvain), and others.

Warning: THE MATERIAL IN THIS DOCUMENT IS INCOMPLETE. THIS DOCUMENT WILL EVENTUALLY BE SUPERSEDED BY A COMPLETE DOCUMENT. IN THE MEANTIME, WE RECOMMEND LOOKING AT THE DISTRIBUTED PROGRAMMING (DP) CATEGORY OF THE MOGUL ARCHIVE AND READING CHAPTER 11 OF THE BOOK 'CONCEPTS, TECHNIQUES, AND MODELS OF COMPUTER PROGRAMMING'.



Index

ABCDEFGHIJLMNOPRSTUVW

A

annotation: 3.2.4 Making stationary objects, the new way
application
connected: 1 Introduction
overall structure: 2.3 Bringing it all together
asynchronous many-to-one channel: 2.1.2 Other stateful entities
atom: 2.1.4 Stateless entities

B

base module: 2.1.5 Sited entities
basic failure model: 4.2 Basic model

C

cached object: 2.1.1 Objects
cell
analogy to C and Java: 2.1.2 Other stateful entities
centralized semantics: see language semantics (2 Distribution Model)
channel
port (asynchronous many-to-one): 2.1.2 Other stateful entities
chunk: 2.1.4 Stateless entities
C language
relation to Oz cell: 2.1.2 Other stateful entities
class: 2.1.4 Stateless entities
communication failure: 4 Failure Model
component-based programming: 2.3 Bringing it all together
computed functor: 3.1.3 Remote computations and functors
compute server: 3.2.5 A compute server
concurrency
90% rule: 2.1.3 Single-assignment entities
connected applications: 1 Introduction
Connection module: 1 Introduction
Connection module
example: 3.1.1 Connecting applications by means of tickets
constrained variable: 2.1.5 Sited entities
CORBA: 1 Introduction
cross-site cycle: 2.2.2 Distributed memory management
cycle: 2.2.2 Distributed memory management

D

data-flow: 2.1.2 Other stateful entities
distributed semantics
atom: 2.1.4 Stateless entities
chunk: 2.1.4 Stateless entities
class: 2.1.4 Stateless entities
definition: 2 Distribution Model
function: 2.1.4 Stateless entities
functor: 2.1.4 Stateless entities
list: 2.1.4 Stateless entities
name: 2.1.4 Stateless entities
number: 2.1.4 Stateless entities
object: 2.1.4 Stateless entities
object-record: 2.1.4 Stateless entities
procedure: 2.1.4 Stateless entities
record: 2.1.4 Stateless entities
space: 2.1.5 Sited entities
string: 2.1.4 Stateless entities
thread: 2.1.5 Sited entities
weak dictionary: 2.1.5 Sited entities
DP
annotate: 3.2.4 Making stationary objects, the new way
failure model: 4 Failure Model
getFaultStream: 4.2.1 The fault stream
module: 1 Introduction

E

example
using Connection module: 3.1.1 Connecting applications by means of tickets
using Pickle module: 3.1.2 Persistent data structures by means of pickles
using Remote module: 3.1.3 Remote computations and functors

F

fail-silent assumption: 4 Failure Model
failure
basic model: 4.2 Basic model
fail-silent: 4 Failure Model
partial failure property: 4 Failure Model
permanent network problem: 4 Failure Model
temporary network problem: 4 Failure Model
failure handling
fault stream: 4.2.1 The fault stream
fault state: 4.1 Fault states
fault state
localFail: 4.1 Fault states
ok: 4.1 Fault states
permFail: 4.1 Fault states
tempFail: 4.1 Fault states
fault stream
definition: 4.2.1 The fault stream
DP.getFaultStream: 4.2.1 The fault stream
failure handler: 4.2.1 The fault stream
finalization: Stream finalization
feeling
warm, fuzzy: 2.3 Bringing it all together
finite domain variable: 2.1.5 Sited entities
finite set variable: 2.1.5 Sited entities
free record variable: 2.1.5 Sited entities
function: 2.1.4 Stateless entities
functor: 2.1.4 Stateless entities
functor
computed: 3.1.3 Remote computations and functors
future: 2.1.3 Single-assignment entities, 2.1.5 Sited entities

G

garbage collection
distributed: 2.2.2 Distributed memory management
in a server: 3.2.7 A dynamically-extensible server
geographic distribution: 2 Distribution Model
global name
external: 3.1 Global naming
hostname: 3.1 Global naming
internal: 3.1 Global naming
ticket: 3.1 Global naming
URL: 3.1 Global naming

H

halt
abnormal: see shutdown, abnormal (2.2.1 Controlled system shutdown)
normal: see shutdown, normal (2.2.1 Controlled system shutdown)
home site: 2.1.5 Sited entities
hostname
definition: 3.1 Global naming

I

Internet: 1 Introduction

J

Java language: 1 Introduction
Java language
limitation: 3.2.7 A dynamically-extensible server
relation to Oz cell: 2.1.2 Other stateful entities

L

language entity
module: 2.1.5 Sited entities
sited: 2.1.5 Sited entities
unsited: 2.1.5 Sited entities
language semantics: 2 Distribution Model
latency tolerance: 2.1.3 Single-assignment entities
lazy
class: 2.1.1 Objects
lightweight thread: 2.1.1 Objects
list: 2.1.4 Stateless entities
localFail
fault state: 4.1 Fault states
lock
thread-reentrant: 2.1.2 Other stateful entities
logic variable: 2.1.3 Single-assignment entities
logic variable
constrained: 2.1.5 Sited entities
constrained variable: 2.1.5 Sited entities
finite domain: 2.1.5 Sited entities
free record: 2.1.5 Sited entities
read-only (future): 2.1.3 Single-assignment entities, 2.1.5 Sited entities

M

memory management: 2.2.2 Distributed memory management
mobile object: 2.1.1 Objects
module
base
Cell: 2.1.5 Sited entities
definition: 2.1.5 Sited entities
Float: 2.1.5 Sited entities
Int: 2.1.5 Sited entities
List: 2.1.5 Sited entities
Lock: 2.1.5 Sited entities
Number: 2.1.5 Sited entities
Port: 2.1.5 Sited entities
Procedure: 2.1.5 Sited entities
Record: 2.1.5 Sited entities
definition: 2.1.5 Sited entities
system
Application: 2.1.5 Sited entities
Browser: 2.1.5 Sited entities
Connection: 2.1.5 Sited entities
Connection: 1 Introduction
definition: 2.1.5 Sited entities
DP: 1 Introduction
FD: 2.1.5 Sited entities
Module: 2.1.5 Sited entities
Open: 2.1.5 Sited entities
OS: 2.1.5 Sited entities
Pickle: 2.1.5 Sited entities
Pickle: 1 Introduction
Property: 2.1.5 Sited entities
Remote: 2.1.5 Sited entities
Remote: 1 Introduction
Search: 2.1.5 Sited entities
Tk: 2.1.5 Sited entities
multicast: 2.1.3 Single-assignment entities
multitasking: 2 Distribution Model

N

name: 2.1.4 Stateless entities
network-transparent: 2 Distribution Model
network failure: 4 Failure Model
number: 2.1.4 Stateless entities

O

object
cached: 2.1.1 Objects
mobile: 2.1.1 Objects
object-record: 2.1.4 Stateless entities
sequential asynchronous stationary: 2.1.1 Objects
stationary: 2.1.1 Objects, 3.2.3 Making stationary objects, 3.2.4 Making stationary objects, the new way
ok
fault state: 4.1 Fault states
owner site: 2.1.1 Objects, 2.1.5 Sited entities

P

partial failure property: 4 Failure Model
permFail
fault state: 4.1 Fault states
pickle: 3.1 Global naming
Pickle module: 1 Introduction
Pickle module
example: 3.1.2 Persistent data structures by means of pickles
port: 2.1.2 Other stateful entities
port
Oz vs. Unix: 2.1.2 Other stateful entities
procedure: 2.1.4 Stateless entities
process: 2 Distribution Model
programming
component-based: 2.3 Bringing it all together
proxy site: 2.1.1 Objects

R

record: 2.1.4 Stateless entities
record
module: 2.1.5 Sited entities
object-record: 2.1.4 Stateless entities
remote computation
example: 3.1.3 Remote computations and functors
of a statement (needing resources): 3.1.3 Remote computations and functors
of a statement (not needing resources): 3.2.5 A compute server
Remote module: 1 Introduction
Remote module
example: 3.1.3 Remote computations and functors
resource: 2.1.5 Sited entities

S

semantics
distributed: 2 Distribution Model
language: 2 Distribution Model
server: 3.2 Servers
server
compute server: 3.2.5 A compute server
dynamically-extensible: 3.2.7 A dynamically-extensible server
shutdown
abnormal: 2.2.1 Controlled system shutdown
normal: 2.2.1 Controlled system shutdown
site
definition: 2 Distribution Model
multitasking: 2 Distribution Model
owner: 2.1.1 Objects
proxy: 2.1.1 Objects
sited entity
definition: 2.1.5 Sited entities
resource: 2.1.5 Sited entities
space: 2.1.5 Sited entities
thread: 2.1.5 Sited entities
weak dictionary: 2.1.5 Sited entities
space
sited entity: 2.1.5 Sited entities
stateless entity
pickle: 3.1 Global naming
stationary object
definition: 3.2.3 Making stationary objects
definition: 2.1.1 Objects
example: 3.2.2 The hello server with stationary objects
stream: 2.1.3 Single-assignment entities
string: 2.1.4 Stateless entities
system module: 2.1.5 Sited entities

T

tempFail
fault state: 4.1 Fault states
thread: 2.1.2 Other stateful entities
thread
data availability: 2.1.3 Single-assignment entities
lightweight: 2.1.1 Objects
reentrant lock: 2.1.2 Other stateful entities
sited entity: 2.1.5 Sited entities
thread-reentrant lock: 2.1.2 Other stateful entities
ticket
definition: 3.1 Global naming
example: 3.1.1 Connecting applications by means of tickets
time-out
difference with temporary fault: 4.1.1 Temporary faults

U

Unix port: 2.1.2 Other stateful entities
unsited entity: 2.1.5 Sited entities
URL
definition: 3.1 Global naming

V

variable
final in Java: 2.1.3 Single-assignment entities
logic variable: 2.1.3 Single-assignment entities

W

weak dictionary
sited entity: 2.1.5 Sited entities

Peter Van Roy, Seif Haridi, Per Brand and Raphael Collet
Version 1.4.0 (20080702)