论坛首页 Java企业应用论坛

AOP——新一代的 Java 语言

浏览 30693 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-09-26  
http://digiblog.org/forum/viewnews.php?NewsId=1464
http://news.com.com/2100-1007_3-5081831.html

CNET:在Microsoft C#开始广泛收获市场的时候,Java社区也正在紧追不舍。除了提供更加易用的开发工具来和Visual Studio .NET竞争之外,他们也在考虑让Java拥有一个更加高级的开发语言。这就是AOP-Aspect-oriented programming(面向方面编程)。现在IBM和JBoss已经开始活动试图建立一个AOP的标准,然而整个过程很可能要耗时一年才行。他们预计如果AOP成为了Java的标准功能,那Java就能够成为比微软的.Net根据吸引力的开发语言了。
AOP得到了包括IBM在内的公司的高度重视,不得不归结于C#的成功。而事实上,C#模仿了大量的Java的特性,微软多年来用C#赶超Java的努力终于如愿以偿。现在Java也必须要改进自己了,这就是让Java开发工作有更高的生产力。AOP就是为了满足这一要求。AOP可以通过集中控制会在一个程序多个地方使用的特定功能的策略来简化开发过程。比如一个程序员能够指定一条规则来告诉WebServer如何处理人们登录到网站上的事件。AOP可以一次性处理完成,而不是需要针对每一个个人来编写多次规则。程序员也能够生成他们自己的“Aspects”来控制特定的功能。分析人士认为AOP很好的补充了面对对象的变成技术。

很多java软件提供上都已经在研究AOP Java了。IBM研究所有AspectJ,他们也资助了另一个OpenSource的项目AspectJ-一种为AOP定制的语言,还有另一个OpenSource计划AspectWerkz。BEA公司上个月同样介绍了他们的WebLogic Aspect Framework,能够让开发者在WebLogic上试验AOP技术。不光是Java社区,就连微软阵营也有公司在研究AOP。一家有微软的前官员创建的软件公司Intentional Software也在从事这方面的研究,并且在开发商业产品。他们和微软签署有首先商讨协议。

据说微软的.NET Framework已经借鉴了AOP的很多技术,只不过微软没有使用AOP这个名词(而是称作为UserControl/ServerControl)。

AOP是OOP之后的又一次编程语言的重要创新,不过和当初一样,AOP面临的还是不同的标准和想法。只有业界统一AOP之后,它才能快速发展。至于现在大家只能通过各种项目来稍微领略一下其风采。
   发表时间:2003-09-26  
http://www.zdnet.com.cn/news/software/story/0,3800004741,39173294,00.htm

作者: ZDNet China
Thursday, September 25 2003 2:26 PM ZDNet China 9月25日报道:IBM与开放源代码Java软件商JBoss有意进行一项Java标准化计划,意在制约日益受到欢迎的微软C#语言。  

两家公司目前独立投资于一项软件开发技术-AOP(aspect-oriented programming),可加速应用开发速度,且更具弹性,并不易出错。

JBoss企业开发与策略副总裁Bob Bickel透露,现在两家公司有意把AOP变成Java的标准功能。JBoss最近已加入Java正式开发机构Java Community Process。

把AOP加入Java规格至少还需一两年时间,此举可让Java开发人员获得更先进的程序编写技术。JBoss与IBM联手要将AOP加入Java的主因来自于微软在C#语言上的成功。C#语言在许多方面都具有Java的特质。JBoss主管认为微软通过各种手段意欲以C#取代Java。

“JBoss与IBM都相当关切C#热门度有超越Java的迹象。”Bickel表示。

微软没有立即针对此事发表评论。

JBoss免费提供JBoss Java服务器软件,营收来源以销售服务为主;IBM去年则挤下BEA成为Java应用服务器软件市场的龙头老大。

对于Java阵营而言,如何让Java开发人员更具生产力可说是对付微软竞争的当务之急。

Java原创者Sun计划推出Project Rave开发工具,意在针对微软Visual Basic工具最厉害的简易应用开发上。BEA上月也推出WebLogic Workshop 8.1,企图拿下更大的Java服务器软件占有率。

Forrester分析师John Meyer表示,短期内,简单易用的工具将有助于加速Java开发,且也有助于让Java迎头赶上微软相当成功的开发工具产品线。

“这是持续性成熟的过程。”Meyer表示,“工具通过标准审议后还需几年时间才会被产业与大众所接受。”

AOP技术虽然还非主流程序工具,但Java厂商指出这些先进技术有助于长期发展。

BEA上月推出的WebLogic Aspec Framework就是要让Java开发人员以BEA的WebLogic工具与服务器软件来尝试AOP技术。

IBM Research也在好几项计划中投资AOP,包括一项称为HyperJ计划。IBM同时在开放源代码开发工具计划Eclipse中加入AOP专用的AspecJ语言的研发工作。

JBoss创始人Marc Fleury表示,微软的.Net Framework其实借用了许多AOP技术,只是微软在营销上不使用此名词。

Fluery指出,JBoss 4.0中加入的 aspect-oriented结构是学习Visual Basic .Net的开发便利性。后者在开发过程中会把比较困难的程序工作(如交易或快取)以简单的卷标来做运用。

