Widespread acceptance of concurrent object-oriented programming in the field
can only be expected if smooth integration with sequential programming is
achieved. This means that a common language base has to be used, where the
concurrent syntax differs as little as possible from the sequential one but is
associated with a "natural" concurrent semantics that makes library support
for concurrency superfluous. In addition, not only should sequential classes
be reusable in a concurrent context, but concurrent classes should also be
reusable in a sequential context. It is suggested that concurrency annotations
be inserted into otherwise sequential code. They are ignored by a sequential
compiler, but a compiler for the extended concurrent language will recognize
them and generate the appropriate concurrent code. The concurrent version of
the language supports active and concurrent objects and favours a declarative
approach to synchronization and locking which solves typical concurrency
problems in an easier and more readable way than previous approaches.
Concurrency annotations are introduced using Eiffel as the sequential base