??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品蜜芽在线观看,亚洲免费福利视频,综合久久伊人http://www.aygfsteel.com/qixiangnj/category/22116.html<strong>生命不息Q拼搏不止?lt;/strong>zh-cnSun, 30 Sep 2007 16:11:48 GMTSun, 30 Sep 2007 16:11:48 GMT60【翻译】比较NetBeans 6.0 M10和IntelliJ IDEA 7.0 M1http://www.aygfsteel.com/qixiangnj/archive/2007/09/30/149972.htmlThomasThomasSun, 30 Sep 2007 10:44:00 GMThttp://www.aygfsteel.com/qixiangnj/archive/2007/09/30/149972.htmlhttp://www.aygfsteel.com/qixiangnj/comments/149972.htmlhttp://www.aygfsteel.com/qixiangnj/archive/2007/09/30/149972.html#Feedback1http://www.aygfsteel.com/qixiangnj/comments/commentRss/149972.htmlhttp://www.aygfsteel.com/qixiangnj/services/trackbacks/149972.html                  ——IntelliJ IDEA使用手记
                                                                                          原文作? Ryan de Laplante • Filed
                                                                                          本文作? Thomas Qi

【译者按】前不久QNetBeans 6.0 M10一发布Q就引vq泛x。在Java IDE市场Q除了老牌劲旅Eclipse之外Q还有另外一个很受欢q的产品——IntelliJ IDEAQ它的重构特性,备受推崇。最新版本的IntelliJ IDEA 7.0 M1Q已于近日发布?br /> 本文作者是一位忠实的NetBeans用户。他从一个IDEA新手的角度,对NetBeans 6.0 M10和IntelliJ IDEA 7.0 M1作了一个较全面的比较?br />
  最q,我看到很多有关Java IDE IntelliJ IDEA的讨论。我只是听说q一些它好的地方Qƈ且对它与NetBeans 6.0QbetaQ比较v来,I竟如何Q很好奇?br />   我反复听到的一些有关IDEA的观点,主要是关于它的代码编辑器、重构能力以及性能的。众所周知Q在 重构斚wQIDEA领先于其他的IDE工具。所以,关于它的重构能力Q我没有q多xQ取而代之的是,把一些我个h认ؓ在NetBeans里很有用以及有待改进的地方与之比较?br />   我下载的是IntelliJ IDEA 7.0 M1Qdev buildQ和NetBeans 6.0 M10Q用的是JDK 1.6.0Q运行是在Ubuntu Linux 7.04上。这是我W一ơ尝试IDEA?br />   首先使我震惊的是IDEA启动、待用的快速?br />   几天后,当我再次使用的时候,q种印象不再那么深刻Q因为它好像p了更多的旉。或许,W一ơ用IDEA的时候,Java虚拟机已l蝲入了Q而第二次没有载入Q另外,W二ơ启动的时候,IDEAq检查了那些在第一ơ用时创徏的项目文件?br />   IDEA在启动、可用上p?5U,而NetBeans 6.0则花费了30U。因为我每天只启动一ơIDEQ所以蝲入时间对于我来说Q不是一个大问题?br />   接着Q我在IDEA里新Z一个web目?br />   我真的不喜欢那个g包含?5个步骤的目向导Q它问我各种各样的问题,例如Q源文g攑֜哪个目录Q编译文件放在哪个目录?资源文g攑֜哪个目录Q如此等{。我必须阅读大量文字才能做出军_。我更喜ƢNetBeans 6.0的新建项目向对{每个步骤,它不只问我一个问题,q且为我作了大量的默认设|。我喜欢q些默认讄Q例如\径)的一致性?br />   然而,我认为,IDEA很灵z,以适应L的目录结构,q点很强大。当你需要用在别的IDE工具或者文本编辑器里写的代码的时候,q很有用。NetBeansh“新徏Z现有源代码的Java目”的功能,我没有去试Q不知道它有多灵zR?br />   IDEAh“导入Eclipse目”?#8220;导入Jbuilder目”的功能。NetBeans 6的帮助文仉说可以通过更新中心来添?#8220;导入Eclipse目”?#8220;导入Jbuilder目”的功能模块,更新中心已经更名为插件管理器Q但是我没有看到q些插gQ或许它们会在正式版本中出现Q?br />   在IDEA里新建完一个web目Q我双击web.xml文g?br />   接下来看到的Q我震惊,我看C——原始XML文gQ!Q我q看Cejb-jar.xml、sun-web.xml、persistence.xml以及别的部v描述文gQ这些竟焉是原始XML文gQ?br />   我不敢相信,IDEA竟然没有NetBeans、Jdeveloper、WebSphere Studio以及别的IDE工具都有的可视化部v描述文g~辑器!一些开发者或许认为编辑这些部|描q文件很单,其q有代码提示。呵呵,那是因ؓ你用的不是IDEAQ否则你该发问了Q既然有JSF和StrutsD文g的可视化~辑器,那ؓ什么没有别的部|描q文件可视化~辑器呢Q?br />   接下来,我想试的是“臭名昭著?#8221;代码~辑器?br />   打开web.xml文gQ我开始输入一些可用的元素名称Q我对代码提C的瞬时响应能力Q印象深刅R它只有一个短暂的延迟Q代码提C打开Q大概只p了半U,g我的手指q在按住CTRL+SPACE的时候,代码提示已l打开了?br />   接着Q我新徏了一个JavacLӞ用于试验更多代码时的提示情况。我再次被代码提C的快速所震撼Q?br />   我发玎ͼ在IDEA里,无论我按住或者单M么,都会有一个瞬时的响应。非常棒Q我以前认ؓQIDEA用户说Eclipse和NetBeans很慢很慢Q显得过于夸张。但是,如果我习惯了IDEA的这U性能Q对别的IDE工具Q我x也会说同L话。然而,我不认ؓ你可以说NetBeans 6不再那么慢了?br />   NetBeans 6的一个主要的新特性就是完全重写了代码~辑器。新的代码编辑器使用了JDK 6.0的编译程序APIQ用于访问抽象语法树QAbstract Syntax TreeQ。它反应相当快,对代码编辑器里的每个l微之处都给予及时响应?br />   我尝试了NetBeans 6.0的代码提C功能,同样印象深刻。我看到一些IDEA的用户在说NetBeans 6.0q是很慢Q但我自己感觉不出来。与NetBeans 5.5相比QNetBeans 6.0的代码编辑器有了显著的改q?br />   之前我说q,我将不再谈论重构。我食言了?br />   我想谈谈NetBeans 6.0的新的重构引擎——Jackpot?br />   Jackpot是一个语a无关的用于重构的APIQ它除了允许Ҏ?java源文Ӟ例如XML或者JSF文gQ进行重构,q允许对非Java元素q行重构。这使得当前的重构工作更加安全ƈ且易于用。事实上QJackpot是一个综合的、用于生成便于理解和l护的代码的框架。你可以把它作ؓ实现q些特征的一个替代或者基Q重构支持、高U搜索和览、质量审查、复杂编辑Q务的自动化(cM宏命令)Q等{?br />   Jackpotq提供了用于~写重构规则的查询语a。你会发玎ͼNetBeans 6里面的重构规则实际上是Jackpot脚本。我怿有一天,Sun或者别的社Z创徏出匹配IDEA重构能力的Jackpot脚本?br />   现在回到IDEAQ这是我喜欢的一些其他特性:
    当新Z个JSF目Ӟ我可以选择Sun的参考实现或者Apache的MyFaces。我通常选择Sun的参考实玎ͼ但是需要用到某些应用服务器的时候,你必M用MyFaces。我认ؓ一些JSF的组件库q是依赖于MyFaces?br />     内置了对Spring和Hibernate的支持。我敢打赌,NetBeans默认没有提供q些内置支持Q是因ؓSun正在推动Java EE。是有几个关于Spring和Hibernate的插Ӟ但是我不定它们是否好用Q我也从没有看到有h在用或者谈论它们?br />     IDEA支持q样一些应用服务器QTomcat、Geronimo、WebLogic、WebSphere、Jboss、Glassfish/Sun App Server。NetBeans也支持这些,但是使用Geronimo和WebSphere时出C异常?br />     IDEA支持使用目录展开格式来部|web应用。我不认为NetBeans也支持这个?br />     IDEA内置了很多代码分析功能,例如Q代码度量、测试覆盖、相当于checkstyle和findbugsQ等{。NetBeans有一些插件用来实现这L功能Q但是我怀疑在NetBeans 6里它们是否还能正常工作,q且它们不是内置的?br />     不好的地方,要想在IDEA里用性能分析器,你需要再多花500元。NetBeans则内|了一个强大的性能分析器?br />   我看到有开发者抱怨说Q包?0000?0000个文件的目Q在NetBeans里运行很慢。我不知道他们用的是NetBeans 5.5q是6.0Q但是在6.0里,性能问题是被最优先考虑的。M10是NetBeans 6的最后一个里E碑版本。目前功能基本完成了Q从现在?1月䆾最l版发布Q主要的工作是修复bug和改q性能?br />   我承认,我没有对IDEA做一个详的调查Q我只是_略地研I了一下,但是Ҏ兛_的热炚w题都有所涉及?br /> Z完全体验IDEAQ我需要花Ҏ周的旉来学习它的快捷键、重构特性。喜爱IDEA的h会说Q一旦你学会了它Q你不再对别的IDE工具感兴。如果我必须使用IDEA来工作,我想q也不错。我虽没有用Java开发过百万个项目,可是使用NetBeans我ƈ没有觉得受到什么限制。NetBeans有我需要的所有功能ƈ且我不觉得它慢?br />   我想Q我不会马上换用IDEA——至在NetBeans 6.0最l版发布之前?br /> Q原文地址Qhttp://www.ryandelaplante.com/rdelaplante/entry/a_comparison_of_netbeans_6Q?br />

Thomas 2007-09-30 18:44 发表评论
]]>
动态代理在Java中的单应?/title><link>http://www.aygfsteel.com/qixiangnj/archive/2007/02/04/97888.html</link><dc:creator>Thomas</dc:creator><author>Thomas</author><pubDate>Sun, 04 Feb 2007 13:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/qixiangnj/archive/2007/02/04/97888.html</guid><wfw:comment>http://www.aygfsteel.com/qixiangnj/comments/97888.html</wfw:comment><comments>http://www.aygfsteel.com/qixiangnj/archive/2007/02/04/97888.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/qixiangnj/comments/commentRss/97888.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/qixiangnj/services/trackbacks/97888.html</trackback:ping><description><![CDATA[1. com.cleversoft.demos.dynamicproxy.Subject.java:<br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #0000ff;">package</span><span style="color: #000000;"> com.cleversoft.demos.dynamicproxy;<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"><br><img id="Codehighlighter1_69_95_Open_Image" onclick="this.style.display='none'; codehighlighter1_69_95_open_text.style.display=" none="" ;="" codehighlighter1_69_95_closed_image.style.display="'inline';" codehighlighter1_69_95_closed_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_69_95_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_69_95_closed_text.style.display=" none="" ;="" codehighlighter1_69_95_open_image.style.display="'inline';" codehighlighter1_69_95_open_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">interface</span><span style="color: #000000;"> Subject </span><span id="Codehighlighter1_69_95_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.aygfsteel.com/Images/dot.gif"></span><span id="Codehighlighter1_69_95_Open_Text"><span style="color: #000000;">{<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> request();<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span></div> <br>2. com.cleversoft.demos.dynamicproxy.RealSubject.java:<br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #0000ff;">package</span><span style="color: #000000;"> com.cleversoft.demos.dynamicproxy;<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"><br><img id="Codehighlighter1_88_190_Open_Image" onclick="this.style.display='none'; codehighlighter1_88_190_open_text.style.display=" none="" ;="" codehighlighter1_88_190_closed_image.style.display="'inline';" codehighlighter1_88_190_closed_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_88_190_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_88_190_closed_text.style.display=" none="" ;="" codehighlighter1_88_190_open_image.style.display="'inline';" codehighlighter1_88_190_open_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> RealSubject </span><span style="color: #0000ff;">implements</span><span style="color: #000000;"> Subject </span><span id="Codehighlighter1_88_190_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.aygfsteel.com/Images/dot.gif"></span><span id="Codehighlighter1_88_190_Open_Text"><span style="color: #000000;">{<br><img id="Codehighlighter1_112_115_Open_Image" onclick="this.style.display='none'; codehighlighter1_112_115_open_text.style.display=" none="" ;="" codehighlighter1_112_115_closed_image.style.display="'inline';" codehighlighter1_112_115_closed_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_112_115_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_112_115_closed_text.style.display=" none="" ;="" codehighlighter1_112_115_open_image.style.display="'inline';" codehighlighter1_112_115_open_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> RealSubject() </span><span id="Codehighlighter1_112_115_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.aygfsteel.com/Images/dot.gif"></span><span id="Codehighlighter1_112_115_Open_Text"><span style="color: #000000;">{<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">    }</span></span><span style="color: #000000;"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img id="Codehighlighter1_141_188_Open_Image" onclick="this.style.display='none'; codehighlighter1_141_188_open_text.style.display=" none="" ;="" codehighlighter1_141_188_closed_image.style.display="'inline';" codehighlighter1_141_188_closed_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_141_188_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_141_188_closed_text.style.display=" none="" ;="" codehighlighter1_141_188_open_image.style.display="'inline';" codehighlighter1_141_188_open_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> request() </span><span id="Codehighlighter1_141_188_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.aygfsteel.com/Images/dot.gif"></span><span id="Codehighlighter1_141_188_Open_Text"><span style="color: #000000;">{<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">        System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">From real subject.</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">    }</span></span><span style="color: #000000;"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span></div> <br>3. com.cleversoft.demos.dynamicproxy.DynamicSubject.java:<br>动态代理类需要实现InvocationHandler接口Q即需要实现invoke()Ҏ?br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #0000ff;">package</span><span style="color: #000000;"> com.cleversoft.demos.dynamicproxy;<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.lang.reflect.Method;<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.lang.reflect.InvocationHandler;<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"><br><img id="Codehighlighter1_179_532_Open_Image" onclick="this.style.display='none'; codehighlighter1_179_532_open_text.style.display=" none="" ;="" codehighlighter1_179_532_closed_image.style.display="'inline';" codehighlighter1_179_532_closed_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_179_532_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_179_532_closed_text.style.display=" none="" ;="" codehighlighter1_179_532_open_image.style.display="'inline';" codehighlighter1_179_532_open_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> DynamicSubject </span><span style="color: #0000ff;">implements</span><span style="color: #000000;"> InvocationHandler </span><span id="Codehighlighter1_179_532_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.aygfsteel.com/Images/dot.gif"></span><span id="Codehighlighter1_179_532_Open_Text"><span style="color: #000000;">{<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Object _obj;<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img id="Codehighlighter1_230_233_Open_Image" onclick="this.style.display='none'; codehighlighter1_230_233_open_text.style.display=" none="" ;="" codehighlighter1_230_233_closed_image.style.display="'inline';" codehighlighter1_230_233_closed_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_230_233_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_230_233_closed_text.style.display=" none="" ;="" codehighlighter1_230_233_open_image.style.display="'inline';" codehighlighter1_230_233_open_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> DynamicSubject() </span><span id="Codehighlighter1_230_233_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.aygfsteel.com/Images/dot.gif"></span><span id="Codehighlighter1_230_233_Open_Text"><span style="color: #000000;">{<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">    }</span></span><span style="color: #000000;"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img id="Codehighlighter1_271_293_Open_Image" onclick="this.style.display='none'; codehighlighter1_271_293_open_text.style.display=" none="" ;="" codehighlighter1_271_293_closed_image.style.display="'inline';" codehighlighter1_271_293_closed_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_271_293_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_271_293_closed_text.style.display=" none="" ;="" codehighlighter1_271_293_open_image.style.display="'inline';" codehighlighter1_271_293_open_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> DynamicSubject(Object obj) </span><span id="Codehighlighter1_271_293_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.aygfsteel.com/Images/dot.gif"></span><span id="Codehighlighter1_271_293_Open_Text"><span style="color: #000000;">{<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">        </span><span style="color: #0000ff;">this</span><span style="color: #000000;">._obj </span><span style="color: #000000;">=</span><span style="color: #000000;"> obj;<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">    }</span></span><span style="color: #000000;"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Object invoke(Object proxy, Method method, Object[] args)<br><img id="Codehighlighter1_382_529_Open_Image" onclick="this.style.display='none'; codehighlighter1_382_529_open_text.style.display=" none="" ;="" codehighlighter1_382_529_closed_image.style.display="'inline';" codehighlighter1_382_529_closed_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_382_529_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_382_529_closed_text.style.display=" none="" ;="" codehighlighter1_382_529_open_image.style.display="'inline';" codehighlighter1_382_529_open_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">            </span><span style="color: #0000ff;">throws</span><span style="color: #000000;"> Throwable </span><span id="Codehighlighter1_382_529_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.aygfsteel.com/Images/dot.gif"></span><span id="Codehighlighter1_382_529_Open_Text"><span style="color: #000000;">{<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">        System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">before calling </span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> method);<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">        method.invoke(_obj, args);<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">        System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">after calling </span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> method);<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">    }</span></span><span style="color: #000000;"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span></div> <br>4. com.cleversoft.demos.dynamicproxy.Client.java:<br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #0000ff;">package</span><span style="color: #000000;"> com.cleversoft.demos.dynamicproxy;<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.lang.reflect.InvocationHandler;<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.lang.reflect.Proxy;<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top"><br><img id="Codehighlighter1_141_469_Open_Image" onclick="this.style.display='none'; codehighlighter1_141_469_open_text.style.display=" none="" ;="" codehighlighter1_141_469_closed_image.style.display="'inline';" codehighlighter1_141_469_closed_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_141_469_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_141_469_closed_text.style.display=" none="" ;="" codehighlighter1_141_469_open_image.style.display="'inline';" codehighlighter1_141_469_open_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Client </span><span id="Codehighlighter1_141_469_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.aygfsteel.com/Images/dot.gif"></span><span id="Codehighlighter1_141_469_Open_Text"><span style="color: #000000;">{<br><img id="Codehighlighter1_200_467_Open_Image" onclick="this.style.display='none'; codehighlighter1_200_467_open_text.style.display=" none="" ;="" codehighlighter1_200_467_closed_image.style.display="'inline';" codehighlighter1_200_467_closed_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_200_467_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_200_467_closed_text.style.display=" none="" ;="" codehighlighter1_200_467_open_image.style.display="'inline';" codehighlighter1_200_467_open_text.style.display="'inline';" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">    </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) </span><span style="color: #0000ff;">throws</span><span style="color: #000000;"> Throwable </span><span id="Codehighlighter1_200_467_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.aygfsteel.com/Images/dot.gif"></span><span id="Codehighlighter1_200_467_Open_Text"><span style="color: #000000;">{<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">        RealSubject rs </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> RealSubject(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 指定被代理类</span><span style="color: #008000;"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="color: #000000;">        InvocationHandler ih </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> DynamicSubject(rs); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 初始化代理类</span><span style="color: #008000;"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="color: #000000;">        Class cls </span><span style="color: #000000;">=</span><span style="color: #000000;"> rs.getClass();<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">        Subject subject </span><span style="color: #000000;">=</span><span style="color: #000000;"> (Subject) Proxy.newProxyInstance(<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">                cls.getClassLoader(), cls.getInterfaces(), ih);<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top">        subject.request();<br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">    }</span></span><span style="color: #000000;"><br><img src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span></div> <br><br>参考资料:<br>1. 《Java与模式?br>2. <a >http://dev.csdn.net/Develop/article/28/61250.shtm</a> <img src ="http://www.aygfsteel.com/qixiangnj/aggbug/97888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/qixiangnj/" target="_blank">Thomas</a> 2007-02-04 21:43 <a href="http://www.aygfsteel.com/qixiangnj/archive/2007/02/04/97888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>当前目开发中使用的一个Ant脚本http://www.aygfsteel.com/qixiangnj/archive/2006/12/21/89311.htmlThomasThomasThu, 21 Dec 2006 08:32:00 GMThttp://www.aygfsteel.com/qixiangnj/archive/2006/12/21/89311.htmlhttp://www.aygfsteel.com/qixiangnj/comments/89311.htmlhttp://www.aygfsteel.com/qixiangnj/archive/2006/12/21/89311.html#Feedback0http://www.aygfsteel.com/qixiangnj/comments/commentRss/89311.htmlhttp://www.aygfsteel.com/qixiangnj/services/trackbacks/89311.html
<project name="cTrace" default="runie" basedir=".">
    
