ERCIM News No.36 - January 1999
The Mozart Platform for Distributed Application Development
by Seif Haridi, Christian Schulte and Peter Van Roy
The Mozart system for distributed application development has been released in December 1998. The system implements Oz, a concurrent object-oriented language, and provides comprehensive support for writing fault-tolerant distributed applications.
The system is the fruit of a decade of research into concurrent constraint and distributed programming. The system separates the issues of application functionality, distribution structure, fault tolerance, and open computing. The language is fully network-transparent, ie, an application obeys exactly the same semantics, independent of its distribution structure, which is specified separately from the application functionality. The system reflects distribution and fault tolerance in the language, providing abstractions that allow full control over these issues from within the language. The system has been developed as a collaboration by DFKI, SICS, and UCL, and includes a full-fledged development environment with many tools. The system also includes sophisticated constraint and logic programming abilities that are the subject of ongoing research. The Mozart system is available at http://www.ps.uni-sb.de/mozart and http://www.sics.se/mozart.
Much progress has been made in distributed computing in the areas of distribution structure, open computing, fault tolerance, and security. Yet, writing distributed applications remains difficult. This is because the programmer has to manage models of these four areas explicitly. A major challenge is to integrate the four models into a coherent development platform (see figure). Such a platform should make it possible to cleanly separate an applications functionality from the other four concerns.
The Mozart platform is a first step towards solving this problem. It is the result of three years of research into distributed programming and ten years of research into concurrent constraint programming. The current release completely separates application functionality from distribution structure, and provides primitives for fault tolerance and open computing, and partial support for security. Future releases will complete the separation for fault-tolerance and open computing, and increase support for security.
The Mozart platform implements the Oz language. Oz appears to the programmer as a concurrent object-oriented language with dataflow synchronization. Oz combines concurrent and distributed programming with logical inference, making it a unique choice for developing multi-agent systems. From a theoretical point of view, Oz is a concurrent-constraint programming language that is based on a new computation model providing a uniform foundation for higher-order functional programming, constraint logic programming, and concurrent objects with multiple inheritance.
Several research groups at the DFKI, SICS, and UCL are already developing applications in Mozart. For example, the DFKI is developing multi-agent technology in the CoMMA-MAPS project. Inside the Mozart project, we are building collaborative tools including a shared graphic editor (Transdraw), a virtual world infrastructure (Sonata), and a corpus browser for large text corpora. We have also built constraint applications in industrial scheduling, computational linguistics, and music composition. All these applications have or are reaching a substantial level of functionality. For example, the Transdraw prototype currently consists of 20,000 lines of Oz and implements a coherent graphic editor and whiteboard. Due to its transactional architecture, it has high performance even over very slow networks. It is fault-tolerant and does full and automatic remote loading of code and data.
The Mozart implementation includes an interactive programming interface based on Emacs (both GNU Emacs and XEmacs are supported), an incremental compiler, development tools (including browser, interactive constraint visualizer, parser-generator, profiler, and debugger), an Internet-wide module system with dynamic linking, persistent data structures, an object-oriented interface to Tcl/Tk, powerful interoperability features including support for sockets and a C++ interface for dynamically-linked libraries, a distributed garbage collector, and support for stand-alone applications. Furthermore, extensive libraries of constraint propagators (including global constraints for scheduling applications), distributors and search engines support the construction of intelligent applications. Performance is competitive with commercial Prolog and Lisp systems and better than emulated Java. Mozart is available for many Unix-based platforms and for Windows 95/NT.
It is interesting to compare Mozart with JDK 1.2, the current Java release. Mozart distinguishes itself from Java in five ways. First, Mozart provides true network transparency - not a single line of code has to be changed when changing the distribution structure of an application. Second, Mozart provides a truly neutral network layer - it does not make any irrevocable decisions when there are temporary or permanent faults with processes or with the network. Third, Mozart is fully extensible at run-time - one can for example upgrade the interface of a remote object interactively while the object is running and clients are communicating with it. Fourth, Mozart provides sophisticated constraint and logic programming abilities and tools. Finally, Mozart provides a much more efficient implementation of concurrency - it is literally possible to create millions of threads within a process.
Mozart is available at: http://www.ps.uni-sb.de/mozart and http://www.sics.se/mozart.
Seif Haridi - SICS
Tel: +46 8 633 1500
Christian Schulte - DFKI
Tel: +49 681 302 5340
Peter Van Roy - UCL
Tel: +32 10 47 83 74