\section{Related Work}
\label{sec:related}

There is a rapidly expanding body of work based on the vision of seamlessly
integrating networked computers into a global computing resource.
%The related work can be divided into cluster and network computing,
%Java-based global computing, and distributed communication standards.
%\subsection{Cluster and Network Computing}
This vision
%of using networked computers as a large, integrated computational platform
is as old as the Internet.
Some of the more recent network computing approaches, include
{\em CONDOR} \cite{litzkow88},
{\em Linda} \cite{WhLe88},
{\em PVM} \cite{Sunderam:1990:PFPa},
{\em Piranha} \cite{pirnha.ics92},
{\em MPI} \cite{Anonymous:1994:MMI},
%\em{Nexus} \cite{nexus},
%{\em CORBA} \cite{YanDud96},
{\em Network of Workstations (NOW)} \cite{NOW}, 
{\em Legion} \cite{grimshaw97},
{\em GLOBUS} \cite{globus},
and
{\em WebOS} \cite{vahdat97}.
%Legion and WebOS present powerful models that provide
%both greater throughput and improved response time via parallel/distributed execution.
The goal of the Legion research project is to provide secure shared object and name spaces, application-controlled fault-tolerance, improved response time, and greater throughput. Multiple language support is another of its goals.
Globus is viewed as a networked virtual supercomputer also known as metacomputer: an execution environment in which high-speed networks are used to connect supercomputers, databases, scientific instruments, and advanced display devices.  The project aims to build a substrate of low-level services---such as communication, resource location and scheduling, authentication, and data access---on which higher-level metacomputing software can be built.
WebOS is being developed with an eye towards providing operating system services for wide area applications such as resource discovery and management, a global namespace, remote process execution, authentication, and security.

Most of these systems 
require the user to have login access to all machines used in the
computation.  All of systems require the
maintenance of binaries for all architectures used in the computation.
%These projects do not focus on market-based mechanisms,
%which we believe to be fundamental to very large-scale participation.
Java helps to address these issues.

% Thus, they are limited in size and have a high administrative
% overhead.

%Our project aims at allowing any individual user to
%register its computing resources with a broker using an arbitrary
%Java-capable browser, such as the Netscape Navigator, without
%violating any local security policies.  Because of its simplicity of
%use, thousands of users could easily register their computing
%resources with a broker, giving us the ability to harness an
%extraordinary amount of computational power.


%\subsection{Java-Based Global Computing}

The flexibility of Java for Internet computing has been observed by several other researchers.
A new, Java-based, generation of projects is aimed at establishing a software
infrastructure on which a global computing vision can be implemented.  These
projects include {\em ATLAS}~\cite{baldeschwieler96},
{\em Charlotte}~\cite{baratloo96}, {\em ParaWeb}~\cite{brecht96}, and {\em Popcorn}~\cite{camiel97}.
% However, all of these systems
% have some shortcomings compared to the proposed SuperWeb
% architecture, limiting either scale or applicability.
All these projects are designed explicitly to run parallel applications and
provide a specific programming model. 
%None of the three includes an economic
%model or a way of providing incentives for participation.
Other recent systems such as {\em JPVM}~\cite{ferrari} and {\em Java-MPI}~\cite{taylor}
use Java to overcome heterogeneity, but are not intended to execute on
anonymous machines.  The use of Java as a means for building distributed
systems that execute throughout the Internet has also been recently proposed
by Chandy et al.~\cite{chandy96} and Fox et al.~\cite{fox96}, and studied
in~\cite{sarmenta96}.

ATLAS provides a global computing model, based on Java and on the Cilk
programming model~\cite{Blumofe95}, that is best suited to tree-based
computations. ATLAS ensures scalability using a hierarchy of managers.  The
current implementation uses native libraries, which may raise some portability
problems.

Charlotte supports distributed shared memory, and uses a fork-join
model for parallel programming. A distinctive feature of this project
is its eager scheduling of tasks, where a task may be submitted to
several servers, providing fault-tolerance and ensuring timely
execution.  Both Charlotte and ATLAS provide fault-tolerance based on
the fact that each task is atomic. In Charlotte, the changes to the
shared memory become visible only after a task completes successfully.
This allows a task to be resubmitted to a different server, in case
the original server fails.  In ATLAS, each subtask is computed by a
subtree in the hierarchy of servers. Any subtask that does not
complete times out and is recomputed from a checkpoint file local to
its subtree.

