The wide range of heterogeneous computing resources connected to the Internet leads naturally to a desire to exploit these resources to solve larger problems-a desire that is not as easy to fulfill as one would hope. The heterogeneity and reliability properties of the resources are part of what makes the desired exploitation difficult. The project is aimed in enabling support of resilient distributed computation, and with continued operation in the presence of various kinds of computer system and network failures. The project's goal is a system, RuggedJ, that supports resilient execution, over distributed heterogeneous platforms, with minimal change to application code. In addition, the system will enable automated and adaptive mechanisms while still allowing programmer control. We call the resulting system, RuggedJ, emphasizing its goal of resilience to failure.
RuggedJ will highlight novel aspect-oriented programming (AOP) tools for specifying resilience and distribution behavior separately from application code. RuggedJ will apply resilience aspects dynamically, to map application code to a given distributed platform. The RuggedJ tools will advance the state of the art in AOP, and serve as a case study in their effectiveness. The RuggedJ run-time system will also enable further work on resiliency, distribution, and adaptation. Since nonintrusiveness more or less demands a distributed shared memory model, the RuggedJ run-time system will also enable further work in that direction.