\section{Conclusions}
\label{sec-concl}

This paper set out to provide a means to bridge the gap between the
DSM-semantics behind Charlotte and simpler, yet more efficient
message-passing systems. An annotation-based method has been proposed to
augment a Charlotte program with information about the data
dependencies of routines executing in parallel.

These annotations can have the character of hints, allowing the run
time system to improve communication efficiency while guaranteeing the
correctness of the program. They can also be used as a precise
description of read and write sets which allows the sharing of
primitive types like {\tt int} across multiple machines. 
The stepwise nature of this concept allows a programmer to gradually
incorporate knowledge about a program's behavior and to freely mix
pure DSM objects with annotation-based objects or shared primitive
types. 

Sharing primitive types results in data access efficiency usually
found only in message-passing systems or hardware-supported DSM
systems. By building on top of Charlotte, this efficiency is now
available for Java-based Web-computing without putting the burden of
low-level communication or locking primitives on a programmer while
properties that are crucial for Web-computing, e.g., fault tolerance,
are maintained. In this sense, advantages from DSM systems and
message passing are incorporated in this concept. 


The practicability and ease-of-use of this approach has been shown
with matrix multiplication as an example.  A number of measurements
substantiate the claim to vastly improved performance---run time
improvements of up to a factor of nine over standard Charlotte and
competitive with a pure message passing implementation were observed.

This shows that with  modest overhead for programmer and
runtime system, even problems of only moderate granularity can be
efficiently solved in a Java-based DSM programming environment. 

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "frame"
%%% End: 