ParaWeb provides two separate implementations of a global computing
infrastructure, each with a different programming model. Their Java Parallel
Class Library implementation provides new Java classes that provide
a message-passing framework for spawning threads on remote machines
and sending and receiving messages. ParaWeb's Java Parallel Runtime
System is implemented by modifying the Java interpreter to provide
global shared memory and to allow transparent instantiations of
threads on remote machines.

Popcorn provides a Java API for writing parallel programs.
Popcorn applications are decomposed by the programmer into small,
self-contained subcomputations,
%we have called closures, but which, within the Popcorn project,
called {\em computelets}.
The API facilitates something like RMI, but where the Popcorn application
does not specify a destination on which the computelet is to execute. 
Rather, a ``market'', which brings together buyers and sellers of CPU,
determines which seller will run the computelet.  
Market incentives are supported.

%Approaches relying on Java {\em applications} instead of applets
%require the user both to be familiar with at least a Java interpreter
%or compiler, and to {\em trust} any runtime bytecode to be executed at
%the local host, since applications are not restricted in their access
%to the network and local resources.  
%%Although existing approaches address some of these limitations, none
%%addresses all of them. 
%Our prototype infrastructure, Javelin, provides a single framework within which the above limitations
%can be addressed, focusing on simplicity and scalability. 

%{\em Volunteer Computing}~\cite{sarmenta96} presents preliminary
%concepts of a Java-based system like Javelin, identifying fundamental
%issues related to incentives (for hosts), efficiency, and security
%(for clients).

% Both ATLAS and ParaWeb use Java applications instead of applets, which
% requires users to be familiar with at least a Java interpreter or
% compiler and to trust arbitrary runtime bytecode to be executed at the
%local host, since applications are not restricted in their access to
% the network and local resources.  Moreover, donating resources to
% clients is more cumbersome than in the SuperWeb architecture.
% ParaWeb's Java Parallel Runtime System (JPRS) even requires a modified
% Java Virtual Machine interpreter.  
% The scalability achievable by the ATLAS architecture is
% limited to parallel task graphs mappable to hierarchical structures,
% while the scalability of the Charlotte system might be limited by the fact 
% the client and scheduler need to reside on one machine.

Some of the mechanisms needed to implement the proposed framework may
eventually be realized through recently released standard Java components such
as {\em Remote Method Invocation (RMI)}~\cite{sun96a} and {\em Object
Serialization}~\cite{sun96b}, or already have been provided by other research
groups (for example ~\cite{sivilotti96}, ~\cite{rossi} and ~\cite{gutfreund}).

Recently, a large variety of Java performance boosters have become available
~\cite{freejava}.  Most commercial compiler vendors offer JIT Java compilers,
and new web browsers use JIT techniques, too.  Languages worth
considering, besides Java,  include the ``E'' programming language
\cite{elang} which is very similar, but offers a more flexible security
framework than Java, and the Limbo programming language in the Inferno
operating system \cite{inferno}, which allows, among other features, for
easier and more efficient just-in-time compilation.

%Although more recent systems, such as {\em JPVM}~\cite{ferrari} and
%{\em Java-MPI}~\cite{taylor}, overcome the heterogeneity of today's networks,
%they are not intended to execute on anonymous machines.

The secure execution of arbitrary binaries recently has been addressed by at
least two techniques. First, {\em software-based fault isolation} techniques
\cite{omniware95} guard against insecure system calls of programs by patching
their binaries.  Second, {\em secure remote helper applications}~\cite{GoldbergWTB96}
use operating system tracing facilities
% such as \em{SLIC}~\cite{ghormley96}
to limit the use of resources that could violate system integrity.


%\subsection{Distributed Communication Standards}

Another important goal of our project is to allow a natural integration of our
infrastructure with other currently existing models for distributed 
systems.  There has been substantial work in the last decade geared
towards heterogeneity and open systems.  However, promising standards for
interoperability and portability between different combinations of software
and hardware components emerged only a couple of years ago.  Java Beans
\cite{sun96d} is the latest in the world of Web-based distributed 
computation, but we also have widely used technologies such as
CORBA~\cite{corba} or DCOM~\cite{dcom96}.
We expect to see a shift in Web technology towards systems based on
distributed objects and IIOP.
%Because the OMG has not yet agreed upon an
%IDL to Java mapping, full interoperability between implementations of
%different vendors has not been achieved to date, but a standard can be
%expected.
%Since a {\em world of distributed objects} can be extended easily to a service
%market, it provides a perfect substrate for the infrastructure.