Information Technology Reference
In-Depth Information
1.2 Overview of Approach
For this research we have chosen to use the Java programming language as most
types of distributed systems technology are available for Java and primary research
into aspect-oriented systems either use Java as the underlying programming lan-
guage or extend it. However, we believe the concepts defined in this research are
applicable to other environments.
To achieve our goals of applying the distribution concern to existing Java
code, while allowing full participation in recovery scenarios without the underlying
code being aware of either the distribution protocol or the recovery scenario, we
use the following approach:
• We ensure that new applications are written with distribution in mind and
existing applications are refactored for distribution; that is that methods that
will become distributed are exposed at the correct level of granularity, that
threading and object consistency are catered to, and that the method's return
value and parameters implement the java.io.Serializable interface, if
applicable.
• We introduce the concept of a Distribution Definition Language, a high-level
domain-specific aspect language , which describes the classes and methods of
an existing application that are to be made remote, the distributed system
to use to make them remote and the recovery mechanism to use in the event
of a remote error.
• We introduce a software tool in the form of the RemoteJ compiler/generator
that uses information contained in the Distribution Definition Language to
generate the distributed system specific code and apply it to the application
using bytecode manipulation and generation techniques.
1.3 Limitations
There are a number of limitations to our approach, described in detail in Section
4.5 and Section 5.7, which may be summarised as:
Concurrency. As our approach is to ensure that applications are written with dis-
tribution in mind and current Java distribution protocols do not support
distributed thread co-ordination, we do not specifically address concurrency.
We discuss this in detail in Section 4.5.3.
Object passing. Some protocols, such as RMI, pass parameters and return values
by value or by reference. In the case of RMI, if the object is a remote object
(implements the java.rmi.Remote interface), a reference to the object is
passed in a remote call, otherwise a copy of the object is passed. As pass-
by-value is supported by all protocols we have implemented, we currently do
not support pass-by-reference. Protocol agnostic pass-by-reference support
is an area for future research.
Search WWH ::




Custom Search