ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Implementing protocols via declarative event patterns
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Adding trace matching with free variables to AspectJ
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Language constructs for context-oriented programming: an overview of ContextL
DLS '05 Proceedings of the 2005 symposium on Dynamic languages
Declarative definition of contexts with polymorphic events
International Workshop on Context-Oriented Programming
Towards safe and flexible object adaptation
International Workshop on Context-Oriented Programming
Improving the development of context-dependent Java applications with ContextJ
International Workshop on Context-Oriented Programming
Context-oriented programming with EventJava
International Workshop on Context-Oriented Programming
EventJava: An Extension of Java for Event Correlation
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Event-specific software composition in context-oriented programming
SC'10 Proceedings of the 9th international conference on Software composition
Transactions on Aspect-Oriented Software Development I
EventCJ: a context-oriented programming language with declarative event-based context transition
Proceedings of the tenth international conference on Aspect-oriented software development
An open implementation for context-oriented layer composition in ContextJS
Science of Computer Programming
Context-oriented programming: A software engineering perspective
Journal of Systems and Software
Declarative layer composition in framework-based environments
Proceedings of the International Workshop on Context-Oriented Programming
An Analysis of Language-Level Support for Self-Adaptive Software
ACM Transactions on Autonomous and Adaptive Systems (TAAS)
Hi-index | 0.00 |
This paper proposes a new programming language EventCJ. Its design stems from our observation that, in many context-aware applications, context changes are triggered by external events. Thus, in addition to the current COP language mechanisms, namely the one to activate/deactivate layers in accordance with a flow of control in programs, and the one to dispatch method calls to partial methods on active layers, we propose a mechanism to declaratively switch contexts of the receiver of events. EventCJ can declare events that trigger context transitions, and context transition rules that define how each instance's context changes when it receives a specific event. After the transition, the instance acquires the context dependent behaviors provided by the activated context. Each event is declared in an AspectJ-like pointcut that specifies where the event is fired in the join points of the system. EventCJ separates the specification of when each context is activated and deactivated that may crosscut whole program in the existing COP languages. Furthermore, the declarative nature of the context transition rules help validation of some properties that the contexts should satisfy.