Results 1 - 10
of
21
Just-In-Time Aspects: Efficient Dynamic Weaving for Java
- In Proceedings of the 2nd international conference on Aspect-oriented software development
, 2003
"... Recent developments in service architectures suggest that run-time adaptations could be implemented with dynamic AOP. In this paper we discuss application requirements on run-time AOP support and present a system that addresses these requirements. We provide basic support for weaving using the Just- ..."
Abstract
-
Cited by 39 (3 self)
- Add to MetaCart
Recent developments in service architectures suggest that run-time adaptations could be implemented with dynamic AOP. In this paper we discuss application requirements on run-time AOP support and present a system that addresses these requirements. We provide basic support for weaving using the Just-In-Time compiler, while the AOP system is treated as an exchangeable module on top of the basic support. This approach allows us to provide a low run-time overhead, AOP system exibility, and secure weaving. We provide an extensive empirical evaluation and discuss the trade-o s resulting from using the JIT compiler and a modularized architecture.
UpgradeJ: Incremental Typechecking for Class Upgrades
, 2008
"... One of the problems facing developers is the constant evolution of components that are used to build applications. This evolution is typical of any multi-person or multi-site software project. How can we program in this environment? More precisely, how can language design address such evolution? In ..."
Abstract
-
Cited by 18 (1 self)
- Add to MetaCart
One of the problems facing developers is the constant evolution of components that are used to build applications. This evolution is typical of any multi-person or multi-site software project. How can we program in this environment? More precisely, how can language design address such evolution? In this paper we attack two significant issues that arise from constant component evolution: we propose language-level extensions that permit multiple, co-existing versions of classes and the ability to dynamically upgrade from one version of a class to another, whilst still maintaining type safety guarantees and requiring only lightweight extensions to the runtime infrastructure. We show how our extensions, whilst intuitive, provide a great deal of power by giving a number of examples. Given the subtlety of the problem, we formalize a core fragment of our language and prove a number of important safety properties.
Dynamic AOP with PROSE
- Proc. of 1st International Workshop on Adaptive and Self-Managing Enterprise Applications
, 2005
"... Abstract. Dynamic Aspect-Oriented Programming (d-AOP) is an important tool to implement adaptation in a wide variety of applications. In particular, large distributed infrastructures, middleware, and pervasive computing environments can greatly benefit from d-AOP to adapt software systems at run tim ..."
Abstract
-
Cited by 15 (1 self)
- Add to MetaCart
Abstract. Dynamic Aspect-Oriented Programming (d-AOP) is an important tool to implement adaptation in a wide variety of applications. In particular, large distributed infrastructures, middleware, and pervasive computing environments can greatly benefit from d-AOP to adapt software systems at run time. In this paper, we discuss the design of PROSE, an open source, generic platform for software adaptation. The paper discusses the join-points needed in practical systems together with examples of how they can be used, different implementation strategies and their practical implications. It also describes a highly efficient mechanism to implement stub and advice weaving. 1
No Java without Caffeine -- A Tool for Dynamic Analysis of Java Programs
- ASE 2002
, 2002
"... To understand the behavior of a program, a maintainer reads some code, asks a question about this code, conjectures an answer, and searches the code and the documentation for confirmation of her conjecture. However, the confirmation of the conjecture can be error-prone and time-consuming because the ..."
Abstract
-
Cited by 13 (3 self)
- Add to MetaCart
To understand the behavior of a program, a maintainer reads some code, asks a question about this code, conjectures an answer, and searches the code and the documentation for confirmation of her conjecture. However, the confirmation of the conjecture can be error-prone and time-consuming because the maintainer has only static information at her disposal. She would benefit from dynamic information. In this paper, we present Caffeine, an assistant that helps the maintainer in checking her conjecture about the behavior of a Java program. Our assistant is a dynamic analysis tool that uses the Java platform debug architecture to generate a trace, i.e., an execution history, and a Prolog engine to perform queries over the trace. We present a usage scenario based on the n-queens problem, and two real-life examples based on the Singleton design pattern and on the composition relationship.
Spontaneous Container Services
- In Proceedings of ECOOP’03
, 2003
"... Container technology (e.g., Enterprise Java Beans) was designed for xed network applications. This is unfortunate, because the ability of containers to adapt components transparently (e.g., with persistence and transactions) would be of great advantage in mobile computing. ..."
Abstract
-
Cited by 12 (2 self)
- Add to MetaCart
Container technology (e.g., Enterprise Java Beans) was designed for xed network applications. This is unfortunate, because the ability of containers to adapt components transparently (e.g., with persistence and transactions) would be of great advantage in mobile computing.
Join Point Encapsulation
, 2002
"... At the heart of aspect-oriented programming is the exposure of certain phenomena in the execution of one set of program elements to behavioral modifications specified by other elements. The phenomena are join points. The modifying elements are aspects. The problem that we address is that current asp ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
At the heart of aspect-oriented programming is the exposure of certain phenomena in the execution of one set of program elements to behavioral modifications specified by other elements. The phenomena are join points. The modifying elements are aspects. The problem that we address is that current aspectoriented languages do not provide adequate means to control the exposure of join points for behavioral modification by aspects. Rather, these languages define certain classes of join points (e.g., method calls) and expose all instances thereof. In a nutshell, then, current languages lack join point encapsulation mechanisms. We map a solution space and describe one proof-of-concept design that we have implemented for AspectJ. A key feature of our design is that it is, itself, aspect-oriented: We use AspectJ 's pointcut language to identity cross-cutting sets of join points to be encapsulated. The potential benefits of such a modularity-supporting mechanism include improved ease of reasoning about program behavior and the ability to assure the absence of side-e#ects through enforced non-interference by aspect code, and improved ease of design evolution.
AOP for Software Evolution: A Design Oriented Approach
- In Proceedings of the 10th Annual ACM Symposium on Applied Computing (SAC’05
, 2005
"... In this paper, we have briefly explored the aspect-oriented approach as a tool for supporting the software evolution. The aim of this analysis is to highlight the potentiality and the limits of the aspectoriented development for software evolution. From our analysis follows that in general (and in p ..."
Abstract
-
Cited by 5 (4 self)
- Add to MetaCart
In this paper, we have briefly explored the aspect-oriented approach as a tool for supporting the software evolution. The aim of this analysis is to highlight the potentiality and the limits of the aspectoriented development for software evolution. From our analysis follows that in general (and in particular for AspectJ) the approach to join points, pointcuts and advices definition are not enough intuitive, abstract and expressive to support all the requirements for carrying out the software evolution. We have also examined how a mechanism for specifying pointcuts and advices based on design information, in particular on the use of UML diagrams, can better support the software evolution through aspect oriented programming. Our analysis and proposal are presented through an example.
Improving Efficiency by Weaving at Run-time
- In 5th GPCE Young Researchers Workshop 2003
, 2003
"... Since the appearance of Java several tools have been developed to allow making dynamic changes in Java programs. In general, these tools trades the flexibility for the e#ciency of the program. ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
Since the appearance of Java several tools have been developed to allow making dynamic changes in Java programs. In general, these tools trades the flexibility for the e#ciency of the program.
Reflective Designs
- IEE Proceedings Software (2004), Special Issue on Reusable Software Libraries
"... We render runtime system adaptations by design-level concepts such that running systems can be adapted and examined at a higher level of abstraction. The overall idea is to express design decisions as applications of design operators to be carried out at runtime. Design operators can implement desig ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
We render runtime system adaptations by design-level concepts such that running systems can be adapted and examined at a higher level of abstraction. The overall idea is to express design decisions as applications of design operators to be carried out at runtime. Design operators can implement design patterns for use at run-time. Applications of design operators are made explicit as design elements in the running system such that they can be traced, reconfigured, and made undone. This approach enables reflective designs: on one side, design operators employ re-flection to perform runtime adaptations; on the other side, design elements provide an additional reflection protocol to examine and configure performed adaptations. Our approach helps understanding the development and the maintenance of the class of software systems that cannot tolerate downtime or frequent shutdown-revise-startup cycles. We have designed and implemented a class library for programming with reflective designs in Squeak/Smalltalk. Our library employs reflection and dynamic aspect-
Dynamic Instrumentation For Java Using A Virtual JVM
- In Performance Analysis and Grid Computing
, 2002
"... Dynamic instrumentation, meaning modification of an application's instructions at run-time in order to monitor its behaviour, is a very powerful foundation for a wide range of program manipulation tools. This paper concerns the problem of implementing dynamic instrumentation for a managed run-time e ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
Dynamic instrumentation, meaning modification of an application's instructions at run-time in order to monitor its behaviour, is a very powerful foundation for a wide range of program manipulation tools. This paper concerns the problem of implementing dynamic instrumentation for a managed run-time environment such as a Java Virtual Machine (JVM). We present a flexible new approach based on a "virtual" JVM, which runs above a standard JVM but intercepts application control flow in order to allow it to be modified at run-time. Our Veneer Virtual JVM works by fragmenting each method's bytecode at specified points (such as basic blocks). The fragmentation process can include static analysis passes which associate dependence and liveness metadata with each block in order to facilitate run-time optimisation. We conclude with some preliminary performance results, and discuss further applications of the tool.

