ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Expressive and safe static reflection with MorphJ
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Domain-specific languages and program generation with meta-AspectJ
ACM Transactions on Software Engineering and Methodology (TOSEM)
A proposal for extensible AspectJ
Proceedings of the 4th workshop on Domain-specific aspect languages
Pervasive Load-Time Transformation for Transparently Distributed Java
Electronic Notes in Theoretical Computer Science (ENTCS)
An exploratory study of fault-proneness in evolving aspect-oriented programs
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Morphing: Structurally shaping a class by reflecting on others
ACM Transactions on Programming Languages and Systems (TOPLAS)
Statically safe program generation with SafeGen
Science of Computer Programming
Hi-index | 0.00 |
Domain-specific languages hold the potential of automating the software development process. Nevertheless, the adoption of a domain-specific language is hindered by the difficulty of transitioning to different language syntax and employing a separate translator in the software build process. We present a methodology that simplifies the development and deployment of small language extensions, in the context of Java. The main language design principle is that of language extension through unobtrusive annotations. The main language implementation idea is to express the language as a generator of customized AspectJ aspects, using our Meta-AspectJ tool. The advantages of the approach are twofold. First, the tool integrates into an existing software application much as a regular API or library, instead of as a language extension. This means that the programmer can remove the language extension at any point and choose to implement the required functionality by hand without needing to rewrite the client code. 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.