AspectScript: expressive aspects for the web
|
||||||||||||||||||||||||||
ABSTRACTJavaScript is widely used to build increasingly complex Web applications. Unsurprisingly, these applications need to address cross-cutting concerns. Therefore support for aspect-oriented programming is crucial to preserve proper modularity. However, there is no aspect-oriented extension of JavaScript that fully embraces the characterizing features of that language: dynamic prototype-based programming with higher-order functions. In this paper, we present AspectScript, a full-fledged AOP extension of JavaScript that adopts higher-order programming and dynamicity as its core design principles. In AspectScript, pointcuts and advices are standard JavaScript functions, bringing the benefits of higher-order programming patterns to define aspects. In addition, AspectScript integrates a number of state-of-the-art AOP features like dynamic aspect deployment with scoping strategies, and user-defined quantified events. We illustrate AspectScript in action with several practical examples from the realm of client Web applications, and report on its current implementation. AspectScript is a practical extension that provides better modularity support to build Web applications, and that will eventually make it possible to empirically validate the benefits brought by advanced aspect language mechanisms in an evergrowing application domain.
AUTHORS
|
|
||||||||||||||||||||||||||||||||||||||||
| View colleagues of Rodolfo Toledo | |||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||
| View colleagues of Paul Leger | ||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
| View colleagues of Éric Tanter | |||||||||||||||||||||||||||||||||||||||||
REFERENCESNote: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
|
1
|
Ajaxpect. A JavaScript framework for aspect-oriented programming. http://code.google.com/p/ajaxpect/.
|
|
| |
2
|
Chris Allan , Pavel Avgustinov , Aske Simon Christensen , Laurie Hendren , Sascha Kuzins , Ondřej Lhoták , Oege de Moor , Damien Sereni , Ganesh Sittampalam , Julian Tibble, Adding trace matching with free variables to AspectJ, Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 16-20, 2005, San Diego, CA, USA [doi>10.1145/1094811.1094839]
|
|
3
|
||
|
4
|
AspectJS. A function-call framework in JavaScript. http://www.aspectjs.com/.
|
|
|
5
|
AspectJS. A JavaScript framework for aspect-oriented programming. http://zer0.free.fr/aspectjs/.
|
|
|
6
|
Eric Bodden, Florian Forster, and Friedrich Steimann. Avoiding infinite recursion with stratified aspects. In Proceedings of Net.ObjectDays 2006, Lecture Notes in Informatics, pages 49--54. GI-Edition, 2006.
|
|
|
7
|
Cerny. A javascript framework for method-call interception. http://www.cerny-online.com/cerny.js/.
|
|
|
8
|
Thomas Cleenewerck, Kris Gybels, and Adriaan Peeters. Aspects in a Prototype-Based environment. In Dynamic Aspects Workshop, AOSD 2004, 2004.
|
|
| |
9
|
|
| |
10
|
|
|
11
|
||
| |
12
|
|
|
13
|
Jesse James Garrett. Ajax: A new approach to Web applications.
|
|
|
14
|
Humax. A JavaScript framework for aspect-oriented programming. http://humax.sourceforge.net/.
|
|
|
15
|
jQuery. A JavaScript library to manage event handling, animating, and Ajax interactions for the Web development. http://jquery.com/.
|
|
|
16
|
||
|
17
|
Paul Leger, Rodolfo Toledo, and Éric Tanter. The AspectScript language. http://pleiad.cl/aspectscript, 2009.
|
|
|
18
|
Xavier Leroy, Damien Doligez, Jacques Garrigue, Didier Rémy, and Jérôme Vouillon. Language Objective Caml: Caml supports functional, imperative, and object-oriented programming styles. http://caml.inria.fr/.
|
|
|
19
|
||
| |
20
|
|
| |
21
|
|
| |
22
|
Leo A. Meyerovich , Arjun Guha , Jacob Baskin , Gregory H. Cooper , Michael Greenberg , Aleks Bromfield , Shriram Krishnamurthi, Flapjax: a programming language for Ajax applications, Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications, October 25-29, 2009, Orlando, Florida, USA [doi>10.1145/1640089.1640091]
|
| |
23
|
|
|
24
|
||
|
25
|
Prototype. A JavaScript library that aims to ease development of dynamic Web applications. http://www.prototypejs.org/.
|
|
|
26
|
||
| |
27
|
Hridesh Rajan , Kevin Sullivan, Eos: instance-level aspects for integrated system design, Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering, September 01-05, 2003, Helsinki, Finland [doi>10.1145/940071.940111]
|
| |
28
|
|
|
29
|
Éric Tanter. Controlling aspect reentrancy. Journal of Universal Computer Science, 14(21):3498--3516, 2008. Best Paper Award of the Brazilian Symposium on Programming Languages (SBLP 2008).
|
|
| |
30
|
|
| |
31
|
|
| |
32
|
|
| |
33
|
|
| |
34
|
|
|
35
|
Naoyasu Ubayashi, Hidehiko Masuhara, and Tetsuo Tamai. An AOP implementation framework for extending join point models. In Walter Cazzola, Shigeru Chiba, and Gunter Saake, editors, Proceedings of the RAM-SE Workshop on Reflection, AOP, and Meta-Data for Software Evolution, pages 71--81. Fakultät für Informatik, Universität Magdeburg, 2004.
|
|
| |
36
|
Hironori Washizaki , Atsuto Kubo , Tomohiko Mizumachi , Kazuki Eguchi , Yoshiaki Fukazawa , Nobukazu Yoshioka , Hideyuki Kanuka , Toshihiro Kodaka , Nobuhide Sugimoto , Yoichi Nagai , Rieko Yamamoto, AOJS: aspect-oriented javascript programming framework for web development, Proceedings of the 8th workshop on Aspects, components, and patterns for infrastructure software, March 02-02, 2009, Charlottesville, Virginia, USA [doi>10.1145/1509276.1509285]
|
CITED BY26 Citations
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INDEX TERMSThe ACM Computing Classification System (CCS rev.2012)
PUBLICATION| Title | AOSD '10 Proceedings of the 9th International Conference on Aspect-Oriented Software Development table of contents | ||||||||||||||||||||||||||||||||||||||||||||||
| General Chairs | Jean-Marc Jezequel Université of Rennes 1 and INRIA, France | ||||||||||||||||||||||||||||||||||||||||||||||
| Program Chairs | Mario Sudholt Ecole des mines and INRIA, France | ||||||||||||||||||||||||||||||||||||||||||||||
| Pages | 13-24 | ||||||||||||||||||||||||||||||||||||||||||||||
| Publication Date | 2010-03-15 (yyyy-mm-dd) | ||||||||||||||||||||||||||||||||||||||||||||||
| Funding Source |
Fondo Nacional de Desarrollo Científico y Tecnológico |
||||||||||||||||||||||||||||||||||||||||||||||
| Sponsors | AOSA Aspect-Oriented Software Association | ||||||||||||||||||||||||||||||||||||||||||||||
| In-Cooperations | SIGPLAN ACM Special Interest Group on Programming Languages | ||||||||||||||||||||||||||||||||||||||||||||||
| SIGSOFT ACM Special Interest Group on Software Engineering | |||||||||||||||||||||||||||||||||||||||||||||||
| Publisher | ACM New York, NY, USA ©2010 | ||||||||||||||||||||||||||||||||||||||||||||||
| ISBN: 978-1-60558-958-9 doi>10.1145/1739230.1739233 | |||||||||||||||||||||||||||||||||||||||||||||||
| Conference |
MODULARITYModularity (formerly known as Aspect-oriented Software Development - AOSD)
|
||||||||||||||||||||||||||||||||||||||||||||||
| Paper Acceptance Rate 18 of 62 submissions, 29% | |||||||||||||||||||||||||||||||||||||||||||||||
| Overall Acceptance Rate 178 of 718 submissions, 25% | |||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||
REVIEWS
COMMENTSBe the first to comment To Post a comment please sign in or create a free Web account
Table of Contents| SESSION: Applications 1 | ||
| Parallel dynamic analysis on multicores with aspect-oriented programming | ||
| Danilo Ansaloni, Walter Binder, Alex Villazón, Philippe Moret | ||
| Pages: 1-12 | ||
| doi>10.1145/1739230.1739232 | ||
Full text: PDF
|
||
|
In most aspects, advice are synchronously executed by application threads, which may cause high overhead if advice execution is frequent or computationally expensive. When synchronous advice execution is not a necessity, asynchronous advice execution ...
expand
|
||
| AspectScript: expressive aspects for the web | ||
| Rodolfo Toledo, Paul Leger, Éric Tanter | ||
| Pages: 13-24 | ||
| doi>10.1145/1739230.1739233 | ||
Full text: PDF
|
||
|
JavaScript is widely used to build increasingly complex Web applications. Unsurprisingly, these applications need to address cross-cutting concerns. Therefore support for aspect-oriented programming is crucial to preserve proper modularity. However, ...
expand
|
||
| Reusable enterprise metadata with pattern-based structural expressions | ||
| Eli Tilevich, Myoungkyu Song | ||
| Pages: 25-36 | ||
| doi>10.1145/1739230.1739234 | ||
Full text: PDF
|
||
|
An essential part of modern enterprise software development is metadata. Mainstream metadata formats, including XML deployment descriptors and Java 5 annotations, suffer from a number of limitations that complicate the development and maintenance of ...
expand
|
||
| SESSION: Languages and implementation | ||
| Execution levels for aspect-oriented programming | ||
| Éric Tanter | ||
| Pages: 37-48 | ||
| doi>10.1145/1739230.1739236 | ||
Full text: PDF
|
||
|
In aspect-oriented programming languages, advice evaluation is usually considered as part of the base program evaluation. This is also the case for certain pointcuts, such as if pointcuts in AspectJ, or simply all pointcuts in higher-order aspect languages ...
expand
|
||
| An architecture for composing embedded domain-specific languages | ||
| Tom Dinkelaker, Michael Eichberg, Mira Mezini | ||
| Pages: 49-60 | ||
| doi>10.1145/1739230.1739237 | ||
Full text: PDF
|
||
|
Embedded domain-specific languages (EDSLs) are said to be easier to compose than DSLs that are implemented by preprocessors. However, existing approaches focus on composition scenarios where the use of abstractions from one domain does not affect the ...
expand
|
||
| Weaving generic programming and traversal performance | ||
| Bryan Chadwick, Karl Lieberherr | ||
| Pages: 61-72 | ||
| doi>10.1145/1739230.1739238 | ||
Full text: PDF
|
||
|
Developing complex software requires that functions be implemented over a variety of recursively defined data structures. While the design (and modeling) of structures is itself difficult, complex data can require even more complex functions. In this ...
expand
|
||
| SESSION: Managing models and code | ||
| Assessing the impact of aspects on model composition effort | ||
| Kleinner Farias, Alessandro Garcia, Jon Whittle | ||
| Pages: 73-84 | ||
| doi>10.1145/1739230.1739240 | ||
Full text: PDF
|
||
|
Model composition is a common operation used in many software development activities---for example, reconciling models developed in parallel by different development teams, or merging models of new features with existing model artifacts. Unfortunately, ...
expand
|
||
| From aspect-oriented models to aspect-oriented code?: the maintenance perspective | ||
| Aram Hovsepyan, Riccardo Scandariato, Stefan Van Baelen, Yolande Berbers, Wouter Joosen | ||
| Pages: 85-96 | ||
| doi>10.1145/1739230.1739241 | ||
Full text: PDF
|
||
|
Aspect-Oriented Modeling (AOM) provides support for separating concerns at the design level. Even though most AOM approaches provide means to execute the composition of the modularized concerns to obtain a composed model, it is also possible to keep ...
expand
|
||
| Tool support for crosscutting concerns of API documentation | ||
| Michihiro Horie, Shigeru Chiba | ||
| Pages: 97-108 | ||
| doi>10.1145/1739230.1739242 | ||
Full text: PDF
|
||
|
Writing detailed API (Application Programming Interface) documentation is a significant task for developing a good class library or framework. However, existing documentation tools such as Javadoc provide only limited support and thus the description ...
expand
|
||
| SESSION: Foundations | ||
| EffectiveAdvice: disciplined advice with explicit effects | ||
| Bruno C. d. S. Oliveira, Tom Schrijvers, William R. Cook | ||
| Pages: 109-120 | ||
| doi>10.1145/1739230.1739244 | ||
Full text: PDF
|
||
|
Advice is a mechanism, widely used in aspect-oriented languages, that allows one program component to augment or modify the behavior of other components. When advice and other components are composed together they become tightly coupled, sharing ...
expand
|
||
| Type relaxed weaving | ||
| Hidehiko Masuhara, Atsushi Igarashi, Manabu Toyama | ||
| Pages: 121-132 | ||
| doi>10.1145/1739230.1739245 | ||
Full text: PDF
|
||
|
Statically typed aspect-oriented programming languages restrict application of around advice only to the join points that have conforming types. Though the restriction guarantees type safety, it can prohibit application of advice that is useful, yet ...
expand
|
||
| A theory of distributed aspects | ||
| Nicolas Tabareau | ||
| Pages: 133-144 | ||
| doi>10.1145/1739230.1739246 | ||
Full text: PDF
|
||
|
Over the last five years, several systems have been proposed to take distribution into account in Aspect-Oriented Programming. While they appeared to be fruitful to develop or improve distributed component infrastructures or application servers, those ...
expand
|
||
| SESSION: Composition | ||
| A model for composable composition operators: expressing object and aspect compositions with first-class operators | ||
| Wilke Havinga, Lodewijk Bergmans, Mehmet Aksit | ||
| Pages: 145-156 | ||
| doi>10.1145/1739230.1739248 | ||
Full text: PDF
|
||
|
A considerable amount of research, especially within the OO and AOSD communities, has focused on understanding the potential and limitations of various composition techniques. This has led to a large amount of proposals for alternative composition techniques, ...
expand
|
||
| Composing aspects with aspects | ||
| Antoine Marot, Roel Wuyts | ||
| Pages: 157-168 | ||
| doi>10.1145/1739230.1739249 | ||
Full text: PDF
|
||
|
Aspect-oriented programming languages modularize crosscutting concerns by separating the concerns from a base program in aspects. What they do not modularize well is the code needed to manage interactions between the aspects themselves. Therefore aspects ...
expand
|
||
| Tracking code patterns over multiple software versions with Herodotos | ||
| Nicolas Palix, Julia Lawall, Gilles Muller | ||
| Pages: 169-180 | ||
| doi>10.1145/1739230.1739250 | ||
Full text: PDF
|
||
|
An important element of understanding a software code base is to identify the repetitive patterns of code it contains and how these evolve over time. Some patterns are useful to the software, and may be modularized. Others are detrimental to the software, ...
expand
|
||
| SESSION: Applications | ||
| AspectMatlab: an aspect-oriented scientific programming language | ||
| Toheed Aslam, Jesse Doherty, Anton Dubrau, Laurie Hendren | ||
| Pages: 181-192 | ||
| doi>10.1145/1739230.1739252 | ||
Full text: PDF
|
||
|
This paper introduces a new aspect-oriented programming language, AspectMatlab. Matlab® is a dynamic scientific programming language that is commonly used by scientists because of its convenient and high-level syntax for arrays, the fact that type ...
expand
|
||
| Disambiguating aspect-oriented security policies | ||
| Micah Jones, Kevin W. Hamlen | ||
| Pages: 193-204 | ||
| doi>10.1145/1739230.1739253 | ||
Full text: PDF
|
||
|
Many software security policies can be encoded as aspects that identify and guard security-relevant program operations. Bugs in these aspectually-implemented security policies often manifest as ambiguities in which aspects provide conflicting advice ...
expand
|
||
| A permission system for secure AOP | ||
| Wouter De Borger, Bart De Win, Bert Lagaisse, Wouter Joosen | ||
| Pages: 205-216 | ||
| doi>10.1145/1739230.1739254 | ||
Full text: PDF
|
||
|
The integration of third-party aspects into applications creates security challenges. Due to the intrusive impact of aspects, one cannot guarantee that the dynamic composition of aspects does not lead to misbehavior. The newly composed aspect typically ...
expand
|
||
| SESSION: Industry track | ||
| The aspect-oriented design of the PUMA C/C++ parser framework | ||
| Matthias Urban, Daniel Lohmann, Olaf Spinczyk | ||
| Pages: 217-221 | ||
| doi>10.1145/1739230.1739256 | ||
Full text: PDF
|
||
|
Puma is a framework for the development of applications that analyze and, optionally, transform C or C++ source code. It supports ISO C and C++ as well as many language extensions of the GNU Compiler Collection and Microsoft Visual C++. Aspects played ...
expand
|
||
| Program analysis environment for writing COBOL aspects | ||
| Hideaki Shinomi, Yasuhisa Ichimori | ||
| Pages: 222-230 | ||
| doi>10.1145/1739230.1739257 | ||
Full text: PDF
|
||
|
COBOL is still an important language for building mission critical enterprise systems, and there is huge amount of existing COBOL programs. We have been developing an aspect-oriented COBOL and its development environment. We are applying aspect orientation ...
expand
|
||