JAVA教程之进修条记-标签利用(J2SE5.0)中的元数据...
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,j2se|条记|数据办法和正文要把你的JAVA代码和AOP分离起来,可使用一些标签,就像新的JDK5.0版本中的元数据和XDoclet
。关于你的JAVA办法,就有点像利用synchronized一样。当你把你的办法标注为synchronized,就标明
你高数JVM你的这个办法在实行的利用是必要同步的。正文标签同意你界说新的关头词用来处置你本人
的特别举动。AOP就使你有了把这些织进到你的使用中,以使使用能够实行的才能。
让我们看看我们利用本人界说的标签@Oneway来使一个办法在背景的别的一个线程实行。
importorg.jboss.aspects.Oneway;
publicclassFoo
{
@OnewaypublicstaticvoidsomeMethod(){...}
publicstaticvoidmain(String[]args)
{
someMethod();//executesinbackground
}
}
当我们的MAIN办法挪用Msomeethod办法的时分,肇端它的实行是和MAIN办法平行的别的一个同步办法中
实行。
要实行这个类,我们必需起首界说本人的标签到JAVA语法中。
packageorg.jboss.aspects;
importjava.lang.annotation.ElementType;
importjava.lang.annotation.Target;
@Target({ElementType.METHOD})
public@interfaceOneway{}
这就够了。@Target能够限定你的标签的使用局限。在这里你的Oneway就只能被用于办法。下面这些
是地道的J2SE5.0内里使用。
上面的是我们的方面,用来实行@Oneway的举动。
packageorg.jboss.aspects;
publicOnewayAspect
{
privatestaticclassTaskimplementsRunnable
{
privateMethodInvocationinvocation;
publicTask(MethodInvocationinvocation)
{
this.invocation=invocation;
}
publicvoidrun()
{
try{invocation.invokeNext();}
catch(Throwableignore){}
}
}
publicObjectoneway(MethodInvocationinvocation)throwsThrowable
{
MethodInvocationcopy=invocation.copy();
Threadt=newThread(newTask(copy));
t.setDaemon(false);
t.start();
returnnull;
}
}
我们的方面就是这么复杂。
最初就是我们要界说切进点
<aop>
<aspectclass="org.jboss.aspects.OnewayAspect"/>
<bindpointcut="execution(void*->@org.jboss.Oneway(..))">
<advicename="oneway"
aspect="org.jboss.aspects.OnewayAspect"/>
</bind>
</aop>
这个界说标明了只要是void的被标注为@Oneway的办法才被我们OnewayAspect实行。如许就能够把你
别的使用加上往,这就是复杂,明晰,便利的JAVA预言。
字段和正文
经由过程AOP我们也能够界说我们本人的字段意义,比方我们能够界说一个ThreadLocal的字段,假如
利用之前的办法,我们就必需利用良多GET()和SET()才干完成。而如今我们能够间接界说一个
@ThreadLocal的范例。
要利用这个新的范例能够像如许:
importorg.jboss.aspects.Threadbased;
publicclassFoo
{
@Threadbasedprivateintcounter;
}
起首我们要界说这个范例
packageorg.jboss.aspects;
importjava.lang.annotation.ElementType;
importjava.lang.annotation.Target;
@Target({ElementType.FIELD})
public@interfaceThreadbased{}
如许就能够了,如今一切被标注为@Threadbased的字段都将被使用到这里来,但这里限定了此范例
只能用户字段。
上面就是完成我们的方面来做详细的事情。
packageorg.jboss.aspects;
importorg.jboss.aop.joinpoint.*;
importjava.lang.reflect.Field;
publicclassThreadbasedAspect
{
privateThreadLocalthreadbased=newThreadLocal();
publicObjectaccess(FieldReadInvocationinvocation)
throwsThrowable
{
//justincasewehaveaprimitive,
//wecantreturnnull
if(threadbased.get()==null)
returninvocation.invokeNext();
returnthreadbased.get();
}
publicObjectaccess(FieldWriteInvocationinvocation)
throwsThrowable
{
threadbased.set(invocation.getValue());
returnnull;
}
}
最初界说切进点
<aop>
<aspectclass="org.jboss.aspects.ThreadbasedAspect"
scope="PER_JOINPOINT"/>
<bindpointcut="field(**->@org.jboss.aspects.Threadbased)">
<advicename="access"
aspect="org.jboss.aspects.ThreadbasedAspect"/>
</bind>
</aop>
我们的但愿是为每一个字段都举行实例化的时分使之成为一个Threadlocal的静态变量,以是在
界说切进点的时分我们利用了PER_JOINPOINT,让JBOSSAOP晓得为我们每一个字段都要实例化
一个新的ThreadLocal,不然JBOSSAOP只会我们实例化一个ThreadbasedAspect,假如如许就
会让一切的字段共享一个Threadlocal,这分明不是我们所希冀的。
和下面一样,在这里我们看到了洁净的,简单集成的办法完成了界说新的JAVA范例。
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听, Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 Java是一种计算机编程语言,拥有跨平台、面向对java 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 是一种为 Internet发展的计算机语言
页:
[1]