曾参与过最早期AspectJ计划的Ron Bodkin对于AOP在商业系统上的采用表示相当乐观。他表示,对此需求的最大驱动力来自于J2EE系统在编程上过于困难,使得应用开发流程速度过慢,造成企业内部会堆积许多应用开发的请求。

不过AOP要成为主流前还会面临一些阻碍。虽然AspectJ算是Java的延伸,但开发人员还是需要将过受训才会使用新技术。另外,Bodkin也指出,产业目前尚未有共识何谓aspect-oriented程序工具,对于该技术的未来走向也不明确。

“面向对象编程目前还是在初期发展阶段,大家对于对象的定义有相当分歧。标准化虽然有帮助,但在现阶段中,开放源代码对于程序人员会更有用些。”Bodkin表示。(陈奭璁/熙平)
0 请登录后投票
   发表时间:2003-09-26  
AOP 是 Java 语言最新的发展,其重要性已经超过了 JDK 1.5 新增的泛型编程能力。说实话我并不觉得 GP 比 OOP 更有用,而 AOP 则是更大范围的 OOP。
关于在 Java 中如何做范型开发,可以参考 CSDN 上的这篇介绍文章:
http://www.csdn.net/Develop/Read_Article.asp?Id=18750
0 请登录后投票
   发表时间:2003-09-26  
theserverside上介绍说AspectJ使用起来很方便,实现起来非常复杂
0 请登录后投票
   发表时间:2003-10-10  
发现自己永远都是落后者
0 请登录后投票
   发表时间:2003-10-13  
AOP不是语言,而是一种思考问题的方式
AOP也不可能取代OOP,是OOP的一种补充
0 请登录后投票
   发表时间:2003-12-12  
是的, 如果说OOP是通过纵向(up -- down)的形式来扩展功能的话, 那么AOP就是横向(right - left )来扩展功能.
Hibernate在运行期将POJO转换成PO, 就用到了AOP
0 请登录后投票
   发表时间:2003-12-13  
引用

Hibernate在运行期将POJO转换成PO, 就用到了AOP

Hibernate用的是cglib,cglib是动态代理,我觉得cglib和aop还是不同的,虽然cglib和aop(我是指像AspectJ这样的采用静态织入的aop)都可以实现interception功能。不过无所谓,只要能实现想要的功能,管它叫什么呢。

还有,也不是像你说的那样(Hibernate用cglib来POJO转换成PO),hibernate用cglib只不过是为了实现一部分的lazy loading功能,即使hibernate不用cglib一样可以工作,只不过可能有少许的性能损失。
0 请登录后投票
   发表时间:2003-12-13  
看来坛子里已经有不少朋友在关注和研究 AOP 了,这是一个很好的现象(知道在哪里可以找到老师了)。不过现在不学习 AOP 还可以找到很多的借口,诸如技术和开发工具还不成熟,还没有看到很多商业上的成功案例等等。然后还可以引用 TDM 大师的经典看法,软件开发中人是首先需要关注的问题,不可因为关注 AOP 而忽视掉解决人的问题。和 jlinux 等一些朋友讨论后得到的结论是很多软件公司存在的问题是人的问题而非技术的问题。从技术上来讲,依靠 OOAD 无法解决的问题其实不多,只能说不能很好地解决,不能说完全不能解决。(包括 AOP 举例最多的那个权限控制的关注点问题,我就不认为 OOAD 一定不能很好地解决。AOP 似乎有些夸大其辞了。说自己的优点前首先要批评别人的缺点,这似乎也是一个典型的说话方面的设计模式了)
说上面这些话确实是有些象在捣糨糊,不过暂时我还没有完全考虑清楚 AOP 对于项目开发的意义。最重要的是否可以收到立杆见影的效果?OOP 从刚开始发展到被普遍接受经过了很多年,所以我们也大可不必马上拥抱 AOP。

技术尚未成熟就急于采用是左倾,技术早已成熟还不采用是右倾,现在就急于将 AOP 采用在项目开发中似乎是左倾了一点。最起码技术负责人自己先研究清楚了才行。另外程序员的学习成本和熟练掌握需要的时间也是一个重要的考虑因素。最好是主要的技术负责人采用 AOP 的思想搭出一个开发框架来,普通的开发人员完全不需要知道 AOP,只需要按照规定的流程填代码即可。如果技术人员不分成多个层次,容易造成花费大量时间学习新技术产出却离预计很远的情况。这种情况我想是任何一个老板都不能同意的。一个 PM 必须无时无刻把成本放在头脑里。

我看过一些 AOP 的介绍,不过没有开始深入学习。Java 开发人员接受新思想是最快的,所以我预计大约在 1 年以后 AOP 会发展为一种主流的开发方式(是不是有点太乐观了?)。还有 1 年时间,来得急学习,呵呵。
0 请登录后投票
   发表时间:2003-12-15  
引用
Hibernate用的是cglib,cglib是动态代理,我觉得cglib和aop还是不同的,虽然cglib和aop(我是指像AspectJ这样的采用静态织入的aop)都可以实现interception功能。不过无所谓,只要能实现想要的功能,管它叫什么呢。

还有,也不是像你说的那样(Hibernate用cglib来POJO转换成PO),hibernate用cglib只不过是为了实现一部分的lazy loading功能,即使hibernate不用cglib一样可以工作,只不过可能有少许的性能损失。


刚开始研究, 抛了一块砖.
多谢你的答复. 我可以更明确的去看它
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics