|
ABSTRACT
Meta-AspectJ (MAJ) is a language for generating AspectJ programs using code templates. MAJ itself is an extension of Java, so users can interleave arbitrary Java code with AspectJ code templates. MAJ is a structured metaprogramming tool: a well-typed generator implies a syntactically correct generated program. MAJ promotes a methodology that combines aspect-oriented and generative programming. A valuable application is in implementing small domain-specific language extensions as generators using unobtrusive annotations for syntax extension and AspectJ as a back-end. The advantages of this approach are twofold. First, the generator integrates into an existing software application much as a regular API or library, instead of as a language extension. Second, a mature language implementation is easy to achieve with little effort since AspectJ takes care of the low-level issues of interfacing with the base Java language. In addition to its practical value, MAJ offers valuable insights to metaprogramming tool designers. It is a mature metaprogramming tool for AspectJ (and, by extension, Java): a lot of emphasis has been placed on context-sensitive parsing and error reporting. As a result, MAJ minimizes the number of metaprogramming (quote/unquote) operators and uses type inference to reduce the need to remember type names for syntactic entities.
REFERENCES
Note: 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
|
Jonthan Bachrach , Keith Playford, The Java syntactic extender (JSE), Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, p.31-42, October 14-18, 2001, Tampa Bay, FL, USA
|
 |
2
|
|
| |
3
|
|
| |
4
|
|
 |
5
|
|
| |
6
|
Bravenboer, M., Vermaas, R., Vinju, J., and Visser, E. 2005. Generalized type-based disambiguation of meta programs with concrete object syntax. In Generative Programming and Component Engineering (GPCE) Conference, R. Glück and M. Lowry, Eds. Lecture Notes in Computer Science, vol. 3676. Springer, Berlin, Germany, 157--172.
|
| |
7
|
|
 |
8
|
|
| |
9
|
Cristiano Calcagno , Walid Taha , Liwen Huang , Xavier Leroy, Implementing multi-stage languages using ASTs, Gensym, and reflection, Proceedings of the 2nd international conference on Generative programming and component engineering, p.57-76, September 22-25, 2003, Erfurt, Germany
|
 |
10
|
Shigeru Chiba, A metaobject protocol for C++, Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications, p.285-299, October 15-19, 1995, Austin, Texas, United States
|
| |
11
|
|
 |
12
|
|
| |
13
|
|
 |
14
|
|
| |
15
|
|
| |
16
|
|
 |
17
|
|
| |
18
|
Huang, S. S., Zook, D., and Smaragdakis, Y. 2005. Statically safe program generation with SafeGen. In Proceedings of the Generative Programming and Component Engineering Conference. 309--326.
|
 |
19
|
Gregor Kiczales , Erik Hilsdale , Jim Hugunin , Mik Kersten , Jeffrey Palm , William Griswold, Getting started with ASPECTJ, Communications of the ACM, v.44 n.10, p.59-65, Oct. 2001
[doi> 10.1145/383845.383858]
|
 |
20
|
Eugene Kohlbecker , Daniel P. Friedman , Matthias Felleisen , Bruce Duba, Hygienic macro expansion, Proceedings of the 1986 ACM conference on LISP and functional programming, p.151-161, August 1986, Cambridge, Massachusetts, United States
[doi> 10.1145/319838.319859]
|
| |
21
|
Lohmann, D., Blaschke, G., and Spinczyk, O. 2004. Generic advice: On the combination of AOP with generative programming in AspectC++. In Generative Programming and Component Engineering (GPCE) Conference, G. Karsai and E. Visser, Eds. Lecture Notes in Computer Science, vol. 3286. Springer Verlag, Berlin, Germany, 55--74.
|
| |
22
|
|
| |
23
|
|
 |
24
|
|
 |
25
|
|
 |
26
|
Macneil Shonle , Karl Lieberherr , Ankit Shah, XAspects: an extensible system for domain-specific aspect languages, Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 26-30, 2003, Anaheim, CA, USA
[doi> 10.1145/949344.949349]
|
| |
27
|
Smaragdakis, Y. 2004. A personal outlook on generator research. In Domain-Specific Program Generation, C. Lengauer, D. Batory, C. Consel, and M. Odersky, Eds. Lecture Notes in Computer Science, vol. 3016, Springer-Verlag, Berlin, Germany.
|
| |
28
|
|
 |
29
|
Sergio Soares , Eduardo Laureano , Paulo Borba, Implementing distribution and persistence aspects with aspectJ, Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, November 04-08, 2002, Seattle, Washington, USA
|
 |
30
|
|
| |
31
|
Tilevich, E., Urbanski, S., Smaragdakis, Y., and Fleury, M. 2003. Aspectizing server-side distribution. In Proceedings of the Conference on Automated Software Engineering Conference. IEEE Computer Society Press, Los Alamitos, CA.
|
| |
32
|
|
| |
33
|
Volder, K. D. 1998. Type-oriented logic meta programming. Ph.D. dissertation. Vrije Universiteit Brussel, Brussels, Belgium.
|
 |
34
|
|
| |
35
|
Zook, D., Huang, S. S., and Smaragdakis, Y. 2004. Generating AspectJ programs with meta-AspectJ. In Generative Programming and Component Engineering (GPCE) Conference. Springer-Verlag, Berlin, Germany, 1--18.
|
|