Next: 2.2 Why make Formal
Up: 2 Position
Previous: 2 Position
The Web has re-educated us all into expecting systems to be more dynamic. We expect to be able to load new components into an already running system and have the system reconfigure itself to accomodate the new services which these objects supply. Network objects (see for example [Bir95]) have become a reality in Java and in languages such as Obliq [Car95], in particlar with the invention of Oblets [Bro96] which are distributed, active objects which can be used in conjunction with contemporary browsers to support cooperative working across the Web. These developments have demonstrated the strength of objects as components, and of the object-oriented approach, when it comes to designing dynamic systems even when those systems are to be distributed.
Processes form an interesting alternative to objects as components for such systems. Java has recently introduced Servlets which act as additional, dynamically loaded, active components on the server side of a client-server system. Servlets are more like processes than objects. They communicate through streams as you would expect with Java concurrency. Time will tell whether Servlets become a major feature of future distributed systems. For me, they reinforce the view that something more than objects is required.
The key issue is, how does a system evolve? Once a system is installed and running, ideally we never want to take it out of service. We want to simply drop new components into the system and expect old ones to graciously retire when their services are no longer required. This view of evolution of systems is one we hope to illustate in the simple examples of this short paper.
Peter Henderson