The rise of object-oriented middleware in the mid-nineties was an important step forward toward making distributed computing available to application developers. For the first time, it was possibe to build distributed applications without having to be a networking guru: the middleware platform took care of the majority of networking chores, such as
marshaling and
unmarshaling (encoding and decoding data for transmission), mapping logical object addresses to physical transport endpoints, changing the representation of data according to the native machine architecture of client and server, and automatically starting servers on demand.
Despite these advances, the leading object-oriented middleware platforms suffered from a number of serious practical limitations that prompted ZeroC to develop the Internet Communications Engine, or Ice for short.
1 The main design goals of Ice are:
To be more simplistic, the Ice design goals could be stated as “Let’s build a more powerful middleware platform that makes the developer’s life easier and avoids the mistakes of its predecessors.”