简单生活 发表于 2015-1-18 11:33:48

JAVA网页设计Aspects:一个处置注解的复杂工具?仓酷云

JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。只管良多人以为Aspect合用于像事件办理、缓存、耐久化、基于脚色的平安等方面的横向存眷点(cross-cuttingconcerns),RamnivasLaddad提到了其别的一种主要代价,就是作为一般项目使用注解的推进者。
注解,在JavaSE5.0中作为Java元数据工具(JSR175)被到场,供应了一种给程序元素增添元数据的办法。它们被用来设置容器、形貌耐久层设置、设置平安脚色,而且由几近全体最新的JSR尺度所界说。它们还包括了给Java代码增添自界说注解的机制,和经由过程反射供应编程会见元数据注解的办法。
面向方面编程(AOP)已被用来完成各类横向存眷点(cross-cuttingconcerns),局限从复杂的日记到初级的使用程序平安和事件办理。利用Aspects作为一种完成注解处置器的办法,则是对它们的一种分歧思索办法,分歧于传统架构师的“横向存眷点(crosscuttingconcerns)”视角的办法。Ramnivas谈到了使用Aspect和AOP注解,经由过程利用自界说注解给Java使用程序增添横向举动(cross-cuttingbehavior)。他议论了元数据和AOP互相给对方带来了甚么。元数据给选择毗连点(joinpoints)带来了附加信息,在那边Pointcuts利用注解来捕捉毗连点(joinpoints)。在特定用例情形下,它还匡助创立松耦合的aspect。而AOP则带来了一种消耗和供给注解的体系的办法。利用AOP供给元数据还给我们带来了整齐代码。利用AOP消耗元数据比起利用注解处置工具(APT)选项来有很多优点。
Ramnivas劝诫说利用元数据扩大Java言语多是双刃剑(既壮大又伤害)。另外一方面,注解使我们无需修正中心言语就能够给Java言语增添新的特征,这就使其成了一个开放的言语;在最好情形下,准绳性的扩大可以克制宿主言语的范围性。另外一方面,不尺度的、出格的、不联贯注解集大概招致代码不简单被了解。
从AOP取得年夜部分优点的最好理论之一就是利用元数据往为横向存眷点(cross-cuttingconcerns)捕捉毗连点(joinpoints)。记着,注解应当在毗连点处形貌甚么是“true”(前提)——在这些points处甚么不该该产生(举措)。他还倡议开辟者利用已有的注解(好比@Entity、@Table、@WebService等)。把没有元数据的pointcut看做是首选并依附于编程元素自己。并且,要制止特定完成的注解。懂得一同利用元数据和AOP的价值亲睦处是有匡助的。元数据能够以各类体例被消耗,懂得这些利用体例将匡助我们洞悉AOP和元数据的分离。Ramnivas在其AOP和元数据的文章(第1部分和第2部分)中给出了一些最好理论而且倡议开辟者不要太过寻求自界说注解。
在完成自界说注解过程当中次要的计划思索是,甚么(元数据,举动)、什么时候(编译时,运转时)、怎样(APT,运转时反射,AOP)在Java使用程序中使用注解。JohnHeintz比来做了一个关于给Java注解增添举动的电影,内里他对照了在Java使用中完成自界说注解的分歧计划手艺。John会商了字节码转换,其包含Aspect,将其作为三品种型注解处置选项之一。


[*]发生器:这一注解处置选项包含读取源码并发生新的源码或修正已有源码。ATP和XDoclet属于这一范例。
[*]字节码转换:这些注解处置器剖析带有注解的类文件并开释出修正过的类和新发生的类。它们还大概发生非类产品如XML设置文件。字节码转换的例子包含AspectJ、Spring、Hibernate、CGLib和BCEL。
[*]运转时反射:这个选项利用反射API在运转时用程序反省对象。运转时反射的例子有如Java5+反射和CommonsAttributes类库。测试框架JUnit和TestNG利用运转时反射处置注解。
InfoQ就完成自界说注解过程当中Aspect所饰演的脚色采访了John。他说实践上它只是在完成自界说注解时应当被思索的一种均衡力气(工程上的折衷)。他还提到注解基于方面的完成供应了完成注解举动的年夜多半烦琐办法和一个会合的界说。可是开辟者必需分明地纪录非当地语义和关于构建或部署工具链(tool-chain)(编译或运转时编织)的影响。
检察英文原文:Aspects:AnEasyToolforAnnotationHandling?
来自:http://www.infoq.com/cn/news/2008/09/aspects-annotations

专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。

深爱那片海 发表于 2015-1-20 05:48:49

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

只想知道 发表于 2015-1-25 17:21:22

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

再见西城 发表于 2015-1-26 22:28:31

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

透明 发表于 2015-1-27 14:50:49

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

小妖女 发表于 2015-1-28 05:45:20

是一种语言,用以产生「小应用程序(Applet(s))

爱飞 发表于 2015-1-31 19:41:32

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

小魔女 发表于 2015-2-5 04:21:41

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

金色的骷髅 发表于 2015-2-6 17:08:35

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

海妖 发表于 2015-2-7 09:55:54

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

若天明 发表于 2015-2-12 01:30:05

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

简单生活 发表于 2015-3-2 20:51:16

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

仓酷云 发表于 2015-3-5 01:05:21

是一种语言,用以产生「小应用程序(Applet(s))

冷月葬花魂 发表于 2015-3-11 00:03:44

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

兰色精灵 发表于 2015-3-14 10:51:43

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

因胸联盟 发表于 2015-3-15 03:46:51

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

若相依 发表于 2015-3-21 17:13:42

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

活着的死人 发表于 2015-3-28 02:34:21

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

再现理想 发表于 2015-4-4 20:47:38

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

莫相离 发表于 2015-5-4 07:59:01

是一种使用者不需花费很多时间学习的语言
页: [1]
查看完整版本: JAVA网页设计Aspects:一个处置注解的复杂工具?仓酷云