Using prototypical objects to implement shared behavior in object-oriented systems
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
A syntactic approach to type soundness
Information and Computation
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
JastAdd: an aspect-oriented compiler construction system
Science of Computer Programming - Special issue: Language descriptions, tools and applications (LDTA'01)
Runtime Support for Type-Safe Dynamic Java Classes
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
A Framework for Dynamically Adaptive Applications in a Self-Organized Mobile Network Environment
ICDCSW '04 Proceedings of the 24th International Conference on Distributed Computing Systems Workshops - W7: EC (ICDCSW'04) - Volume 7
ACM SIGPLAN Notices
An adaptive object model with dynamic role binding
Proceedings of the 27th international conference on Software engineering
Language constructs for context-oriented programming: an overview of ContextL
DLS '05 Proceedings of the 2005 symposium on Dynamic languages
The jastadd extensible java compiler
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Feature featherweight java: a calculus for feature-oriented programming and stepwise refinement
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Dynamic software updates: a VM-centric approach
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
A comparison of context-oriented programming languages
International Workshop on Context-Oriented Programming
Event-specific software composition in context-oriented programming
SC'10 Proceedings of the 9th international conference on Software composition
EventCJ: a context-oriented programming language with declarative event-based context transition
Proceedings of the tenth international conference on Aspect-oriented software development
ContextFJ: a minimal core calculus for context-oriented programming
Proceedings of the 10th international workshop on Foundations of aspect-oriented languages
Delegation by object composition
Science of Computer Programming
Safe and atomic run-time code evolution for Java and its application to dynamic AOP
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
ContextErlang: introducing context-oriented programming in the actor model
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
Interruptible context-dependent executions: a fresh look at programming context-aware applications
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Hi-index | 0.00 |
Context-awareness is becoming critical for mobile and ubiquitous computing, where the application needs dynamically adapt its behavior to its execution environment. Context-oriented programming (COP) languages support dynamic behavior adaptation, however, they do not support dynamic layer addition. As a result, they provide little support for the runtime adaptation of application behavior in case that unpredictable execution environments are encountered. Furthermore, block-structured constructs for layer activation hardly support fine-grain adaptation and separate changes of contexts and execution of context-specific methods with difficulty. In this paper, we propose a virtual machine (VM)-centric approach to address these issues. It incorporates object composition and delegation into the VM to implement layer activation, and extends existing VM services to support dynamic layer addition. To ensure that our approach preserves the type safety properties of the program, we develop a calculus built on featherweight Java (FJ) to describe the approach, focus on type-checking issues, and prove type soundness of the calculus. We also present the implementation and evaluation of our approach. The evaluation demonstrates that our approach has advantages over the compilerbased approach proposed by JCOP.