Reflection,MOP和AOP :: Sharing
来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=129221 存档链接: https://web.archive.org/web/20041208123817id_/http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=129221
Sharing <<<和你的环境变量作斗争 | 首页 | Article Reading>>> 2004-04-05 Reflection,MOP和AOP AOP(Aspect Oriented Programming)是最近这些年比较时髦的名词,大概最早由Gregor Kiczales(Xerox PARC)在 ECOOP’ 97提出来的(未精确考证,有问题请指正)。AOP的源头考证是我在研究MOP(Meta Object Protocol)和Reflection时发现的,本来觉得AOP没有太多新意,和MOP有相同的基本思想。谁料在阅读Gregor Kiczales的MOP文章(大概在86年左右提出)的时候,赫然发现了他后来的关于AOP的文章。 让我来揣测一些这些概念发展的基本轨迹:首先在面向对象技术提出以后,就出现了OO与meta-programming技术的结合;接着,在1982年Brian Cantwell Smith在其博士论文中Procedual Reflection in Programming Language中对于Refelction的精辟论述,又创造了一个经典;在1986年Gregor Kiczales的文章提到了MOP,在97年Gregor Kiczales提出AOP以前,他一直在靠MOP过日子。虽然所有的这些概念,它们都借鉴了类似的想法。不过,实在是不能给我耳目一新的感觉,我太期待技术的飞跃了。 附: Reflection:翻译为反射。对反射的解释是这样,考虑有一个由虚拟机构成的塔,在每一层塔上运行的程序,对于解释他的虚拟机来说,只是数据而已;如果程序能够操作这些数据,就相当于它改变了自己的执行。这就像一个人照镜子一样,称为反射。后来,反射在中间件中得到了许多应用,这是的解释是:程序与其有因果关联的数据。多作为创建有自适应能力的程序的技巧。通常将反射分为结构反射(Structual Reflection)和行为反射(Behavior Reflection)。结构反射一般指系统的结构能够动态的改变,比如给对象增加一个属性,Introspection可以认为是结构反射的一种;行为反射指动态的改变系统的语义,比如AOP实际上改变了一个对象方法的语义。换一种方法,又可以分为编译时反射和运行时反射。Java是具有强大反射能力的语言。82年Brian Cantwell Smith靠对Reflection的研究获得博士学位,现在居然还有人能够通过应用Reflection技巧写博士学位论文,真是太令人惊奇了。 MOP:Meta Object Protocol即元对象协议。MOP协议最初提出来的背景是“开放的实现”。对象的BlackBox抽象应该能够开放。它的实现技巧和现代的AOP是一样的,只是MOP更关注开放的实现。与Reflection一样,MOP也将系统分为元层(Meta Layer)和基本层(Base Layer),元对象生来就是为对象服务的。 AOP:关于AOP的资料很多,与MOP不同,AOP更注重于“分离不同的需要关注的问题”。AOP占领了本来属于MOP、却由于MOP没有声明拥有的领地,或者这只是作者的技巧而已。 mep 发表于 2004-04-05 20:12 引用Trackback(0) | 编辑 评论 让我对反射有了更清晰的认识。
现在居然还有人能够通过应用Reflection技巧写博士学位论文 老外看论文更注重你在所写的论文中所做的贡献和工作,这是我前年投的一片文章被退的切实体会,希望你早日通过答辩,发文成功! founder_chen ( osthoughts.blogbus.com ) 发表于 2004-04-06 09:00 多谢。:) mep ( ) 发表于 2004-04-06 09:57 发表评论 最后更新 微软的Domain-Specific Language 长沙丧葬风俗旁听 服务器端线程模型 多种持续集成工具全面比较 Outlook & Blog 贝克汉姆毁掉足球? Gnome2.8 Released 安装X.org 6.8续 安装X.org 6.8 清朝的后宫 mep Homepage