The present invention adds support for concurrency to a mainstream
object-oriented language. Language extensions are provided that can
enable programs to be developed that can either be run in one address
space, distributed across several process on a single computer, or
distributed across a local-area or wide-area network, without recoding
the program. Central to this aspect is the notion of a service, which can
execute its own algorithmic (logical) thread. Services do not share
memory or synchronize using explicit synchronization primitives. Rather,
both data sharing and synchronization is accomplished via
message-passing, e.g., a set of explicitly declared messages are sent
between services. Messages can contain data that is shared, and the
pattern of message exchange provide the necessary synchronization.