Authors: K. Mani Chandy, Boris Dimitrov, Huy Le, Jacob Mandelson, Matthew Richardson, Adam Rifkin, Paolo A.G. Sivilotti, Wesley Tanaka, and Luke Weisman Affiliation: California Institute of Technology Email Address: adam@cs.caltech.edu A WORLD-WIDE DISTRIBUTED SYSTEM USING JAVA OBJECTS AND THE INTERNET ------------------------------------------------------------------- OVERVIEW This paper describes the design of a distributed system built using Java that supports peer-to-peer communication among processes spread across a network. We identify the requirements of a software layer that supports distributed computing, and we propose a design that meets those requirements. Our primary concern is the identification, specification, and implementation of software components that can be composed in different ways to develop correct distributed applications. Though our implementation uses Java, the fundamental ideas apply to any object-oriented language that supports messaging and threads. MOTIVATION Millions use the World-Wide Web for information exchange and for client-server applications. Widespread use has led to the development of a cottage industry for producing Web-based documentation; large numbers of people without formal education in computing are developing server applications on the Web. This paper describes a project to extend this infrastructure to a distributed system with peer-to-peer process communication across the Global Information Infrastructure (GII). The focus of our project is on identifying and specifying software components that can be composed to create distributed applications, implementing the software components as classes in an object-oriented framework, developing a compositional methodology for constructing correct distributed applications from the components, and implementing a library of applications that demonstrates the methodology. Our project develops methods and tools for distributed programming applications layered on top of standard network technologies. Though our implementation uses Java, we could have used any other object-oriented language that supports threads and communication classes. CORRECTNESS Our project deals with providing software components and compositional methods that support the development of correct distributed applications. The methods employed by Web users for developing client-server applications are not the best methods for developing correct peer-to-peer distributed applications. Furthermore, approaches for debugging sequential programs are inadequate for ensuring correctness in distributed applications. Our challenge is to deal with the difficult problems of distributed systems --- problems such as deadlock, livelock, and sending unbounded numbers of messages --- that are not issues in sequential programs. CONTRAST WITH TRADITIONAL DISTRIBUTED SYSTEMS Certain kinds of distributed systems are inherently complex, deal with myriad functions, have strict performance requirements, and have disastrous consequences of failure; examples of these systems include applications in telemedicine, air traffic control, and military command. Such systems are developed in a painstaking manner, with each system design led by a single group of expert designers that has primary responsibility for the entire system. By contrast, many Web-based applications are relatively simple, are collaborative by nature, have limited functionality, are performance-limited by the GII, and may be developed by people who are not experts in concurrent computing; examples of these systems are a calendar scheduling application and collaborative interactive environments. Designers of such applications have little control over the networks, protocols, operating systems, and computers on which their applications execute. Research issues for the two classes of distributed systems are somewhat different. The former class of distributed systems, the class on which human lives depend, is extremely important and has benefited from a great deal of research. This paper, however, deals with facilitating the development of the latter class of applications. The class of collaborative Web-based applications, though less critical than traditional distributed applications, has interesting engineering challenges nonetheless. DAPPLETS AND SESSIONS We coin the phrase dapplet to distinguish a process used in a collaborative distributed application from processes used in traditional distributed systems. Dapplets are composed together to form distributed sessions. A session is a temporary network of dapplets that carries out a task such as arranging a meeting time for a group of people. Sessions need not be static; after initiation, they may grow and shrink as required by the dapplets. A ten-page position paper describing dapplets and sessions is available on the World-Wide Web Postscript version: http://www.cs.caltech.edu/~adam/CALTECH/papers/chandy_etal.ps HTML version: http://www.cs.caltech.edu/~adam/CALTECH/papers/chandy_etal/ The overall EDEN (Experimental Distributed ENvironments) home page on the Web is available at http://www.cs.caltech.edu/~adam/CALTECH/eden.html