A study on fine-grained replications of distributed Java applications

In distributed object systems, object-oriented (OO) applications are replicated from remote servers to client sites to improve performance, scalability, and availability. This study focuses on fine-grained replications of distributed OO applications. Unlike the traditional replication scheme by which a self-contained application is replicated entirely at once, the finegrained replication scheme enables partial and on-demand incremental replications of self-contained applications. Fine-grained replications can be classified into two categories based on their deployment patterns: 1) replicating running applications for local accesses and 2) downloading application programs from persistent repositories for local executions. Based on the classification, the study has proposed a pair of fine-grained replication middlewares: one aims for the fine-grained replications of remote runtime applications, and the other aims for the partial and on-demand incremental downloadings of application programs. In addition, to exploit the fine-grained replications effectively requires a proper means to figure out application portions as the units of replication. The study has proposed object class clustering algorithms to support the use of the latter middleware, while showing that object clustering, which is used to support the former middleware, can be performed based on programmer’s application knowledge. The details of the middlewares and the class clustering algorithms are summarized individually as follows. Fine-grained replication of runtime application: Replicating remote application objects to user locality is a common technique to reduce the effects of network problem. The traditional replication scheme is not suitable for cooperative applications because only part of a shared application rather than a whole application should be replicated. Furthermore, the scheme is not appropriate for mobile computing devices due to their common constraints of memory spaces. Both problems can be addressed by using a fine-grained replication scheme by which the portions of a selfcontained application can be replicated. Since most object replication systems exploit the traditional replication scheme, to fulfil fine-grained replication is an unexperienced task for several application programmers. There exist few middlewares that support runtime fine-grained replications of OO applications. All of them aim for peer-to-peer applications in which objects that constitute a self-contained application are decomposed and distributed among peers. Therefore, peers that hold master copies of the application objects must always be reachable by other peers to replicate the master copies. This is not suitable for pervasive collaboration because the servant peers (e.g., mobile users) can get disconnected arbitrarily or be unreachable due to network partitioning. Instead, using dedicated servers to maintain the master copies of applications is more appropriate. Unfortunately, no fine-grained replication middleware is designed for a client-server model. This dissertation presents SOOM, a Java-based middleware for pervasive client-server cooperative applications. SOOM provides fine-grained replication capability for clients in wide-area networks or on the Internet and allows clients in local area network to exploit a conventional remote method invocation mechanism in coordination with the fine-grained replication. SOOM also supports fine-grained concurrent access control and update synchronization. To realize the middleware, several challenge research problems have been identified and resolved. An application for cooperative software modeling has been developed to assure the practical applicability of SOOM and demonstrate the practicality of fine-grained replication scheme, fine-grained consistency maintenance, and the coexistence of fine-grained replications and remote method invocations in client-server environment. The quantitative properties of SOOM were measured through the following empirical evaluations. First, experiments in single-user and multi-user environments based on different consistency protocols indicated the practical throughputs of SOOM-based application. Second, throughout accessing all member objects of a benchmark cluster showed that SOOM-based replication began to outperform Java RMI when each object was accessed locally more than twice. Third, an experiment using the varied numbers of client processors assured the scalability of SOOM. Finally, an experiment on the memory space requirement showed that SOOM could reduce the significant amount of client memory space consumption as well as network bandwidth. Fine-grained replication of application program: OO applications have been distributed more and more over the Internet. Deploying an application by retrieving the entire program from a remote repository such as HTTP server often encounters extended delay due to network congestion or large program size. Many times system resources, such as network bandwidth and client memory space, are also wasted because users do not utilize every component of the downloaded applications. Moreover, downloading a whole program at once is usually impractical for mobile computing devices due to their memory space constrains. These problems can be addressed by decomposing a program into groups of classes and data resources to be downloaded on demand. This dissertation presents C, a Java-based middleware by which a Java application can be partially and on-demand incrementally deployed via HTTP. The middleware also supports application caching and transparently automatic updating. The launching delay of an experimented application was found to be reduced by 83% from that of the traditional whole-at-once application deployment scheme. Total program deployment and execution overhead was 22% less than that of Java Web Start. Object class clustering approach: It is typical that only part of whole program code is necessary for successful execution. Decomposing an OO program into clusters of closely relevant classes and data resources for on-demand incremental loading optimizes the program start-up latency and system resource consumption. The lack of systematic yet simple class clustering approach prohibits this kind of optimization. This dissertation presents a Java class clustering approach that is capable of improving both spatial locality and temporal affinity of the optimized programs. The approach provides two clustering algorithms: initial delay-centric and intermittent delay-centric ones, to achieve different requirements of optimizations. Experimental results indicated that the algorithms were practically useful to both interactive programs and non-interactive programs. Among the tested Java programs, using the initial delay-centric algorithm and the intermittent delay-centric algorithm improved initial program loading latencies on average by 2.9 and 2.2 times respectively faster than the traditional whole-at-once program loading scheme. The intermittent delaycentric algorithm reduced the number of intermittent delays to half of the initial delay-centric algorithm. Both algorithms also led to the chances to economize on system resources, such as memory spaces and network bandwidths. Refereed Publications The refereed publications produced from this dissertation are listed below.