JAVA网页编程之Java中完成基于Aspectwerkz的AOP开辟
net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。1、AOP编程概览面向对象编程手艺进进软件开辟的支流对软件的开辟体例发生了极年夜的影响,开辟者能够用一组实体和这些实体之间的干系将体系抽象地暗示出来,这使得他们可以计划出范围更年夜、更庞大的体系,开辟周期也比之前更短。OO开辟的独一成绩是,它实质上是静态的,需求的渺小变更便可能对开辟进度形成严重影响。
Aspect-OrientedProgramming(AOP)是对OO手艺的增补和完美,它同意开辟者静态地修正静态的OO模子,机关出一个可以不休增加以满意新增需求的体系,就象实际天下中的对象会在其性命周期中不休改动本身,使用程序也能够在开展中具有新的功效。
比方,很多人想必有过在开辟复杂的Web使用时将Servlet作为出口点的履历,即用Servlet吸收HTML表单的输出,经由处置后前往给用户。入手下手时的Servlet多是十分复杂的,只要恰好满意用户需求的起码量的代码。但是,跟着“第二需求”的完成,比方完成非常处置、平安、日记等功效,代码的体积就会增添到本来的3、四倍――之以是称之为“第二需求”,是由于Servlet的基础功效是承受和处置用户的哀求,关于这个方针来讲,日记、平安之类的机制并非必不成少的。
AOP同意静态地改动OO的静态模子,不用修正本来的静态模子也能够到场满意第二需求所需的代码(实践上,乃至连本来的源代码也不必要)。更使人称奇的是,厥后到场的代码常常能够会合在一个中央,而不用象纯真利用OO时那样将厥后到场的代码分离到全部模子。
2、基础术语
在先容AOP开辟实例之前,我们先来懂得几个尺度的AOP术语,以便更好地把握相干的观点。
Cross-cuttingconcern
在OO模子中,固然年夜部分的类只要单一的、特定的功效,但它们一般会与其他类有着配合的第二需求。比方,当线程进进或分开某个办法时,我们大概既要在数据会见层的类中纪录日记,又要在UI层的类中纪录日记。固然每一个类的基础功效极然分歧,但用来满意第二需求的代码却基础不异。
Advice
它是指想要使用到现有模子的附加代码。在本例中,它是指线程进进或加入某个办法时要运转的日记代码。
Point-cut
这个术语是指使用程序中的一个实行点,在这个实行点上必要接纳后面的cross-cuttingconcern。在本例中,当线程进进一个办法时呈现一个Point-cut,当线程分开办法时又呈现另外一个Point-cut。
Aspect
Point-cut和advice分离在一同就叫做aspect。鄙人面的例子中,我们经由过程界说一个point-cut并赐与得当的advice到场了一个日记(logging)aspect。
AOP另有别的很多特征和术语,比方引进(Introduction),即把接口/办法/域引进到现有的类――它极年夜地拓宽了开辟者的设想力。不外本文只先容一些最基础的持性,熟习这里先容的观点后,你再深切一步研讨AOP的别的特征,看看怎样在本人的开辟情况中利用它们。
3、现有的框架
今朝最成熟、功效最丰厚的AOP框架当数AspectJ,AspectJ已成为年夜多半别的框架扈从的尺度。可是,AspectJ也走出了非同平常的一步,它的完成为Java言语增加了新的关头词。固然新的语法其实不难学,但却意味着我们必需换一个编译器,还要从头配制编纂器,只要如许才干顺应新的语法。在范围较年夜的开辟组中,这些请求大概难以办到,由于全部开辟小组城市遭到影响。因为言语自己的变更,开辟小组把AOP手艺引进到现有项目标进修周期随之延伸。
如今我们必要的是如许一个框架,它能够便利地引进,且不会对本来的开辟和机关历程发生任何影响。满意这些请求的框架不止一个,比方JBossAOP、Nanning、Aspectwerkz(AW)。本文选用的是Aspectwerkz,由于它多是最简单进修的框架,也是最简单集成到现有项目标框架。
Aspectwerkz由JonasBoner和AlexandreVasseur创立,它是今朝最疾速、功效最丰厚的框架之一。固然它还缺少AspectJ的某些功效,但己足以满意年夜多半开辟者在很多情况下的必要。
Aspectwerkz最使人感乐趣的特征之一是它可以以两种分歧的形式运转:联机形式和脱机形式。在联机形式下,AW间接干涉属于JVM的底层类装进机制,截取一切的类装进哀求,对字节码实行立即转换。AW供应了干涉类装进历程的很多选项,别的另有一个替换bin/java命令的封装剧本,这个剧本可以依据Java版本和JVM才能主动天生一组可运转的配制。关于开辟者,联机形式有很多长处,它能拔出就任何类装进器并在类装进时代天生新的类。也就是说,我们不用手工修正使用程序的类,只需按一般的体例部署便可。不外,联机形式请求对使用服务器举行分外的配制,偶然这一请求大概很难满意。
在脱机形式下,天生类必要二个步骤。第一步是用尺度的编译器编译,第二步是重点――以脱机形式运转AWcompiler编译器,让它处置重生成的类。编译器将修正这些类的字节码,依据一个XML文件的界说,在得当的point-cut拔出advice。脱机形式的长处是AWcompiler天生的类可以在任何JVM1.3以上的假造机运转,本文上面要用的就是这类形式,由于它不必要对Tomcat作任何修正,只需对机关历程稍作修正就能够照搬到年夜多半现有的项目。
4、安装
本文将以一个复杂的Web使用程序为例,它用Ant编译,部署在Tomcat4+Servlet容器上。上面我们假定读者己筹办好上述情况,包含JVM1.3+,同时Tomcat被设置成从webapps文件夹主动部署使用,主动将WAR扩大到目次(这是Tomcat默许的操纵体例,因而只需你还没有修正Tomcat的运转体例,上面的典范可间接运转)。我们将把Tomcat的安装地位称为%TOMCAT_HOME%。
⑴从http://apectwerkz.codehaus.org/下载Aspectwerkz,解开紧缩到得当的地位。我们将把这个地位称为%ASPECTWERKZ_HOME%。
⑵设置%ASPECTWERKZ_HOME%情况变量。
⑶将Aspectwerkz到场到PATH情况变量,即设置setPATH=%PATH%;%ASPECTWERKZ_HOME%inaspectwerkz
⑷下载本文的树模程序,将它放进%TOMCAT_HOME%webapps文件夹。
⑸将Aspectwerkz的运转时类到场到Tomcat的classpath。你能够将它的JAR文件放进示例使用的WEB-INFlib文件夹,或放进%TOMCAT_HOME%commonlib。
前些天,在CSDN上看到了一个消息,说是ASP.NETAJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。 是一种将安全性(Security)列为第一优先考虑的语言 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 是一种使网页(Web Page)产生生动活泼画面的语言 Java 编程语言的风格十分接近C、C++语言。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
页:
[1]
2