Information Technology Reference
In-Depth Information
Ceccato and Tonella [18] use a static code analyser and code generator to
analyse a non-distributed application and generate AspectJ code to apply the
distribution concern using the RMI protocol. All public methods in a class are
automatically altered to be remote methods and the various RMI specific con-
ventions are applied. In addition, parameters and return values are declared to
be remote objects so that they may be passed by reference, instead of the RMI
default pass-by-value, to avoid issues that may occur if the object cannot be seri-
alized. However, as identified by Tilevich and Smaragdakis [111], this approach is
extremely inecient as each method call generates network trac.
3.8.3
J-Orchestra
J-Orchestra [110, 113] is an automatic partitioning system for Java, which uses
bytecode rewriting to apply distribution and claims to be able to partition any
Java application and allow any application object to be placed on any machine,
regardless of how the application objects interact.
Although J-Orchestra's focus is on the automatic partitioning of Java ap-
plications and does not employ a domain-specific aspect language or specifically
define aspect-oriented concepts, such as join points or pointcuts, its use of bytecode
rewriting is essentially an aspect-oriented approach.
J-Orchestra replaces Java's RMI with NRMI [111], a modified version that
implements call-by-copy-restore semantics for object types for remote calls. In
RMI, copy-by-value is used to pass parameters from the client to the server. That
is, parameter objects are serialized and copied to the server. However, any changes
to parameter objects on the server are lost when the call returns. Call-by-copy-
restore overcomes this by copying changes made on the server back to the client
which is, to the user, more natural as it emulates a local procedure call. However,
inevitably, additional network trac is generated.
J-Orchestra implements distributed thread management [112]sothatmulti-
threaded applications can behave in the same manner once they are automatically
partitioned. Distributed thread management is implemented by altering only the
thread specific bytecode with calls to operations of the J-Orchestra distribution-
aware synchronisation library. Again, this has an overhead on network trac.
Users interact with the J-Orchestra system using XML files, which simply
detail a list of classes to be distributed. J-Orchestra has no concept of a domain-
specific language, multiple protocols or user-defined definition and manipulation
of the recovery concern. Nevertheless it does, for the RMI protocol, provide so-
phisticated automatic partitioning.
3.8.4
Other Systems
Both JavaParty [83] and DJcutter [74] use a language-based approach and supply
Java language extensions to provide explicit support for distribution. Again these
systems target the RMI protocol exclusively.
Search WWH ::




Custom Search