Efficient Layer Activation in Context JS

Context-oriented programming (COP) describes language extensions for modularizing behavioral or structural variations that are to be composed at run-time. Different COP infrastructures and implementations offer several strategies for scoping, activation, and deactivation of such compositional units. Often, the mechanisms employed cause substantial execution overhead. In this paper we present an optimization technique for ContextJS -- our COP extension to JavaScript -- that can significantly reduce this overhead to run context-aware code efficiently.

[1]  Yannis Smaragdakis,et al.  Scoping Constructs for Software Generators , 1999, GCSE.

[2]  Michael Haupt,et al.  Delegation-based semantics for modularizing crosscutting concerns , 2008, OOPSLA.

[3]  Cristina V. Lopes,et al.  Workshop on Aspects and Dimensions of Concern: Requirements on, and Challenge Problems for, Advanced Separation of Concerns , 2000, ECOOP Workshops.

[4]  Robert Hirschfeld,et al.  An open implementation for context-oriented layer composition in ContextJS , 2011, Sci. Comput. Program..

[5]  A. Broder Some applications of Rabin’s fingerprinting method , 1993 .

[6]  Krzysztof Palacz,et al.  Lively Wiki a development environment for creating and sharing active web content , 2009, Int. Sym. Wikis.

[7]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[8]  Urs Hölzle,et al.  Optimizing dynamically-dispatched calls with run-time type feedback , 1994, PLDI '94.

[9]  Andry Rakotonirainy,et al.  Context-oriented programming , 2003, MobiDe '03.

[10]  Michael Haupt,et al.  ContextJ: Context-oriented Programming with Java , 2011 .

[11]  Éric Tanter,et al.  AspectScript: expressive aspects for the web , 2010, AOSD.

[12]  Michael Haupt,et al.  An implementation substrate for languages composing modularized crosscutting concerns , 2009, SAC '09.

[13]  Robert Hirschfeld,et al.  Language constructs for context-oriented programming: an overview of ContextL , 2005, DLS '05.

[14]  Michael Haupt,et al.  A Machine Model for Aspect-Oriented Programming , 2007, ECOOP.

[15]  Robert Hirschfeld,et al.  Implementing scoped method tracing with ContextJS , 2011, COP@ECOOP.

[16]  Tommi Mikkonen,et al.  The Lively Kernel A Self-supporting System on a Web Page , 2008, S3.

[17]  Matthias Felleisen,et al.  Hygienic macro expansion , 1986, LFP '86.

[18]  Wolfgang De Meuter,et al.  Efficient Layer Activation for Switching Context-Dependent Behavior , 2006, JMLC.

[19]  Alessandro Warth,et al.  OMeta: an object-oriented language for pattern matching , 2007, DLS '07.

[20]  Michael Haupt,et al.  A comparison of context-oriented programming languages , 2009, COP@ECOOP.

[21]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[22]  M. Appeltauer,et al.  Dedicated Programming Support for Context-Aware Ubiquitous Applications , 2008, 2008 The Second International Conference on Mobile Ubiquitous Computing, Systems, Services and Technologies.