Runtime aspect weaving through metaprogramming

Runtime aspect weaving through metaprogramming
复制标题

通过元编程进行运行时方面编织

DOI:
10.1145/508386.508396
复制
发表时间:
2002
期刊:
--
影响因子:
--
通讯作者:
Wilson C. Hsieh
Wilson C. Hsieh
中科院分区:
--
文献类型:
--
作者:
J. Baker;Wilson C. Hsieh

文献摘要

被引文献

相似文献

我们描述了Java语言的一个扩展Handi-Wrap,它支持在运行时将方面编织到代码中。Handi-Wrap中的方面采用方法包装器的形式,它允许在方法体周围插入方面代码,就像AspectJ中的通知一样。与静态方面语言(如AspectJ)相比,Handi-Wrap有几个优势。首先,方面可以编织到二进制库中。其次,Handi-Wrap中的包装器是一类Java值,它允许用户利用Java机制来定义和编织包装器。例如,可以向包装器传递显式构造函数参数,并且可以组合包装器对象。最后,可以包装所有Java类中的方法,包括匿名类。Handi-Wrap的原型是在一个面向Java的编译时元编程系统Maya中实现的;我们简要描述了Maya的功能如何支持Handi-Wrap。
We describe an extension to the Java language, Handi-Wrap, that supports weaving aspects into code at runtime. Aspects in Handi-Wrap take the form of method wrappers, which allow aspect code to be inserted around method bodies like advice in AspectJ. Handi-Wrap offers several advantages over static aspect languages such as AspectJ. First, aspects can be woven into binary libraries. Second, a wrapper in Handi-Wrap is a first-class Java value, which allows users to exploit Java mechanisms to define and weave wrappers. For example, wrappers can be passed explicit constructor arguments, and wrapper objects can be composed. Finally, methods in all Java classes, including anonymous classes, can be wrapped. A prototype of Handi-Wrap is implemented in a compile-time metaprogramming system for Java, called Maya; we briefly describe how Maya's features support Handi-Wrap.