<!-- Name of project and version -->
    
<property name="proj.name" value="cTrace" />
    
<property name="proj.version" value="1.0" />

    
<!-- Global properties for this build -->
    
<property name="src.java.dir" value="src" />
    
<property name="lib.dir" value="lib" />
    
<property name="build.dir" value="bin" />
    
<property name="dist.dir" value="dist" />
    
<!-- ================================ -->
    
<property name="main.class" value="com" />
    
<property name="dest.dir" value="C:\Inetpub\wwwroot\aes\cTrace\reports" />
    
<property name="run.class" value="com.aesclever.ctrace.packetview.PacketViewApplet" />
    
<property name="ie.dir" value="C:\Program Files\Internet Explorer" />
    
<!-- ================================ -->

    
<!-- Classpath declaration -->
    
<path id="project.classpath">
        
<fileset dir="${lib.dir}">
            
<include name="**/*.jar" />
            
<include name="**/*.zip" />
        
</fileset>
    
</path>

    
<!-- Useful shortcuts -->
    
<patternset id="meta.files">
        
<include name="**/*.xml" />
        
<include name="**/*.properties" />
    
</patternset>

    
<!-- Clean up -->
    
<target name="clean">
        
<delete dir="${build.dir}" />
        
<mkdir dir="${build.dir}" />
        
