Two major technologies have burst into our development environment:
CORBA and Java. Both allow a certain form of distribution, at least a
remote access to network resources.
Both, in different ways, have selected as a primary challenge, to
tackle the problem of system heterogeneity, which arises soon in the
context of open distribution. As a result, they have both come with
interfaces based on signatures. What has been traded off is semantics.
The advent of distribution boosts the interest in modularity. A complex service will naturally be composed of several simpler services, provided by potentially different remote servers. For these services to be composable (one form of reuse), they need to be defined priorily to the composition itself, i.e. statically.