This project is aimed at investigating how different reflective technologies can be used to develop a dynamically weaving aspect-oriented computing system, without any dependency of a concrete programming language, built over a heterogeneous computing platform. An abstract machine with a reduced instruction set has been employed as the root computation system’s engine; it offers the programmer basic reflection computation primitives. Its reduced size and its introspective capabilities, make it easy to be deployed in heterogeneous computational systems, becoming a platform-independent computational system. By using the reflective features offered by the abstract machine, the running applications can be adapted and extended. This would be programmed on its own language, without needing to modify the virtual machine’s source code and, therefore, without loosing code portability. As an example of its extensiveness, new software aspects can be programmed achieving facilities such as persistence, distribution, logging or trace. All this new abstractions are adaptable at runtime to any application. By using a reflective language-neutral computing platform, a framework has been created to develop dynamic weaving aspect scenarios. No needing to modify application’s functional code, new crosscutting concerns will be weaved to any program at runtime. Following the same scheme, when this dynamic and language-neutral aspects are needed no more, they could be suppressed at runtime in a programmatically way –i.e., not only a human could adapt an application at runtime but another program or even itself could do it.
[1]
David Stutz,et al.
Shared source CLI essentials
,
2003
.
[2]
Juan Manuel Cueva Lovelle,et al.
Non-restrictive computational reflection
,
2003,
Comput. Stand. Interfaces.
[3]
Gregor Kiczales,et al.
Aspect-oriented programming
,
2001,
ESEC/FSE-9.
[4]
D. L. Parnas,et al.
On the criteria to be used in decomposing systems into modules
,
1972,
Software Pioneers.
[5]
Juan Manuel Cueva Lovelle,et al.
Building a Completely Adaptable Reflective System
,
2001
.
[6]
Juan Manuel Cueva Lovelle,et al.
Implementing a real computational-environment jump in order to develop a runtime-adaptable reflective platform
,
2002,
SIGP.
[7]
Jeremy Singer,et al.
JVM versus CLR: a comparative study
,
2003,
PPPJ.
[8]
J. Baltasar García Pérez-Schofield,et al.
Separating adaptable persistence attributes through computational reflection
,
2004,
IEEE Software.
[9]
Nicolas Revault,et al.
Adaptive Object-Models and Metamodeling Techniques
,
2001,
ECOOP Workshops.
[10]
Pieter H. Hartel,et al.
Abstract machines for programming language implementation
,
2000,
Future Gener. Comput. Syst..
[11]
John Gough,et al.
Technical Overview of the Common Language Runtime
,
2001
.
[12]
Cristina V. Lopes,et al.
Aspect-oriented programming
,
1999,
ECOOP Workshops.