<delete dir="${dist.dir}" />
        
<mkdir dir="${dist.dir}" />
    
</target>

    
<!-- Compile Java source -->
    
<target name="compile" depends="clean">
        
<mkdir dir="${build.dir}" />
        
<javac srcdir="${src.java.dir}" destdir="${build.dir}" nowarn="on">
            
<classpath refid="project.classpath" />
        
</javac>
    
</target>

    
<!-- Copy metadata to build classpath -->
    
<target name="copymetafiles">
        
<copy todir="${build.dir}">
            
<fileset dir="${src.java.dir}">
                
<patternset refid="meta.files" />
            
</fileset>
        
</copy>
    
</target>

    
<!-- Create Jar file -->
    
<target name="dist" depends="compile, copymetafiles">
        
<jar destfile="${dist.dir}/${proj.name}.jar" basedir="${build.dir}">
            
<manifest>
                
<attribute name="Built-By" value="${user.name}" />
                
<attribute name="Main-Class" value="${main.class}" />
            
</manifest>
        
</jar>
        
<jar destfile="${dist.dir}/${proj.name}-src.jar" basedir="${src.java.dir}" />
    
</target>

    
<!-- Copy Jar file to destdir -->
    
<target name="copy" depends="dist">
        
<copy todir="${dest.dir}">
            
<fileset dir="${dist.dir}">
            
</fileset>
        
</copy>
    
</target>

    
<!-- Run IE -->
    
<target name="runie" depends="copy">
        
<exec executable="cmd.exe" dir="${ie.dir}">
            
<arg line="/c iexplore" />
        
</exec>
    
</target>

    
<!-- Run cTrace -->
    
<target name="run" depends="compile, copymetafiles" description="Build and run cTrace">
        
<java fork="true" classname="${run.class}" classpathref="project.classpath">
            
<classpath path="${build.dir}" />
        
</java>
    
</target>
</project>


Thomas 2006-12-21 16:32 发表评论
]]>
վ֩ģ壺 ͨ| | | | | | Զ| | ɽ| ʵ| ͨ| ϲ| ϳ| ƽ| ˮ| | | | Ѱ| ɽ| | Ԫ| ƽ| | ˮ| ¡| | | | Ͻ| | | ̨ɽ| | | ƽ| | | | | |