While distributed middleware technologies, such as CORBA, DCOM and Jini have enabled the development of complex software applications in varied domains, they have also presented challenges. One major challenge is middleware transparency - abstractions that capture those elements of the application specific to the middleware and allow seamless integration of the abstracted elements into an application. Aspect oriented programming (AOP) promises to make the possibility of achieving middleware transparency a reality. This paper describes our attempt to realize middleware transparency by applying AOP with AspectJ to a distributed Jini "stock broker service" application. We successfully encapsulated Jini code into a number of aspects that greatly simplified the application development process. In addition, we also implemented a number of visualization utility aspects having applicability in a variety of different applications and scenarios. We describe both the benefits and challenges of this approach.
Issues involved in testing large distributed applications employing distributed object technologies are discussed. A testing tool, RiOT, that addresses these issues are described. RiOT can be used for testing distributed Java applications that use Java RMI, Jini, or Jiro technologies. It relies on the availability of the interface descriptions of the objects and services provided in the application. This information is used to define coverage domains that are used to assess the adequacy of tests. These interface-based coverage domains are based on 1) the methods and exceptions that are defined in the interfaces, 2) mutations that can be created from the methods and parameters, and 3) method sequences that can be defined from the methods. RiOT allows injection of faults at the interfaces of objects. Testers can observe the effects of fault injection and assess the fault handling capabilities of the application. RiOT can also be used to evaluate performance of the application using profiling information. RiOT employs a hierarchical monitoring framework for collecting test execution data. The components of RiOT communicate using Java RMI and rely on the use of the reflection mechanism for their functionality. RiOT's architecture is being extended with a distributed debugging and architecture visualization mechanism.
Conference Committee Involvement (2)
Java/Jini Technologies and High-Performance Pervasive Computing