Abstract :
Many distributed programming environments have been designed to support distributed shared objects over the Internet. Most of these environments (Java RMI and CORBA, for example), support client-server applications where distributed objects reside on servers, which execute all methods (remote or local) invoked on the objects. Traditional client-server models do not support client-side object caching and the local access it provides. We believe that object caching is critical to distributed applications, especially over the Internet, where latency and bandwidth are highly variable. We have developed a configurable and efficient remote method invocation mechanism that provides the same interface as Java RMI, while extending its functionality so that shared objects can be cached on the accessing nodes. The mechanism, called Javanaise, is based on the caching of clusters, which are groups of interdependent Java objects. We have implemented a prototype consisting of a preprocessor that generates the required proxy classes from the application interfaces and a run-time environment that uses system classes to manage the consistency of cluster replicas cached on client nodes. We describe the motivation for the work, the design choices made for the Javanaise clustering mechanism, the implementation principles for managing Javanaise clusters, and the results from three experiments that compare the performance of Javanaise with Java RMI
Keywords :
Internet; Java; application program interfaces; cache storage; client-server systems; data integrity; distributed object management; distributed programming; remote procedure calls; CORBA; Internet; Java RMI; Javanaise; Javanaise clustering mechanism; Javanaise clusters; accessing nodes; application interfaces; client nodes; client-server applications; client-server models; client-side object caching; cluster replicas; configurable RMI mechanism; design choices; distributed Java object sharing; distributed applications; distributed objects; distributed programming environments; distributed shared objects; implementation principles; interdependent Java objects; local access; object caching; preprocessor; proxy classes; remote method invocation mechanism; run-time environment; shared objects; system classes; Bandwidth; Delay; Environmental management; File servers; Internet; Java; Programming environments; Prototypes; Runtime environment; Web server;